diff options
| author | Craig Duncan <git@duncanc.co.uk> | 2019-08-26 18:06:18 +0100 |
|---|---|---|
| committer | Christoph M. Becker <cmbecker69@gmx.de> | 2019-09-20 11:15:22 +0200 |
| commit | 48e696319c970485a9ebd6b6b8483731603b3473 (patch) | |
| tree | 3d007d8f994da238fa39c385f6ecf092d0434410 /ext | |
| parent | 3d59cec506f8f69d5bd96af733321269cfc11b1d (diff) | |
| download | php-git-48e696319c970485a9ebd6b6b8483731603b3473.tar.gz | |
Convert pcntl functions arginfo to php stubs
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/pcntl/pcntl.c | 128 | ||||
| -rw-r--r-- | ext/pcntl/pcntl.stub.php | 74 | ||||
| -rw-r--r-- | ext/pcntl/pcntl_arginfo.h | 117 |
3 files changed, 196 insertions, 123 deletions
diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c index 5ee20019e1..d9334ababe 100644 --- a/ext/pcntl/pcntl.c +++ b/ext/pcntl/pcntl.c @@ -33,6 +33,7 @@ #include "php_ini.h" #include "ext/standard/info.h" #include "php_pcntl.h" +#include "pcntl_arginfo.h" #include "php_signal.h" #include "php_ticks.h" @@ -58,132 +59,13 @@ ZEND_DECLARE_MODULE_GLOBALS(pcntl) static PHP_GINIT_FUNCTION(pcntl); -/* {{{ arginfo */ -ZEND_BEGIN_ARG_INFO(arginfo_pcntl_void, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_waitpid, 0, 0, 2) - ZEND_ARG_INFO(0, pid) - ZEND_ARG_INFO(1, status) - ZEND_ARG_INFO(0, options) - ZEND_ARG_INFO(1, rusage) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_wait, 0, 0, 1) - ZEND_ARG_INFO(1, status) - ZEND_ARG_INFO(0, options) - ZEND_ARG_INFO(1, rusage) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_signal, 0, 0, 2) - ZEND_ARG_INFO(0, signo) - ZEND_ARG_INFO(0, handler) - ZEND_ARG_INFO(0, restart_syscalls) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_signal_get_handler, 0, 0, 1) - ZEND_ARG_INFO(0, signo) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_sigprocmask, 0, 0, 2) - ZEND_ARG_INFO(0, how) - ZEND_ARG_INFO(0, set) - ZEND_ARG_INFO(1, oldset) -ZEND_END_ARG_INFO() - -#ifdef HAVE_STRUCT_SIGINFO_T -# if HAVE_SIGWAITINFO && HAVE_SIGTIMEDWAIT -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_sigwaitinfo, 0, 0, 1) - ZEND_ARG_INFO(0, set) - ZEND_ARG_INFO(1, info) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_sigtimedwait, 0, 0, 1) - ZEND_ARG_INFO(0, set) - ZEND_ARG_INFO(1, info) - ZEND_ARG_INFO(0, seconds) - ZEND_ARG_INFO(0, nanoseconds) -ZEND_END_ARG_INFO() -# endif -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_wifexited, 0, 0, 1) - ZEND_ARG_INFO(0, status) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_wifstopped, 0, 0, 1) - ZEND_ARG_INFO(0, status) -ZEND_END_ARG_INFO() - -#ifdef HAVE_WCONTINUED -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_wifcontinued, 0, 0, 1) - ZEND_ARG_INFO(0, status) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_wifsignaled, 0, 0, 1) - ZEND_ARG_INFO(0, status) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_wifexitstatus, 0, 0, 1) - ZEND_ARG_INFO(0, status) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_wtermsig, 0, 0, 1) - ZEND_ARG_INFO(0, status) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_wstopsig, 0, 0, 1) - ZEND_ARG_INFO(0, status) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_exec, 0, 0, 1) - ZEND_ARG_INFO(0, path) - ZEND_ARG_INFO(0, args) - ZEND_ARG_INFO(0, envs) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_alarm, 0, 0, 1) - ZEND_ARG_INFO(0, seconds) -ZEND_END_ARG_INFO() - -#ifdef HAVE_GETPRIORITY -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_getpriority, 0, 0, 0) - ZEND_ARG_INFO(0, pid) - ZEND_ARG_INFO(0, process_identifier) -ZEND_END_ARG_INFO() -#endif - -#ifdef HAVE_SETPRIORITY -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_setpriority, 0, 0, 1) - ZEND_ARG_INFO(0, priority) - ZEND_ARG_INFO(0, pid) - ZEND_ARG_INFO(0, process_identifier) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_strerror, 0, 0, 1) - ZEND_ARG_INFO(0, errno) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_async_signals, 0, 0, 1) - ZEND_ARG_INFO(0, on) -ZEND_END_ARG_INFO() - -#ifdef HAVE_UNSHARE -ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_unshare, 0, 0, 1) - ZEND_ARG_INFO(0, flags) -ZEND_END_ARG_INFO() -#endif -/* }}} */ - static const zend_function_entry pcntl_functions[] = { - PHP_FE(pcntl_fork, arginfo_pcntl_void) + PHP_FE(pcntl_fork, arginfo_pcntl_fork) PHP_FE(pcntl_waitpid, arginfo_pcntl_waitpid) PHP_FE(pcntl_wait, arginfo_pcntl_wait) PHP_FE(pcntl_signal, arginfo_pcntl_signal) PHP_FE(pcntl_signal_get_handler, arginfo_pcntl_signal_get_handler) - PHP_FE(pcntl_signal_dispatch, arginfo_pcntl_void) + PHP_FE(pcntl_signal_dispatch, arginfo_pcntl_signal_dispatch) PHP_FE(pcntl_wifexited, arginfo_pcntl_wifexited) PHP_FE(pcntl_wifstopped, arginfo_pcntl_wifstopped) PHP_FE(pcntl_wifsignaled, arginfo_pcntl_wifsignaled) @@ -192,8 +74,8 @@ static const zend_function_entry pcntl_functions[] = { PHP_FE(pcntl_wstopsig, arginfo_pcntl_wstopsig) PHP_FE(pcntl_exec, arginfo_pcntl_exec) PHP_FE(pcntl_alarm, arginfo_pcntl_alarm) - PHP_FE(pcntl_get_last_error, arginfo_pcntl_void) - PHP_FALIAS(pcntl_errno, pcntl_get_last_error, NULL) + PHP_FE(pcntl_get_last_error, arginfo_pcntl_get_last_error) + PHP_FALIAS(pcntl_errno, pcntl_get_last_error, arginfo_pcntl_get_last_error) PHP_FE(pcntl_strerror, arginfo_pcntl_strerror) #ifdef HAVE_GETPRIORITY PHP_FE(pcntl_getpriority, arginfo_pcntl_getpriority) diff --git a/ext/pcntl/pcntl.stub.php b/ext/pcntl/pcntl.stub.php new file mode 100644 index 0000000000..1bb1f69709 --- /dev/null +++ b/ext/pcntl/pcntl.stub.php @@ -0,0 +1,74 @@ +<?php + +function pcntl_fork(): int {} + +function pcntl_waitpid(int $pid, &$status, int $options = 0, &$rusage = []): int {} + +function pcntl_wait(&$status, int $options = 0, &$rusage = []): int {} + +/** + * @param callable|int $handler + */ +function pcntl_signal(int $signo, $handler, bool $restart_syscalls = true): bool {} + +/** @return mixed */ +function pcntl_signal_get_handler(int $signo) {} + +function pcntl_signal_dispatch(): bool {} + +#ifdef HAVE_SIGPROCMASK +function pcntl_sigprocmask(int $how, array $set, &$oldset = null): bool {} +#endif + +#ifdef HAVE_STRUCT_SIGINFO_T +#if HAVE_SIGWAITINFO && HAVE_SIGTIMEDWAIT +/** @return int|false */ +function pcntl_sigwaitinfo(array $set, &$info = []) {} + +/** @return int|false */ +function pcntl_sigtimedwait(array $set, &$info = [], int $seconds = 0, int $nanoseconds = 0) {} +#endif +#endif + +function pcntl_wifexited(int $status): bool {} + +function pcntl_wifstopped(int $status): bool {} + +#ifdef HAVE_WCONTINUED +function pcntl_wifcontinued(int $status): bool {} +#endif + +function pcntl_wifsignaled(int $status): bool {} + +/** @return int|false */ +function pcntl_wifexitstatus(int $status) {} + +/** @return int|false */ +function pcntl_wtermsig(int $status) {} + +/** @return int|false */ +function pcntl_wstopsig(int $status) {} + +/** @return false */ +function pcntl_exec(string $path, array $args = [], array $envs = []): bool {} + +function pcntl_alarm(int $seconds): int {} + +function pcntl_get_last_error(): int {} + +#ifdef HAVE_GETPRIORITY +/** @return int|false */ +function pcntl_getpriority(int $pid = UNKNOWN, int $process_identifier = PRIO_PROCESS) {} +#endif + +#ifdef HAVE_SETPRIORITY +function pcntl_setpriority(int $priority, int $pid = UNKNOWN, int $process_identifier = PRIO_PROCESS): bool{} +#endif + +function pcntl_strerror(int $errno): string {} + +function pcntl_async_signals(bool $on = UNKNOWN): bool {} + +#ifdef HAVE_UNSHARE +function pcntl_unshare(int $flags): bool {} +#endif diff --git a/ext/pcntl/pcntl_arginfo.h b/ext/pcntl/pcntl_arginfo.h new file mode 100644 index 0000000000..21a1c6aabd --- /dev/null +++ b/ext/pcntl/pcntl_arginfo.h @@ -0,0 +1,117 @@ +/* This is a generated file, edit the .stub.php file instead. */ + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_fork, 0, 0, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_waitpid, 0, 2, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, pid, IS_LONG, 0) + ZEND_ARG_INFO(1, status) + ZEND_ARG_TYPE_INFO(0, options, IS_LONG, 0) + ZEND_ARG_INFO(1, rusage) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_wait, 0, 1, IS_LONG, 0) + ZEND_ARG_INFO(1, status) + ZEND_ARG_TYPE_INFO(0, options, IS_LONG, 0) + ZEND_ARG_INFO(1, rusage) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_signal, 0, 2, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, signo, IS_LONG, 0) + ZEND_ARG_INFO(0, handler) + ZEND_ARG_TYPE_INFO(0, restart_syscalls, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_signal_get_handler, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, signo, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_signal_dispatch, 0, 0, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +#if defined(HAVE_SIGPROCMASK) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_sigprocmask, 0, 2, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, how, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, set, IS_ARRAY, 0) + ZEND_ARG_INFO(1, oldset) +ZEND_END_ARG_INFO() +#endif + +#if defined(HAVE_STRUCT_SIGINFO_T) && HAVE_SIGWAITINFO && HAVE_SIGTIMEDWAIT +ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_sigwaitinfo, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, set, IS_ARRAY, 0) + ZEND_ARG_INFO(1, info) +ZEND_END_ARG_INFO() +#endif + +#if defined(HAVE_STRUCT_SIGINFO_T) && HAVE_SIGWAITINFO && HAVE_SIGTIMEDWAIT +ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_sigtimedwait, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, set, IS_ARRAY, 0) + ZEND_ARG_INFO(1, info) + ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, nanoseconds, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_wifexited, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, status, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_pcntl_wifstopped arginfo_pcntl_wifexited + +#if defined(HAVE_WCONTINUED) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_wifcontinued, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, status, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +#define arginfo_pcntl_wifsignaled arginfo_pcntl_wifexited + +ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_wifexitstatus, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, status, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_pcntl_wtermsig arginfo_pcntl_wifexitstatus + +#define arginfo_pcntl_wstopsig arginfo_pcntl_wifexitstatus + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_exec, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, args, IS_ARRAY, 0) + ZEND_ARG_TYPE_INFO(0, envs, IS_ARRAY, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_alarm, 0, 1, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_pcntl_get_last_error arginfo_pcntl_fork + +#if defined(HAVE_GETPRIORITY) +ZEND_BEGIN_ARG_INFO_EX(arginfo_pcntl_getpriority, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, pid, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, process_identifier, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +#if defined(HAVE_SETPRIORITY) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_setpriority, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, priority, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, pid, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, process_identifier, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_strerror, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, errno, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_async_signals, 0, 0, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, on, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +#if defined(HAVE_UNSHARE) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_pcntl_unshare, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif |
