Use sigwait() instead of signalfd() - sinit - suckless init
 (HTM) git clone git://git.suckless.org/sinit
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 7fd10119bbb606d8e186e4e43bae3d1ab17e4184
 (DIR) parent 514b100944d0b61d8e8a295ab3cd534be4cfd344
 (HTM) Author: sin <sin@2f30.org>
       Date:   Mon, 10 Feb 2014 20:04:58 +0000
       
       Use sigwait() instead of signalfd()
       
       Diffstat:
         M sinit.c                             |      16 +++-------------
       
       1 file changed, 3 insertions(+), 13 deletions(-)
       ---
 (DIR) diff --git a/sinit.c b/sinit.c
       @@ -31,10 +31,8 @@ static sigset_t set;
        int
        main(void)
        {
       -        struct signalfd_siginfo si;
       -        int fd;
       +        int sig;
                int i;
       -        ssize_t n;
        
                if (getpid() != 1)
                        return EXIT_FAILURE;
       @@ -45,20 +43,12 @@ main(void)
                        sigaddset(&set, sigmap[i].sig);
                sigprocmask(SIG_BLOCK, &set, NULL);
        
       -        fd = signalfd(-1, &set, SFD_CLOEXEC);
       -        if (fd < 0)
       -                eprintf("sinit: signalfd:");
       -
                spawn(rcinitcmd);
        
                while (1) {
       -                n = read(fd, &si, sizeof(si));
       -                if (n < 0)
       -                        eprintf("sinit: read:");
       -                if (n != sizeof(si))
       -                        continue;
       +                sigwait(&set, &sig);
                        for (i = 0; i < LEN(sigmap); i++)
       -                        if (sigmap[i].sig == si.ssi_signo)
       +                        if (sigmap[i].sig == sig)
                                        sigmap[i].handler();
                }