diff options
-rw-r--r-- | sinit.c | 20 |
1 files changed, 9 insertions, 11 deletions
@@ -10,17 +10,15 @@ #include <unistd.h> #include "util.h" -typedef struct { - int sig; - void (*func)(void); -} Sigmap; - static void sigpoweroff(void); static void sigreap(void); static void sigreboot(void); static void spawn(char *const []); -static Sigmap dispatchsig[] = { +static struct { + int sig; + void (*handler)(void); +} sigmap[] = { { SIGUSR1, sigpoweroff }, { SIGCHLD, sigreap }, { SIGINT, sigreboot }, @@ -42,8 +40,8 @@ main(void) setsid(); sigemptyset(&set); - for (i = 0; i < LEN(dispatchsig); i++) - sigaddset(&set, dispatchsig[i].sig); + for (i = 0; i < LEN(sigmap); i++) + sigaddset(&set, sigmap[i].sig); sigprocmask(SIG_BLOCK, &set, NULL); fd = signalfd(-1, &set, SFD_CLOEXEC); @@ -58,9 +56,9 @@ main(void) eprintf("sinit: read:"); if (n != sizeof(si)) continue; - for (i = 0; i < LEN(dispatchsig); i++) - if (dispatchsig[i].sig == si.ssi_signo) - dispatchsig[i].func(); + for (i = 0; i < LEN(sigmap); i++) + if (sigmap[i].sig == si.ssi_signo) + sigmap[i].handler(); } /* not reachable */ |