Poweroff on SIGUSR1 - sinit - suckless init
 (HTM) git clone git://git.suckless.org/sinit
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 76b2240e1587129d4baefaffb738332440e20290
 (DIR) parent b8cb53193c0d235cec99d70bb63838f27c3c5fda
 (HTM) Author: sin <sin@2f30.org>
       Date:   Fri,  7 Feb 2014 16:18:02 +0000
       
       Poweroff on SIGUSR1
       
       Diffstat:
         M sinit.c                             |      12 ++++++++++--
       
       1 file changed, 10 insertions(+), 2 deletions(-)
       ---
 (DIR) diff --git a/sinit.c b/sinit.c
       @@ -25,13 +25,15 @@ typedef struct {
                void (*func)(void);
        } Sigmap;
        
       +static void sigpoweroff(void);
        static void sigreap(void);
        static void sigreboot(void);
        static void spawn(const Arg *);
        
        static Sigmap dispatchsig[] = {
       -        { SIGCHLD, sigreap   },
       -        { SIGINT,  sigreboot },
       +        { SIGUSR1, sigpoweroff },
       +        { SIGCHLD, sigreap     },
       +        { SIGINT,  sigreboot   },
        };
        
        static int sigfd = -1;
       @@ -85,6 +87,12 @@ main(void)
        }
        
        static void
       +sigpoweroff(void)
       +{
       +        spawn(&(Arg){ .v = rcpoweroffcmd });
       +}
       +
       +static void
        sigreap(void)
        {
                while (waitpid(-1, NULL, WNOHANG) > 0)