aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-02-24 13:29:15 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2016-02-24 13:32:57 +0200
commit9912557fa9b4c8596c6e9f69857e9a616b4f4f33 (patch)
tree348bcb58c3af3c5138abe6e3bdfda5232fc1e54c
parent4049c8b3ba918949106ef8e96ac5e767f4b9406b (diff)
downloadpies-9912557fa9b4c8596c6e9f69857e9a616b4f4f33.tar.gz
pies-9912557fa9b4c8596c6e9f69857e9a616b4f4f33.tar.bz2
Changes in prog structure
* src/prog.h (prog): Remove .facility. Use facility from the component. (active,wait,stop): Move from union into the main struct. All uses changed.
-rw-r--r--src/comp.c2
-rw-r--r--src/ctl.c12
-rw-r--r--src/inetd-bi.c2
-rw-r--r--src/prog.h10
-rw-r--r--src/progman.c51
-rw-r--r--src/sysvinit.c18
6 files changed, 46 insertions, 49 deletions
diff --git a/src/comp.c b/src/comp.c
index 7babae7..41b77ce 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -369,7 +369,7 @@ static int
369mark_prog (struct prog *prog, void *data) 369mark_prog (struct prog *prog, void *data)
370{ 370{
371 if (prog_is_leftover (prog)) 371 if (prog_is_leftover (prog))
372 prog->v.p.stop = 1; 372 prog->stop = 1;
373 return 0; 373 return 0;
374} 374}
375 375
diff --git a/src/ctl.c b/src/ctl.c
index 21abf59..a7db410 100644
--- a/src/ctl.c
+++ b/src/ctl.c
@@ -1834,15 +1834,15 @@ selector (struct prog *prog, void *data)
1834static int 1834static int
1835prog_active (struct prog *prog) 1835prog_active (struct prog *prog)
1836{ 1836{
1837 if (prog->v.p.active) 1837 if (prog->active)
1838 { 1838 {
1839 if (ISCF_TCPMUX (prog->v.p.comp->flags)) 1839 if (ISCF_TCPMUX (prog->v.p.comp->flags))
1840 { 1840 {
1841 prog = progman_locate (prog->v.p.comp->tcpmux); 1841 prog = progman_locate (prog->v.p.comp->tcpmux);
1842 return prog && prog->v.p.active; 1842 return prog && prog->active;
1843 } 1843 }
1844 } 1844 }
1845 return prog->v.p.active; 1845 return prog->active;
1846} 1846}
1847 1847
1848static struct json_value * 1848static struct json_value *
@@ -1912,14 +1912,14 @@ fun_stop (struct json_value *result, struct prog *prog)
1912{ 1912{
1913 if (IS_COMPONENT (prog)) 1913 if (IS_COMPONENT (prog))
1914 { 1914 {
1915 if (!prog->v.p.active) 1915 if (!prog->active)
1916 { 1916 {
1917 json_object_set_string (result, "status", "ER"); 1917 json_object_set_string (result, "status", "ER");
1918 json_object_set_string (result, "error_message", "already stopped"); 1918 json_object_set_string (result, "error_message", "already stopped");
1919 return 1; 1919 return 1;
1920 } 1920 }
1921 1921
1922 prog->v.p.active = 0; 1922 prog->active = 0;
1923 progman_stop_component (&prog); 1923 progman_stop_component (&prog);
1924 json_object_set_string (result, "status", "OK"); 1924 json_object_set_string (result, "status", "OK");
1925 } 1925 }
@@ -1972,7 +1972,7 @@ fun_start (struct json_value *result, struct prog *prog)
1972 json_object_set_string (result, "error_message", "already running"); 1972 json_object_set_string (result, "error_message", "already running");
1973 return 1; 1973 return 1;
1974 } 1974 }
1975 prog->v.p.active = 1; 1975 prog->active = 1;
1976 return 0; 1976 return 0;
1977} 1977}
1978 1978
diff --git a/src/inetd-bi.c b/src/inetd-bi.c
index 2032123..61b6f55 100644
--- a/src/inetd-bi.c
+++ b/src/inetd-bi.c
@@ -305,7 +305,7 @@ tcpmux_help (struct component *comp, void *data)
305{ 305{
306 int *pfd = data; 306 int *pfd = data;
307 307
308 if (ISCF_TCPMUX (comp->flags) && comp->prog && comp->prog->v.p.active) 308 if (ISCF_TCPMUX (comp->flags) && comp->prog && comp->prog->active)
309 { 309 {
310 fd_report (*pfd, comp->service); 310 fd_report (*pfd, comp->service);
311 fd_report (*pfd, "\r\n"); 311 fd_report (*pfd, "\r\n");
diff --git a/src/prog.h b/src/prog.h
index 3358885..be072e1 100644
--- a/src/prog.h
+++ b/src/prog.h
@@ -45,15 +45,14 @@ struct prog
45 struct prog *next, *prev; 45 struct prog *next, *prev;
46 enum prog_type type; 46 enum prog_type type;
47 pid_t pid; /* PID */ 47 pid_t pid; /* PID */
48 int facility; 48 int active :1; /* The prog is active */
49 int wait :1; /* Wait for this prog to terminate */
50 int stop :1; /* Stop this prog */
49 union 51 union
50 { 52 {
51 struct 53 struct
52 { 54 {
53 struct component *comp; 55 struct component *comp;
54 int active :1; /* The prog is active */
55 int wait :1; /* Wait for this prog to terminate */
56 int stop :1; /* Stop this prog */
57 int socket; 56 int socket;
58 struct prog *redir[2]; /* Pointers to redirectors */ 57 struct prog *redir[2]; /* Pointers to redirectors */
59 time_t timestamp; /* Time of last startup */ 58 time_t timestamp; /* Time of last startup */
@@ -84,8 +83,7 @@ struct prog
84}; 83};
85 84
86#define IS_COMPONENT(p) ((p)->type == TYPE_COMPONENT) 85#define IS_COMPONENT(p) ((p)->type == TYPE_COMPONENT)
87#define IS_ACTIVE_COMPONENT(prog) \ 86#define IS_ACTIVE_COMPONENT(prog) (IS_COMPONENT(prog) && (prog)->active)
88 (IS_COMPONENT(prog) && (prog)->v.p.active)
89 87
90struct prog *progman_locate (const char *name); 88struct prog *progman_locate (const char *name);
91int progman_foreach (int (*filter) (struct prog *, void *data), void *data); 89int progman_foreach (int (*filter) (struct prog *, void *data), void *data);
diff --git a/src/progman.c b/src/progman.c
index 852a71c..9f5c466 100644
--- a/src/progman.c
+++ b/src/progman.c
@@ -74,7 +74,7 @@ progman_lookup_tcpmux (const char *service, const char *master)
74 for (prog = proghead; prog; prog = prog->next) 74 for (prog = proghead; prog; prog = prog->next)
75 if (IS_COMPONENT (prog) 75 if (IS_COMPONENT (prog)
76 && ISCF_TCPMUX (prog->v.p.comp->flags) 76 && ISCF_TCPMUX (prog->v.p.comp->flags)
77 && prog->v.p.active 77 && prog->active
78 && prog->v.p.comp->service 78 && prog->v.p.comp->service
79 && strcasecmp (prog->v.p.comp->service, service) == 0 79 && strcasecmp (prog->v.p.comp->service, service) == 0
80 && prog->v.p.comp->tcpmux 80 && prog->v.p.comp->tcpmux
@@ -279,7 +279,6 @@ register_prog0 (struct component *comp)
279 newp = grecs_zalloc (sizeof (*newp)); 279 newp = grecs_zalloc (sizeof (*newp));
280 newp->type = TYPE_COMPONENT; 280 newp->type = TYPE_COMPONENT;
281 newp->pid = 0; 281 newp->pid = 0;
282 newp->facility = comp->facility;
283 newp->v.p.comp = comp; 282 newp->v.p.comp = comp;
284 newp->v.p.socket = -1; 283 newp->v.p.socket = -1;
285 284
@@ -289,9 +288,9 @@ register_prog0 (struct component *comp)
289 newp->v.p.status = status_stopped; 288 newp->v.p.status = status_stopped;
290 289
291 if ((comp->flags & CF_DISABLED) || comp->mode == pies_comp_ondemand) 290 if ((comp->flags & CF_DISABLED) || comp->mode == pies_comp_ondemand)
292 newp->v.p.active = 0; 291 newp->active = 0;
293 else 292 else
294 newp->v.p.active = 1; 293 newp->active = 1;
295 294
296 if (comp->mode != pies_comp_exec) 295 if (comp->mode != pies_comp_exec)
297 comp->redir[RETR_OUT].type = redir_null; 296 comp->redir[RETR_OUT].type = redir_null;
@@ -325,7 +324,7 @@ progman_waiting_p (void)
325 324
326 for (prog = proghead; prog; prog = prog->next) 325 for (prog = proghead; prog; prog = prog->next)
327 { 326 {
328 if (IS_COMPONENT (prog) && prog->v.p.wait && prog->pid > 0) 327 if (IS_COMPONENT (prog) && prog->wait && prog->pid > 0)
329 { 328 {
330 debug (3, ("%s: waiting for %s (%lu)", 329 debug (3, ("%s: waiting for %s (%lu)",
331 __FUNCTION__, prog_tag (prog), 330 __FUNCTION__, prog_tag (prog),
@@ -440,7 +439,7 @@ open_redirector (struct prog *master, int stream)
440 fp = fdopen (p[0], "r"); 439 fp = fdopen (p[0], "r");
441 if (fp == NULL) 440 if (fp == NULL)
442 _exit (1); 441 _exit (1);
443 openlog (prog_tag (master), LOG_PID, master->facility); 442 openlog (prog_tag (master), LOG_PID, master->v.p.comp->facility);
444 prio = master->v.p.comp->redir[stream].v.prio; 443 prio = master->v.p.comp->redir[stream].v.prio;
445 while (getline (&buf, &size, fp) > 0) 444 while (getline (&buf, &size, fp) > 0)
446 syslog (prio, "%s", buf); 445 syslog (prio, "%s", buf);
@@ -956,7 +955,7 @@ prog_open_socket (struct prog *prog)
956 if (prog->v.p.socket == -1) 955 if (prog->v.p.socket == -1)
957 { 956 {
958 prog->v.p.status = status_stopped; 957 prog->v.p.status = status_stopped;
959 prog->v.p.active = 0; 958 prog->active = 0;
960 return 1; 959 return 1;
961 } 960 }
962 if (listen (prog->v.p.socket, 8)) 961 if (listen (prog->v.p.socket, 8))
@@ -965,7 +964,7 @@ prog_open_socket (struct prog *prog)
965 close (prog->v.p.socket); 964 close (prog->v.p.socket);
966 prog->v.p.socket = -1; 965 prog->v.p.socket = -1;
967 prog->v.p.status = status_stopped; 966 prog->v.p.status = status_stopped;
968 prog->v.p.active = 0; 967 prog->active = 0;
969 return 1; 968 return 1;
970 } 969 }
971 return 0; 970 return 0;
@@ -1057,12 +1056,12 @@ prog_start (struct prog *prog)
1057 { 1056 {
1058 if (!init_process) 1057 if (!init_process)
1059 { 1058 {
1060 if (prog->v.p.active) 1059 if (prog->active)
1061 { 1060 {
1062 logmsg (LOG_NOTICE, "disabling sysvinit component %s", 1061 logmsg (LOG_NOTICE, "disabling sysvinit component %s",
1063 prog_tag (prog)); 1062 prog_tag (prog));
1064 prog->v.p.status = status_stopped; 1063 prog->v.p.status = status_stopped;
1065 prog->v.p.active = 0; 1064 prog->active = 0;
1066 } 1065 }
1067 return; 1066 return;
1068 } 1067 }
@@ -1523,7 +1522,7 @@ progman_start (void)
1523 break; 1522 break;
1524 1523
1525 case status_listener: 1524 case status_listener:
1526 if (!prog->v.p.active) 1525 if (!prog->active)
1527 disable_socket (prog->v.p.socket); 1526 disable_socket (prog->v.p.socket);
1528 else 1527 else
1529 enable_socket (prog->v.p.socket); 1528 enable_socket (prog->v.p.socket);
@@ -1559,9 +1558,9 @@ progman_wake_sleeping (int onalrm)
1559 1558
1560 for (prog = proghead; prog; prog = prog->next)