aboutsummaryrefslogtreecommitdiff
path: root/src/progman.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2016-01-30 14:52:52 +0200
committerSergey Poznyakoff <gray@gnu.org>2016-01-30 14:52:52 +0200
commit7f20aa4f7e26d8f740b55bef98f0c3c78eca0e79 (patch)
treec32e862b002c167a36f4d0f0f1fb9a2f6d626d68 /src/progman.c
parente9379677a3c82753f0d29ef1c3490eec345db3c0 (diff)
downloadpies-7f20aa4f7e26d8f740b55bef98f0c3c78eca0e79.tar.gz
pies-7f20aa4f7e26d8f740b55bef98f0c3c78eca0e79.tar.bz2
Fix configuration reload and telinit q
* src/comp.c (component_link): Always link after the REF. component. If REF is NULL, link at list head. (component_append): New function. (component_create): Use component_append. (component_free): Fix double-free. * src/pies.c (pies_reload): Call sysvinit_runlevel_setup. * src/progman.c (progman_stop_component): Remove inactive components. * src/sysvinit.c (sysvinit_fifo_handler): Schedule ACTION_RELOAD. on receiving INIT_CMD_RUNLVL. (sysvinit_sigtrans): Don't handle SIGHUP.
Diffstat (limited to 'src/progman.c')
-rw-r--r--src/progman.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/progman.c b/src/progman.c
index 4f63d9a..3bbd8b3 100644
--- a/src/progman.c
+++ b/src/progman.c
@@ -2362,7 +2362,9 @@ progman_stop_component (struct prog *prog)
break;
case status_disabled:
- if (!(prog->v.p.comp->flags & CF_DISABLED))
+ if (!component_is_active (prog->v.p.comp))
+ destroy_prog (&prog);
+ else if (!(prog->v.p.comp->flags & CF_DISABLED))
{
logmsg (LOG_INFO, _("enabling component `%s'"), prog_tag (prog));
prog->v.p.status = status_enabled;
@@ -2370,14 +2372,22 @@ progman_stop_component (struct prog *prog)
break;
case status_sleeping:
- logmsg (LOG_INFO, _("waking up component `%s'"), prog_tag (prog));
- prog->v.p.failcount = 0;
+ if (!component_is_active (prog->v.p.comp))
+ destroy_prog (&prog);
+ else
+ {
+ logmsg (LOG_INFO, _("waking up component `%s'"), prog_tag (prog));
+ prog->v.p.failcount = 0;
+ }
break;
default:
- logmsg (LOG_INFO,
- _("stopping component `%s': component not started"),
- prog_tag (prog));
+ if (!component_is_active (prog->v.p.comp))
+ destroy_prog (&prog);
+ else
+ logmsg (LOG_INFO,
+ _("stopping component `%s': component not started"),
+ prog_tag (prog));
}
}
}

Return to:

Send suggestions and report system problems to the System administrator.