diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-02-24 13:29:15 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2016-02-24 13:32:57 +0200 |
commit | 9912557fa9b4c8596c6e9f69857e9a616b4f4f33 (patch) | |
tree | 348bcb58c3af3c5138abe6e3bdfda5232fc1e54c | |
parent | 4049c8b3ba918949106ef8e96ac5e767f4b9406b (diff) | |
download | pies-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.c | 2 | ||||
-rw-r--r-- | src/ctl.c | 12 | ||||
-rw-r--r-- | src/inetd-bi.c | 2 | ||||
-rw-r--r-- | src/prog.h | 10 | ||||
-rw-r--r-- | src/progman.c | 51 | ||||
-rw-r--r-- | src/sysvinit.c | 18 |
6 files changed, 46 insertions, 49 deletions
@@ -369,7 +369,7 @@ static int | |||
369 | mark_prog (struct prog *prog, void *data) | 369 | mark_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 | ||
@@ -1834,15 +1834,15 @@ selector (struct prog *prog, void *data) | |||
1834 | static int | 1834 | static int |
1835 | prog_active (struct prog *prog) | 1835 | prog_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 | ||
1848 | static struct json_value * | 1848 | static 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"); |
@@ -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 | ||
90 | struct prog *progman_locate (const char *name); | 88 | struct prog *progman_locate (const char *name); |
91 | int progman_foreach (int (*filter) (struct prog *, void *data), void *data); | 89 | int 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) |