diff options
Diffstat (limited to 'src/pies.c')
-rw-r--r-- | src/pies.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -1769,15 +1769,22 @@ int request_restart_components (size_t cc, char **cv) { char **argv; - size_t i; + size_t i, j; - argv = grecs_calloc (cc + 4, sizeof (*argv)); + argv = grecs_calloc (5 + 3 * cc - 1, sizeof (*argv)); argv[0] = "piesctl"; argv[1] = "--url"; argv[2] = (char*) pies_control_url (); + argv[3] = "restart"; + j = 4; for (i = 0; i < cc; i++) - argv[3 + i] = cv[i]; - argv[3 + i] = NULL; + { + if (i > 0) + argv[j++] = "or"; + argv[j++] = "component"; + argv[j++] = cv[i]; + } + argv[j] = NULL; execvp (argv[0], argv); logmsg (LOG_ERR, "can't run piesctl: %s", strerror (errno)); return EX_OSFILE; @@ -2279,6 +2286,8 @@ main (int argc, char **argv) } if (action == ACTION_CONT) { + if (children_op & PIES_CHLD_RESCHEDULE_ALARM) + progman_recompute_alarm (); if (children_op & PIES_CHLD_GC) progman_gc (); if (children_op & PIES_CHLD_CLEANUP) |