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)])
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(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(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)
fi

17
ext/pcntl/pcntl.c

@ -35,8 +35,11 @@
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_pcntl.h"
#include "php_signal.h"
#include "php_ticks.h"
#if HAVE_GETPRIORITY || HAVE_SETPRIORITY || HAVE_WAIT3
#include <sys/wait.h>
#include <sys/time.h>
#include <sys/resource.h>
#endif
@ -864,12 +867,12 @@ static void pcntl_sigwaitinfo(INTERNAL_FUNCTION_PARAMETERS, int timedwait) /* {{
#ifdef SIGCHLD
case SIGCHLD:
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);
#endif
#ifdef si_stime
# endif
# ifdef 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, "uid", sizeof("uid"), siginfo.si_uid);
break;
@ -883,7 +886,9 @@ static void pcntl_sigwaitinfo(INTERNAL_FUNCTION_PARAMETERS, int timedwait) /* {{
#ifdef SIGPOLL
case SIGPOLL:
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);
#endif
break;
#endif
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 */
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 */
PHP_FUNCTION(pcntl_sigtimedwait)
{

3
ext/pcntl/php_pcntl.h

@ -21,9 +21,6 @@
#ifndef 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;
#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. */
Sigfunc *php_signal(int signo, Sigfunc *func, int restart)
{
struct sigaction act,oact;
act.sa_handler = func;
sigemptyset(&act.sa_mask);
@ -44,3 +43,11 @@ Sigfunc *php_signal(int signo, Sigfunc *func, int restart)
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--
<?php
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--
<?php

4
ext/pcntl/tests/002.phpt

@ -2,8 +2,8 @@
pcntl: pcntl_sigprocmask(), pcntl_sigwaitinfo(), pcntl_sigtimedwait()
--SKIPIF--
<?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--
<?php

8
ext/pcntl/tests/pcntl_signal_dispatch.phpt

@ -3,10 +3,10 @@ pcnt_signal_dispatch()
--SKIPIF--
<?php
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--
<?php

6
ext/pcntl/tests/signal_closure_handler.phpt

@ -3,9 +3,9 @@ Closures as a signal handler
--SKIPIF--
<?php
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--
<?php

Loading…
Cancel
Save