No need to typedef - sinit - suckless init
 (HTM) git clone git://git.suckless.org/sinit
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 9246a13738fc21d08aab20382b67c5dadb4ff8ae
 (DIR) parent 36cbf757036bc20dd8889ca7c19a025f8ded077e
 (HTM) Author: sin <sin@2f30.org>
       Date:   Mon, 10 Feb 2014 10:03:25 +0000
       
       No need to typedef
       
       Diffstat:
         M sinit.c                             |      20 +++++++++-----------
       
       1 file changed, 9 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/sinit.c b/sinit.c
       @@ -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 */