File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / hping2 / signal.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:11:37 2012 UTC (12 years, 3 months ago) by misho
Branches: hping2, MAIN
CVS tags: v2_0_0rc3p7, v2_0_0rc3p5, v2_0_0rc3p4, v2_0_0rc3p0, v2_0_0rc3, HEAD
hping2

    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>