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>