Annotation of embedaddon/hping2/signal.c, revision 1.1.1.1

1.1       misho       1: /* protable signal() like */
                      2: 
                      3: #include <signal.h>
                      4: 
                      5: /* Portable signal() from R.Stevens,
                      6:  * modified to reset the handler */
                      7: void (*Signal(int signo, void (*func)(int)))(int)
                      8: {
                      9:        struct sigaction act, oact;
                     10: 
                     11:        act.sa_handler = func;
                     12:        sigemptyset(&act.sa_mask);
                     13:        act.sa_flags = 0; /* So if set SA_RESETHAND is cleared */
                     14:        if (signo == SIGALRM)
                     15:        {
                     16: #ifdef SA_INTERRUPT
                     17:                act.sa_flags |= SA_INTERRUPT;   /* SunOS 4.x */
                     18: #endif
                     19:        }
                     20:        else
                     21:        {
                     22: #ifdef SA_RESTART
                     23:                act.sa_flags |= SA_RESTART;     /* SVR4, 4.4BSD, Linux */
                     24: #endif
                     25:        }
                     26:        if (sigaction(signo, &act, &oact) == -1)
                     27:                return SIG_ERR;
                     28:        return (oact.sa_handler);
                     29: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>