summaryrefslogtreecommitdiffabout
path: root/src/comp.c
Side-by-side diff
Diffstat (limited to 'src/comp.c') (more/less context) (show whitespace changes)
-rw-r--r--src/comp.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/comp.c b/src/comp.c
index 5613e28..6a0e4ba 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -351,21 +351,27 @@ component_config_rollback (void)
cur = prev_index ();
}
+/* Return true if PROG is a leftover from previous configuration */
static int
-cb_terminate_prog (struct prog *prog, void *data)
-{
- if (IS_COMPONENT (prog) && !component_is_active (prog->v.p.comp))
+prog_is_leftover (struct prog *prog)
{
- progman_stop_component (prog);
- prog->v.p.comp->flags |= CF_DISABLED;
+ return IS_COMPONENT (prog) && !component_is_active (prog->v.p.comp);
}
+
+/* If PROG is a leftover, gracefully stop it and mark as disabled */
+static int
+cb_terminate_prog (struct prog *prog, void *data)
+{
+ if (prog_is_leftover (prog))
+ progman_stop_component (&prog);
return 0;
}
+/* If PROG is a leftover, slay it with SIGKILL */
static int
cb_kill_prog (struct prog *prog, void *data)
{
- if (!(IS_COMPONENT (prog) && component_is_active (prog->v.p.comp)))
+ if (prog_is_leftover (prog))
prog_stop (prog, SIGKILL);
return 0;
}

Return to:

Send suggestions and report system problems to the System administrator.