Browse Source

- Portability fix. (si_fd seems to be linux only thing)

experimental/first_unicode_implementation
Jani Taskinen 18 years ago
parent
commit
a0470b3ee3
  1. 4
      ext/pcntl/config.m4
  2. 17
      ext/pcntl/pcntl.c
  3. 3
      ext/pcntl/php_pcntl.h
  4. 9
      ext/pcntl/php_signal.c
  5. 2
      ext/pcntl/tests/001.phpt
  6. 4
      ext/pcntl/tests/002.phpt
  7. 8
      ext/pcntl/tests/pcntl_signal_dispatch.phpt
  8. 6
      ext/pcntl/tests/signal_closure_handler.phpt

4
ext/pcntl/config.m4

@ -9,11 +9,9 @@ PHP_ARG_ENABLE(pcntl, whether to enable pcntl support,
[ --enable-pcntl Enable experimental pcntl support (CLI/CGI only)]) [ --enable-pcntl Enable experimental pcntl support (CLI/CGI only)])
if test "$PHP_PCNTL" != "no"; then if test "$PHP_PCNTL" != "no"; then
AC_CHECK_FUNCS(fork, [ AC_DEFINE(HAVE_FORK,1,[ ]) ], [ AC_MSG_ERROR(pcntl: fork() not supported by this platform) ]) AC_CHECK_FUNCS(fork, [ AC_DEFINE(HAVE_FORK,1,[ ]) ], [ AC_MSG_ERROR(pcntl: fork() not supported by this platform) ])
AC_CHECK_FUNCS(waitpid, [ AC_DEFINE(HAVE_WAITPID,1,[ ]) ], [ AC_MSG_ERROR(pcntl: fork() not supported by this platform) ]) AC_CHECK_FUNCS(waitpid, [ AC_DEFINE(HAVE_WAITPID,1,[ ]) ], [ AC_MSG_ERROR(pcntl: fork() not supported by this platform) ])
AC_CHECK_FUNCS(sigaction, [ AC_DEFINE(HAVE_SIGACTION,1,[ ]) ], [ AC_MSG_ERROR(pcntl: sigaction() not supported by this platform) ]) AC_CHECK_FUNCS(sigaction, [ AC_DEFINE(HAVE_SIGACTION,1,[ ]) ], [ AC_MSG_ERROR(pcntl: sigaction() not supported by this platform) ])
AC_CHECK_FUNCS(getpriority setpriority wait3 sigprocmask sigwaitinfo sigtimedwait)
AC_CHECK_FUNCS([getpriority setpriority wait3 sigprocmask sigwaitinfo sigtimedwait])
PHP_NEW_EXTENSION(pcntl, pcntl.c php_signal.c, $ext_shared, cli) PHP_NEW_EXTENSION(pcntl, pcntl.c php_signal.c, $ext_shared, cli)
fi fi

17
ext/pcntl/pcntl.c

@ -35,8 +35,11 @@
#include "php_ini.h" #include "php_ini.h"
#include "ext/standard/info.h" #include "ext/standard/info.h"
#include "php_pcntl.h" #include "php_pcntl.h"
#include "php_signal.h"
#include "php_ticks.h"
#if HAVE_GETPRIORITY || HAVE_SETPRIORITY || HAVE_WAIT3 #if HAVE_GETPRIORITY || HAVE_SETPRIORITY || HAVE_WAIT3
#include <sys/wait.h>
#include <sys/time.h> #include <sys/time.h>
#include <sys/resource.h> #include <sys/resource.h>
#endif #endif
@ -864,12 +867,12 @@ static void pcntl_sigwaitinfo(INTERNAL_FUNCTION_PARAMETERS, int timedwait) /* {{
#ifdef SIGCHLD #ifdef SIGCHLD
case SIGCHLD: case SIGCHLD:
add_ascii_assoc_long_ex(user_siginfo, "status", sizeof("status"), siginfo.si_status); add_ascii_assoc_long_ex(user_siginfo, "status", sizeof("status"), siginfo.si_status);
#ifdef si_utime
# ifdef si_utime
add_ascii_assoc_double_ex(user_siginfo, "utime", sizeof("utime"), siginfo.si_utime); add_ascii_assoc_double_ex(user_siginfo, "utime", sizeof("utime"), siginfo.si_utime);
#endif
#ifdef si_stime
# endif
# ifdef si_stime
add_ascii_assoc_double_ex(user_siginfo, "stime", sizeof("stime"), siginfo.si_stime); add_ascii_assoc_double_ex(user_siginfo, "stime", sizeof("stime"), siginfo.si_stime);
#endif
# endif
add_ascii_assoc_long_ex(user_siginfo, "pid", sizeof("pid"), siginfo.si_pid); add_ascii_assoc_long_ex(user_siginfo, "pid", sizeof("pid"), siginfo.si_pid);
add_ascii_assoc_long_ex(user_siginfo, "uid", sizeof("uid"), siginfo.si_uid); add_ascii_assoc_long_ex(user_siginfo, "uid", sizeof("uid"), siginfo.si_uid);
break; break;
@ -883,7 +886,9 @@ static void pcntl_sigwaitinfo(INTERNAL_FUNCTION_PARAMETERS, int timedwait) /* {{
#ifdef SIGPOLL #ifdef SIGPOLL
case SIGPOLL: case SIGPOLL:
add_ascii_assoc_long_ex(user_siginfo, "band", sizeof("band"), siginfo.si_band); add_ascii_assoc_long_ex(user_siginfo, "band", sizeof("band"), siginfo.si_band);
#ifdef si_fd
add_ascii_assoc_long_ex(user_siginfo, "fd", sizeof("fd"), siginfo.si_fd); add_ascii_assoc_long_ex(user_siginfo, "fd", sizeof("fd"), siginfo.si_fd);
#endif
break; break;
#endif #endif
EMPTY_SWITCH_DEFAULT_CASE(); EMPTY_SWITCH_DEFAULT_CASE();
@ -894,7 +899,7 @@ static void pcntl_sigwaitinfo(INTERNAL_FUNCTION_PARAMETERS, int timedwait) /* {{
} }
/* }}} */ /* }}} */
/* {{{ proto int sigwaitinfo(array set[, array &siginfo])
/* {{{ proto int pcnlt_sigwaitinfo(array set[, array &siginfo])
Synchronously wait for queued signals */ Synchronously wait for queued signals */
PHP_FUNCTION(pcntl_sigwaitinfo) PHP_FUNCTION(pcntl_sigwaitinfo)
{ {
@ -902,7 +907,7 @@ PHP_FUNCTION(pcntl_sigwaitinfo)
} }
/* }}} */ /* }}} */
/* {{{ proto int sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])
/* {{{ proto int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])
Wait for queued signals */ Wait for queued signals */
PHP_FUNCTION(pcntl_sigtimedwait) PHP_FUNCTION(pcntl_sigtimedwait)
{ {

3
ext/pcntl/php_pcntl.h

@ -21,9 +21,6 @@
#ifndef PHP_PCNTL_H #ifndef PHP_PCNTL_H
#define PHP_PCNTL_H #define PHP_PCNTL_H
#include <sys/wait.h>
#include "php_signal.h"
#include "php_ticks.h"
extern zend_module_entry pcntl_module_entry; extern zend_module_entry pcntl_module_entry;
#define phpext_pcntl_ptr &pcntl_module_entry #define phpext_pcntl_ptr &pcntl_module_entry

9
ext/pcntl/php_signal.c

@ -24,7 +24,6 @@
* in the Unix Environment by W. Richard Stevens p 298. */ * in the Unix Environment by W. Richard Stevens p 298. */
Sigfunc *php_signal(int signo, Sigfunc *func, int restart) Sigfunc *php_signal(int signo, Sigfunc *func, int restart)
{ {
struct sigaction act,oact; struct sigaction act,oact;
act.sa_handler = func; act.sa_handler = func;
sigemptyset(&act.sa_mask); sigemptyset(&act.sa_mask);
@ -44,3 +43,11 @@ Sigfunc *php_signal(int signo, Sigfunc *func, int restart)
return oact.sa_handler; return oact.sa_handler;
} }
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
*/

2
ext/pcntl/tests/001.phpt

@ -3,7 +3,7 @@ Test pcntl wait functionality
--SKIPIF-- --SKIPIF--
<?php <?php
if (!extension_loaded("pcntl")) print "skip"; if (!extension_loaded("pcntl")) print "skip";
if (!function_exists("posix_kill")) print "skip posix_kill() not available";
elseif (!function_exists("posix_kill")) print "skip posix_kill() not available";
?> ?>
--FILE-- --FILE--
<?php <?php

4
ext/pcntl/tests/002.phpt

@ -2,8 +2,8 @@
pcntl: pcntl_sigprocmask(), pcntl_sigwaitinfo(), pcntl_sigtimedwait() pcntl: pcntl_sigprocmask(), pcntl_sigwaitinfo(), pcntl_sigtimedwait()
--SKIPIF-- --SKIPIF--
<?php <?php
if (!extension_loaded('pcntl')) die('skip pcntl extension not available');
if (!extension_loaded('posix')) die('skip posix extension not available');
if (!extension_loaded('pcntl')) die('skip pcntl extension not available');
elseif (!extension_loaded('posix')) die('skip posix extension not available');
?> ?>
--FILE-- --FILE--
<?php <?php

8
ext/pcntl/tests/pcntl_signal_dispatch.phpt

@ -3,10 +3,10 @@ pcnt_signal_dispatch()
--SKIPIF-- --SKIPIF--
<?php <?php
if (!extension_loaded("pcntl")) print "skip"; if (!extension_loaded("pcntl")) print "skip";
if (!function_exists("pcntl_signal")) print "skip pcntl_signal() not available";
if (!function_exists("pcntl_signal_dispatch")) print "skip pcntl_signal_dispatch() not available";
if (!function_exists("posix_kill")) print "skip posix_kill() not available";
if (!function_exists("posix_getpid")) print "skip posix_getpid() not available";
elseif (!function_exists("pcntl_signal")) print "skip pcntl_signal() not available";
elseif (!function_exists("pcntl_signal_dispatch")) print "skip pcntl_signal_dispatch() not available";
elseif (!function_exists("posix_kill")) print "skip posix_kill() not available";
elseif (!function_exists("posix_getpid")) print "skip posix_getpid() not available";
?> ?>
--FILE-- --FILE--
<?php <?php

6
ext/pcntl/tests/signal_closure_handler.phpt

@ -3,9 +3,9 @@ Closures as a signal handler
--SKIPIF-- --SKIPIF--
<?php <?php
if (!extension_loaded("pcntl")) print "skip"; if (!extension_loaded("pcntl")) print "skip";
if (!function_exists("pcntl_signal")) print "skip pcntl_signal() not available";
if (!function_exists("posix_kill")) print "skip posix_kill() not available";
if (!function_exists("posix_getpid")) print "skip posix_getpid() not available";
elseif (!function_exists("pcntl_signal")) print "skip pcntl_signal() not available";
elseif (!function_exists("posix_kill")) print "skip posix_kill() not available";
elseif (!function_exists("posix_getpid")) print "skip posix_getpid() not available";
?> ?>
--FILE-- --FILE--
<?php <?php

Loading…
Cancel
Save