#include <errno.h>
+#ifndef NSIG
+# ifdef SIGRTMAX
+# define NSIG (SIGRTMAX + 1)
+# else
+# define NSIG 32
+# endif
+#endif
+
ZEND_DECLARE_MODULE_GLOBALS(pcntl)
static PHP_GINIT_FUNCTION(pcntl);
REGISTER_LONG_CONSTANT("SIGSYS", (zend_long) SIGSYS, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SIGBABY", (zend_long) SIGSYS, CONST_CS | CONST_PERSISTENT);
#endif
+#ifdef SIGRTMIN
+ REGISTER_LONG_CONSTANT("SIGRTMIN", (zend_long) SIGRTMIN, CONST_CS | CONST_PERSISTENT);
+#endif
+#ifdef SIGRTMAX
+ REGISTER_LONG_CONSTANT("SIGRTMAX", (zend_long) SIGRTMAX, CONST_CS | CONST_PERSISTENT);
+#endif
#if HAVE_GETPRIORITY || HAVE_SETPRIORITY
REGISTER_LONG_CONSTANT("PRIO_PGRP", PRIO_PGRP, CONST_CS | CONST_PERSISTENT);
return;
}
- if (signo < 1 || signo > 32) {
+ if (signo < 1 || signo >= NSIG) {
php_error_docref(NULL, E_WARNING, "Invalid signal");
RETURN_FALSE;
}
/* since calling malloc() from within a signal handler is not portable,
* pre-allocate a few records for recording signals */
int i;
- for (i = 0; i < 32; i++) {
+ for (i = 0; i < NSIG; i++) {
struct php_pcntl_pending_signal *psig;
psig = emalloc(sizeof(*psig));
} else {
zend_hash_clean(Z_ARRVAL_P(user_oldset));
}
- for (signo = 1; signo < MAX(NSIG-1, SIGRTMAX); ++signo) {
+ for (signo = 1; signo < NSIG; ++signo) {
if (sigismember(&oldset, signo) != 1) {
continue;
}