Annotation of embedaddon/php/ext/pcntl/php_signal.c, revision 1.1
1.1 ! misho 1: /*
! 2: +----------------------------------------------------------------------+
! 3: | PHP Version 5 |
! 4: +----------------------------------------------------------------------+
! 5: | Copyright (c) 1997-2012 The PHP Group |
! 6: +----------------------------------------------------------------------+
! 7: | This source file is subject to version 3.01 of the PHP license, |
! 8: | that is bundled with this package in the file LICENSE, and is |
! 9: | available through the world-wide-web at the following url: |
! 10: | http://www.php.net/license/3_01.txt |
! 11: | If you did not receive a copy of the PHP license and are unable to |
! 12: | obtain it through the world-wide-web, please send a note to |
! 13: | license@php.net so we can mail you a copy immediately. |
! 14: +----------------------------------------------------------------------+
! 15: | Author: Jason Greene <jason@inetgurus.net> |
! 16: +----------------------------------------------------------------------+
! 17: */
! 18:
! 19: /* $Id: php_signal.c 321634 2012-01-01 13:15:04Z felipe $ */
! 20:
! 21: #include "php_signal.h"
! 22:
! 23: /* php_signal using sigaction is derrived from Advanced Programing
! 24: * in the Unix Environment by W. Richard Stevens p 298. */
! 25: Sigfunc *php_signal4(int signo, Sigfunc *func, int restart, int mask_all)
! 26: {
! 27: struct sigaction act,oact;
! 28: act.sa_handler = func;
! 29: if (mask_all) {
! 30: sigfillset(&act.sa_mask);
! 31: } else {
! 32: sigemptyset(&act.sa_mask);
! 33: }
! 34: act.sa_flags = 0;
! 35: if (signo == SIGALRM || (! restart)) {
! 36: #ifdef SA_INTERRUPT
! 37: act.sa_flags |= SA_INTERRUPT; /* SunOS */
! 38: #endif
! 39: } else {
! 40: #ifdef SA_RESTART
! 41: act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */
! 42: #endif
! 43: }
! 44: if (sigaction(signo, &act, &oact) < 0)
! 45: return SIG_ERR;
! 46:
! 47: return oact.sa_handler;
! 48: }
! 49:
! 50: Sigfunc *php_signal(int signo, Sigfunc *func, int restart)
! 51: {
! 52: return php_signal4(signo, func, restart, 0);
! 53: }
! 54:
! 55: /*
! 56: * Local variables:
! 57: * tab-width: 4
! 58: * c-basic-offset: 4
! 59: * End:
! 60: * vim600: noet sw=4 ts=4 fdm=marker
! 61: * vim<600: noet sw=4 ts=4
! 62: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>