diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2016-01-30 14:52:52 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2016-01-30 14:52:52 +0200 |
commit | 7f20aa4f7e26d8f740b55bef98f0c3c78eca0e79 (patch) | |
tree | c32e862b002c167a36f4d0f0f1fb9a2f6d626d68 /src/progman.c | |
parent | e9379677a3c82753f0d29ef1c3490eec345db3c0 (diff) | |
download | pies-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.c | 22 |
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)); } } } |