From 6f9f2fd7a6952b544dccbf0bdc7f9c312f602afe Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Sun, 31 Jan 2016 13:43:18 +0200 Subject: Fix runlevel switching; handle powerfail commands. * src/ctl.c (prog_serialize): List runlevels. * src/pies.c (main): Set got_alarm after reloading configuration. Handle ACTION_POWER. * src/pies.h (ACTION_POWER): New constant. (progman_running_p): Rename to progman_waiting_p. All uses changed. (sysvinit_power): New proto. (POWER_STAT_FILE): New define. (POWER_STAT_FAIL,POWER_STAT_LOW,POWER_STAT_OK): New constants. * src/prog.h (prog) : Remove. (prog) : New member. * src/progman.c (prog_lookup_by_idx): Remove. (progman_waiting_p): Return 1 only if there is at least one prog with v.p.wait set. (prog_start): Initialize v.p.wait for sysvinit components. (progman_start): Don't do anything if waiting for components from the previous runlevel. (progman_wake_sleeping): Likewise. (progman_cleanup): Assume expect_term if waiting for components from the previous runlevel. Clear v.p.wait on exited progs. * src/sysvinit.c (sysvinit_fifo_handler): Don't call progman_stop when handling runlevel changes. Handle INIT_CMD_POWERFAIL, INIT_CMD_POWERFAILNOW, and INIT_CMD_POWEROK. (sysvinit_sigtrans): Handle SIGPWR. (is_comp_wait): Rewrite. (power_stat_file): New variable. (sysvinit_power): New function. --- src/prog.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/prog.h') diff --git a/src/prog.h b/src/prog.h index a29de04..fe42d3a 100644 --- a/src/prog.h +++ b/src/prog.h @@ -52,7 +52,7 @@ struct prog struct { struct component *comp; - size_t idx; /* Numeric identifier */ + int wait; int socket; struct prog *redir[2]; /* Pointers to redirectors */ time_t timestamp; /* Time of last startup */ -- cgit v1.2.1