X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=signal.c;h=07dda9a4c890e9106a56ec089c6f8bfcdefb22a0;hp=ebaf7bcf69f0ea8886af3d736613a49f1310e8f8;hb=fa5ce1c2b4fe3fa6bb4bbc6697961655b952d8d4;hpb=a2953547e345eb6dd4e48474ca1e48082d3d564f diff --git a/signal.c b/signal.c index ebaf7bc..07dda9a 100644 --- a/signal.c +++ b/signal.c @@ -19,8 +19,6 @@ #include "procd.h" -static int preinit; - static void do_reboot(void) { LOG("reboot\n"); @@ -37,10 +35,9 @@ static void signal_shutdown(int signal, siginfo_t *siginfo, void *data) int event = 0; char *msg = NULL; - if (preinit) - do_reboot(); - +#ifndef DISABLE_INIT switch(signal) { + case SIGINT: case SIGTERM: event = RB_AUTOBOOT; msg = "reboot"; @@ -51,6 +48,7 @@ static void signal_shutdown(int signal, siginfo_t *siginfo, void *data) msg = "poweroff"; break; } +#endif DEBUG(1, "Triggering %s\n", msg); if (event) @@ -89,6 +87,7 @@ void procd_signal(void) if (getpid() != 1) return; sigaction(SIGTERM, &sa_shutdown, NULL); + sigaction(SIGINT, &sa_shutdown, NULL); sigaction(SIGUSR1, &sa_shutdown, NULL); sigaction(SIGUSR2, &sa_shutdown, NULL); sigaction(SIGSEGV, &sa_crash, NULL); @@ -96,12 +95,7 @@ void procd_signal(void) sigaction(SIGHUP, &sa_dummy, NULL); sigaction(SIGKILL, &sa_dummy, NULL); sigaction(SIGSTOP, &sa_dummy, NULL); -} - -void procd_signal_preinit(void) -{ - preinit = 1; - sigaction(SIGTERM, &sa_shutdown, NULL); - sigaction(SIGUSR1, &sa_shutdown, NULL); - sigaction(SIGUSR2, &sa_shutdown, NULL); +#ifndef DISABLE_INIT + reboot(RB_DISABLE_CAD); +#endif }