diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 6135ace457596..a00b2a6f4e17f 100755 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -121,301 +121,6 @@ static void user_tick_function_dtor(user_tick_function_entry *tick_function_entr /* {{{ arginfo */ -/* {{{ basic_functions.c */ -ZEND_BEGIN_ARG_INFO(arginfo_get_magic_quotes_gpc, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_get_magic_quotes_runtime, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_constant, 0) - ZEND_ARG_INFO(0, const_name) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_ip2long, 0) - ZEND_ARG_INFO(0, ip_address) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_long2ip, 0) - ZEND_ARG_INFO(0, proper_address) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_getenv, 0, 0, 0) - ZEND_ARG_INFO(0, varname) - ZEND_ARG_INFO(0, local_only) -ZEND_END_ARG_INFO() - -#ifdef HAVE_PUTENV -ZEND_BEGIN_ARG_INFO(arginfo_putenv, 0) - ZEND_ARG_INFO(0, setting) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_getopt, 0, 0, 1) - ZEND_ARG_INFO(0, options) - ZEND_ARG_INFO(0, opts) /* ARRAY_INFO(0, opts, 1) */ - ZEND_ARG_INFO(1, optind) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_flush, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_sleep, 0) - ZEND_ARG_INFO(0, seconds) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_usleep, 0) - ZEND_ARG_INFO(0, micro_seconds) -ZEND_END_ARG_INFO() - -#if HAVE_NANOSLEEP -ZEND_BEGIN_ARG_INFO(arginfo_time_nanosleep, 0) - ZEND_ARG_INFO(0, seconds) - ZEND_ARG_INFO(0, nanoseconds) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_time_sleep_until, 0) - ZEND_ARG_INFO(0, timestamp) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO(arginfo_get_current_user, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_get_cfg_var, 0) - ZEND_ARG_INFO(0, option_name) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_error_log, 0, 0, 1) - ZEND_ARG_INFO(0, message) - ZEND_ARG_INFO(0, message_type) - ZEND_ARG_INFO(0, destination) - ZEND_ARG_INFO(0, extra_headers) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_error_get_last, 0, 0, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_error_clear_last, 0, 0, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_func, 0, 0, 1) - ZEND_ARG_INFO(0, function_name) - ZEND_ARG_VARIADIC_INFO(0, parameters) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_func_array, 0, 0, 2) - ZEND_ARG_INFO(0, function_name) - ZEND_ARG_INFO(0, parameters) /* ARRAY_INFO(0, parameters, 1) */ -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_forward_static_call, 0, 0, 1) - ZEND_ARG_INFO(0, function_name) - ZEND_ARG_VARIADIC_INFO(0, parameters) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_forward_static_call_array, 0, 0, 2) - ZEND_ARG_INFO(0, function_name) - ZEND_ARG_INFO(0, parameters) /* ARRAY_INFO(0, parameters, 1) */ -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_register_shutdown_function, 0, 0, 1) - ZEND_ARG_INFO(0, function_name) - ZEND_ARG_VARIADIC_INFO(0, parameters) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_highlight_file, 0, 0, 1) - ZEND_ARG_INFO(0, file_name) - ZEND_ARG_INFO(0, return) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_php_strip_whitespace, 0) - ZEND_ARG_INFO(0, file_name) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_highlight_string, 0, 0, 1) - ZEND_ARG_INFO(0, string) - ZEND_ARG_INFO(0, return) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_ini_get, 0) - ZEND_ARG_INFO(0, varname) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_ini_get_all, 0, 0, 0) - ZEND_ARG_INFO(0, extension) - ZEND_ARG_INFO(0, details) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_ini_set, 0) - ZEND_ARG_INFO(0, varname) - ZEND_ARG_INFO(0, newvalue) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_ini_restore, 0) - ZEND_ARG_INFO(0, varname) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_set_include_path, 0) - ZEND_ARG_INFO(0, new_include_path) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_get_include_path, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_restore_include_path, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_print_r, 0, 0, 1) - ZEND_ARG_INFO(0, var) - ZEND_ARG_INFO(0, return) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_connection_aborted, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_connection_status, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_ignore_user_abort, 0, 0, 0) - ZEND_ARG_INFO(0, value) -ZEND_END_ARG_INFO() - -#if HAVE_GETSERVBYNAME -ZEND_BEGIN_ARG_INFO(arginfo_getservbyname, 0) - ZEND_ARG_INFO(0, service) - ZEND_ARG_INFO(0, protocol) -ZEND_END_ARG_INFO() -#endif - -#if HAVE_GETSERVBYPORT -ZEND_BEGIN_ARG_INFO(arginfo_getservbyport, 0) - ZEND_ARG_INFO(0, port) - ZEND_ARG_INFO(0, protocol) -ZEND_END_ARG_INFO() -#endif - -#if HAVE_GETPROTOBYNAME -ZEND_BEGIN_ARG_INFO(arginfo_getprotobyname, 0) - ZEND_ARG_INFO(0, name) -ZEND_END_ARG_INFO() -#endif - -#if HAVE_GETPROTOBYNUMBER -ZEND_BEGIN_ARG_INFO(arginfo_getprotobynumber, 0) - ZEND_ARG_INFO(0, proto) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_register_tick_function, 0, 0, 1) - ZEND_ARG_INFO(0, function_name) - ZEND_ARG_VARIADIC_INFO(0, parameters) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_unregister_tick_function, 0) - ZEND_ARG_INFO(0, function_name) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_is_uploaded_file, _IS_BOOL, 0) - ZEND_ARG_INFO(0, path) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_move_uploaded_file, 0) - ZEND_ARG_INFO(0, path) - ZEND_ARG_INFO(0, new_path) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_ini_file, 0, 0, 1) - ZEND_ARG_INFO(0, filename) - ZEND_ARG_INFO(0, process_sections) - ZEND_ARG_INFO(0, scanner_mode) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_ini_string, 0, 0, 1) - ZEND_ARG_INFO(0, ini_string) - ZEND_ARG_INFO(0, process_sections) - ZEND_ARG_INFO(0, scanner_mode) -ZEND_END_ARG_INFO() - -#if ZEND_DEBUG -ZEND_BEGIN_ARG_INFO(arginfo_config_get_hash, 0) -ZEND_END_ARG_INFO() -#endif - -#ifdef HAVE_GETLOADAVG -ZEND_BEGIN_ARG_INFO(arginfo_sys_getloadavg, 0) -ZEND_END_ARG_INFO() -#endif -/* }}} */ -/* {{{ browscap.c */ -ZEND_BEGIN_ARG_INFO_EX(arginfo_get_browser, 0, 0, 0) - ZEND_ARG_INFO(0, browser_name) - ZEND_ARG_INFO(0, return_array) -ZEND_END_ARG_INFO() -/* }}} */ -/* {{{ cyr_convert.c */ -ZEND_BEGIN_ARG_INFO(arginfo_convert_cyr_string, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, from) - ZEND_ARG_INFO(0, to) -ZEND_END_ARG_INFO() - -/* }}} */ -/* {{{ datetime.c */ -#if HAVE_STRPTIME -ZEND_BEGIN_ARG_INFO(arginfo_strptime, 0) - ZEND_ARG_INFO(0, timestamp) - ZEND_ARG_INFO(0, format) -ZEND_END_ARG_INFO() -#endif -/* }}} */ - -/* {{{ dns.c */ -ZEND_BEGIN_ARG_INFO(arginfo_gethostbyaddr, 0) - ZEND_ARG_INFO(0, ip_address) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_gethostbyname, 0) - ZEND_ARG_INFO(0, hostname) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_gethostbynamel, 0) - ZEND_ARG_INFO(0, hostname) -ZEND_END_ARG_INFO() - -#ifdef HAVE_GETHOSTNAME -ZEND_BEGIN_ARG_INFO(arginfo_gethostname, 0) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO(arginfo_net_get_interfaces, 0) -ZEND_END_ARG_INFO() - -#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC -ZEND_BEGIN_ARG_INFO_EX(arginfo_dns_check_record, 0, 0, 1) - ZEND_ARG_INFO(0, host) - ZEND_ARG_INFO(0, type) -ZEND_END_ARG_INFO() - -# if defined(PHP_WIN32) || HAVE_FULL_DNS_FUNCS -ZEND_BEGIN_ARG_INFO_EX(arginfo_dns_get_record, 0, 0, 1) - ZEND_ARG_INFO(0, hostname) - ZEND_ARG_INFO(0, type) - ZEND_ARG_ARRAY_INFO(1, authns, 1) - ZEND_ARG_ARRAY_INFO(1, addtl, 1) - ZEND_ARG_INFO(0, raw) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_dns_get_mx, 0, 0, 2) - ZEND_ARG_INFO(0, hostname) - ZEND_ARG_INFO(1, mxhosts) /* ARRAY_INFO(1, mxhosts, 1) */ - ZEND_ARG_INFO(1, weight) /* ARRAY_INFO(1, weight, 1) */ -ZEND_END_ARG_INFO() -# endif - -#endif /* defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC */ -/* }}} */ - /* {{{ exec.c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_exec, 0, 0, 1) ZEND_ARG_INFO(0, command) @@ -1159,7 +864,7 @@ static const zend_function_entry basic_functions[] = { /* {{{ */ PHP_FE(sleep, arginfo_sleep) PHP_FE(usleep, arginfo_usleep) #if HAVE_NANOSLEEP - PHP_FE(time_nanosleep, arginfo_time_nanosleep) + PHP_FE(time_nanosleep, arginfo_nanosleep) PHP_FE(time_sleep_until, arginfo_time_sleep_until) #endif @@ -2972,7 +2677,7 @@ PHP_FUNCTION(flush) } /* }}} */ -/* {{{ proto void sleep(int seconds) +/* {{{ proto int sleep(int seconds) Delay for a given number of seconds */ PHP_FUNCTION(sleep) { @@ -2986,12 +2691,8 @@ PHP_FUNCTION(sleep) zend_value_error("Number of seconds must be greater than or equal to 0"); return; } -#ifdef PHP_SLEEP_NON_VOID - RETURN_LONG(php_sleep((unsigned int)num)); -#else - php_sleep((unsigned int)num); -#endif + RETURN_LONG(php_sleep((unsigned int)num)); } /* }}} */ @@ -4282,9 +3983,9 @@ PHP_FUNCTION(register_tick_function) if (!zend_is_callable(&tick_fe.arguments[0], 0, &function_name)) { efree(tick_fe.arguments); - php_error_docref(NULL, E_WARNING, "Invalid tick callback '%s' passed", ZSTR_VAL(function_name)); + zend_type_error("Invalid tick callback '%s' passed", ZSTR_VAL(function_name)); zend_string_release_ex(function_name, 0); - RETURN_FALSE; + return; } else if (function_name) { zend_string_release_ex(function_name, 0); } diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index de4d22bc3cea1..d16c9a10b05d6 100755 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -275,6 +275,168 @@ function base64_encode(string $str): string {} /** @return string|false */ function base64_decode(string $str, bool $strict = false) {} +/* basic_functions.c */ + +/** @return mixed */ +function constant(string $name) {} + +/** @return int|false */ +function ip2long(string $ip_address) {} + +/** @return string|false */ +function long2ip(int $proper_address) {} + +/** @return string|array|false */ +function getenv(string $variable = UNKNOWN, bool $local_only = false) {} + +#ifdef HAVE_PUTENV +function putenv(string $setting): bool {} +#endif + +/** @return array|false */ +function getopt(string $options, array $longopts = [], &$optind = null) {} + +function flush(): void {} + +function sleep(int $seconds): int {} + +function usleep(int $microseconds): void {} + +#if HAVE_NANOSLEEP +/** @return array|bool */ +function nanosleep(int $seconds, int $nanoseconds) {} + +function time_sleep_until(float $timestamp): bool {} +#endif + +function get_current_user(): string {} + +/** @return string|array|false */ +function get_cfg_var(string $option_name) {} + +function get_magic_quotes_runtime(): bool {} + +function get_magic_quotes_gpc(): bool {} + +function error_log(string $message, int $message_type = 0, string $destination = UNKNOWN, string $extra_headers = UNKNOWN): bool {} + +function error_get_last(): ?array {} + +function error_clear_last(): void {} + +/** + * @param mixed ...$args + * @return mixed + */ +function call_user_func(callable $function, ...$args) {} + +/** @return mixed */ +function call_user_func_array(callable $function, array $args) {} + +/** + * @param mixed ...$args + * @return mixed + */ +function forward_static_call(callable $function, ...$args) {} + +/** @return mixed */ +function forward_static_call_array(callable $function, array $args) {} + +/** + * @param callable $function + * @param mixed ...$args + * @return false|null + */ +function register_shutdown_function($function, ...$args) {} + +/** @return string|bool|null */ +function highlight_file(string $filename, bool $return = false) {} + +function php_strip_whitespace(string $filename): string {} + +/** @return string|bool|null */ +function highlight_string(string $string, bool $return = false) {} + +/** @return string|false */ +function ini_get(string $varname) {} + +/** @return array|false */ +function ini_get_all(?string $extension = null, bool $details = true) {} + +/** @return string|false */ +function ini_set(string $varname, string $value) {} + +function ini_restore(string $varname): void {} + +/** @return string|false */ +function set_include_path(string $include_path) {} + +/** @return string|false */ +function get_include_path() {} + +function restore_include_path(): void {} + +/** + * @param mixed $var + * @return string|bool + */ +function print_r($var, bool $return = false) {} + +function connection_aborted(): int {} + +function connection_status(): int {} + +function ignore_user_abort(bool $value = UNKNOWN): int {} + +#if HAVE_GETSERVBYNAME +/** @return int|false */ +function getservbyname(string $service, string $protocol) {} +#endif + +#if HAVE_GETSERVBYPORT +/** @return string|false */ +function getservbyport(int $port, string $protocol) {} +#endif + +#if HAVE_GETPROTOBYNAME +/** @return int|false */ +function getprotobyname(string $name) {} +#endif + +#if HAVE_GETPROTOBYNUMBER +/** @return string|false */ +function getprotobynumber(int $protocol) {} +#endif + +/** @param mixed $args */ +function register_tick_function(callable $function, ...$args): bool {} + +function unregister_tick_function($function): void {} + +function is_uploaded_file(string $path): bool {} + +function move_uploaded_file(string $path, string $new_path): bool {} + +/** @return array|false */ +function parse_ini_file(string $filename, bool $process_sections = false, int $scanner_mode = INI_SCANNER_NORMAL) {} + +/** @return array|false */ +function parse_ini_string(string $ini_string, bool $process_sections = false, int $scanner_mode = INI_SCANNER_NORMAL) {} + +#if ZEND_DEBUG +function config_get_hash(string $ini_string, bool $process_sections = false, int $scanner_mode = INI_SCANNER_NORMAL): array {} +#endif + +#ifdef HAVE_GETLOADAVG +/** @return array|false */ +function sys_getloadavg() {} +#endif + +/* browscap.c */ + +/** @return object|array|false */ +function get_browser(?string $browser_name = null, bool $return_array = false) {} + /* crc32.c */ function crc32(string $str): int {} @@ -283,6 +445,46 @@ function crc32(string $str): int {} function crypt(string $str, string $salt = UNKNOWN): string {} +/* cyr_convert.c */ + +function convert_cyr_string(string $str, string $from, string $to): string {} + +/* datetime.c */ + +#if HAVE_STRPTIME +/** @return array|false */ +function strptime(string $timestamp, string $format) {} +#endif + +/* dns.c */ + +#ifdef HAVE_GETHOSTNAME +/** @return string|false */ +function gethostname() {} +#endif + +/** @return string|false */ +function gethostbyaddr(string $ip_address) {} + +function gethostbyname(string $hostname): string {} + +/** @return array|false */ +function gethostbynamel(string $hostname) {} + +#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +function dns_check_record(string $hostname, string $type = "MX"): bool {} + +/** @return array|false */ +function dns_get_record(string $hostname, int $type = DNS_ANY, &$authns = null, &$addtl = null, bool $raw = false) {} + +function dns_get_mx(string $hostname, &$mxhosts, &$weight = null): bool {} +#endif + +/* net.c */ + +/** @return array|false */ +function net_get_interfaces() {} + /* ftok.c */ #if HAVE_FTOK diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index 103b44f1526a8..d91a2eab9dea8 100755 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -364,6 +364,228 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_base64_decode, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, strict, _IS_BOOL, 0) ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_INFO_EX(arginfo_constant, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_ip2long, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, ip_address, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_long2ip, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, proper_address, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_getenv, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, variable, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, local_only, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +#if defined(HAVE_PUTENV) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_putenv, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, setting, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif + +ZEND_BEGIN_ARG_INFO_EX(arginfo_getopt, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, options, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, longopts, IS_ARRAY, 0) + ZEND_ARG_INFO(1, optind) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_flush, 0, 0, IS_VOID, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_sleep, 0, 1, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_usleep, 0, 1, IS_VOID, 0) + ZEND_ARG_TYPE_INFO(0, microseconds, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#if HAVE_NANOSLEEP +ZEND_BEGIN_ARG_INFO_EX(arginfo_nanosleep, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, nanoseconds, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +#if HAVE_NANOSLEEP +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_time_sleep_until, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, timestamp, IS_DOUBLE, 0) +ZEND_END_ARG_INFO() +#endif + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_current_user, 0, 0, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_get_cfg_var, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, option_name, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_get_magic_quotes_runtime arginfo_ob_flush + +#define arginfo_get_magic_quotes_gpc arginfo_ob_flush + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_error_log, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, message_type, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, destination, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, extra_headers, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_error_get_last, 0, 0, IS_ARRAY, 1) +ZEND_END_ARG_INFO() + +#define arginfo_error_clear_last arginfo_flush + +ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_func, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, function, IS_CALLABLE, 0) + ZEND_ARG_VARIADIC_INFO(0, args) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_call_user_func_array, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, function, IS_CALLABLE, 0) + ZEND_ARG_TYPE_INFO(0, args, IS_ARRAY, 0) +ZEND_END_ARG_INFO() + +#define arginfo_forward_static_call arginfo_call_user_func + +#define arginfo_forward_static_call_array arginfo_call_user_func_array + +ZEND_BEGIN_ARG_INFO_EX(arginfo_register_shutdown_function, 0, 0, 1) + ZEND_ARG_INFO(0, function) + ZEND_ARG_VARIADIC_INFO(0, args) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_highlight_file, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, return, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_php_strip_whitespace, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_highlight_string, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, return, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_ini_get, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, varname, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_ini_get_all, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, extension, IS_STRING, 1) + ZEND_ARG_TYPE_INFO(0, details, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_ini_set, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, varname, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, value, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ini_restore, 0, 1, IS_VOID, 0) + ZEND_ARG_TYPE_INFO(0, varname, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_set_include_path, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, include_path, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_get_include_path arginfo_ob_get_flush + +#define arginfo_restore_include_path arginfo_flush + +ZEND_BEGIN_ARG_INFO_EX(arginfo_print_r, 0, 0, 1) + ZEND_ARG_INFO(0, var) + ZEND_ARG_TYPE_INFO(0, return, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +#define arginfo_connection_aborted arginfo_ob_get_level + +#define arginfo_connection_status arginfo_ob_get_level + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ignore_user_abort, 0, 0, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, value, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +#if HAVE_GETSERVBYNAME +ZEND_BEGIN_ARG_INFO_EX(arginfo_getservbyname, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, service, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, protocol, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif + +#if HAVE_GETSERVBYPORT +ZEND_BEGIN_ARG_INFO_EX(arginfo_getservbyport, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, port, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, protocol, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif + +#if HAVE_GETPROTOBYNAME +ZEND_BEGIN_ARG_INFO_EX(arginfo_getprotobyname, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif + +#if HAVE_GETPROTOBYNUMBER +ZEND_BEGIN_ARG_INFO_EX(arginfo_getprotobynumber, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, protocol, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_register_tick_function, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, function, IS_CALLABLE, 0) + ZEND_ARG_VARIADIC_INFO(0, args) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_unregister_tick_function, 0, 1, IS_VOID, 0) + ZEND_ARG_INFO(0, function) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_uploaded_file, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_move_uploaded_file, 0, 2, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, new_path, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_ini_file, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, process_sections, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, scanner_mode, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_parse_ini_string, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, ini_string, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, process_sections, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, scanner_mode, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#if ZEND_DEBUG +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_config_get_hash, 0, 1, IS_ARRAY, 0) + ZEND_ARG_TYPE_INFO(0, ini_string, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, process_sections, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, scanner_mode, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +#if defined(HAVE_GETLOADAVG) +ZEND_BEGIN_ARG_INFO_EX(arginfo_sys_getloadavg, 0, 0, 0) +ZEND_END_ARG_INFO() +#endif + +ZEND_BEGIN_ARG_INFO_EX(arginfo_get_browser, 0, 0, 0) + ZEND_ARG_TYPE_INFO(0, browser_name, IS_STRING, 1) + ZEND_ARG_TYPE_INFO(0, return_array, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_crc32, 0, 1, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) ZEND_END_ARG_INFO() @@ -373,6 +595,61 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_crypt, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, salt, IS_STRING, 0) ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_convert_cyr_string, 0, 3, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, from, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, to, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#if HAVE_STRPTIME +ZEND_BEGIN_ARG_INFO_EX(arginfo_strptime, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, timestamp, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif + +#if defined(HAVE_GETHOSTNAME) +ZEND_BEGIN_ARG_INFO_EX(arginfo_gethostname, 0, 0, 0) +ZEND_END_ARG_INFO() +#endif + +#define arginfo_gethostbyaddr arginfo_ip2long + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gethostbyname, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_gethostbynamel, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_check_record, 0, 1, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, type, IS_STRING, 0) +ZEND_END_ARG_INFO() +#endif + +#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +ZEND_BEGIN_ARG_INFO_EX(arginfo_dns_get_record, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0) + ZEND_ARG_INFO(1, authns) + ZEND_ARG_INFO(1, addtl) + ZEND_ARG_TYPE_INFO(0, raw, _IS_BOOL, 0) +ZEND_END_ARG_INFO() +#endif + +#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_get_mx, 0, 2, _IS_BOOL, 0) + ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) + ZEND_ARG_INFO(1, mxhosts) + ZEND_ARG_INFO(1, weight) +ZEND_END_ARG_INFO() +#endif + +#define arginfo_net_get_interfaces arginfo_ob_get_flush + #if HAVE_FTOK ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ftok, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, pathname, IS_STRING, 0) diff --git a/ext/standard/tests/general_functions/register_tick_function_error.phpt b/ext/standard/tests/general_functions/register_tick_function_error.phpt new file mode 100644 index 0000000000000..b71f1ea5d5bde --- /dev/null +++ b/ext/standard/tests/general_functions/register_tick_function_error.phpt @@ -0,0 +1,14 @@ +--TEST-- +register_tick_function only accepts a valid callback as parameter +--FILE-- +getMessage() . "\n"; +} +?> +--EXPECT-- +Invalid tick callback 'a' passed diff --git a/ext/standard/tests/general_functions/sleep_basic.phpt b/ext/standard/tests/general_functions/sleep_basic.phpt index 0ef0e7c2131f0..d3dd8c44f5a4f 100644 --- a/ext/standard/tests/general_functions/sleep_basic.phpt +++ b/ext/standard/tests/general_functions/sleep_basic.phpt @@ -20,7 +20,7 @@ set_time_limit(20); $time_start = microtime(true); // Sleep for a while -sleep($sleeptime); +$result = sleep($sleeptime); // Test passes if sleeps for at least 98% of specified time $sleeplow = $sleeptime - ($sleeptime * 2 /100); @@ -29,6 +29,7 @@ $time_end = microtime(true); $time = $time_end - $time_start; echo "Thread slept for " . $time . " seconds\n"; +echo "Return value: " . $result . "\n"; if ($time >= $sleeplow) { echo "TEST PASSED\n"; @@ -40,5 +41,6 @@ if ($time >= $sleeplow) { --EXPECTF-- *** Testing sleep() : basic functionality *** Thread slept for %f seconds +Return value: 0 TEST PASSED ===DONE=== diff --git a/main/php.h b/main/php.h index b014379fda16a..48c78291d7a64 100644 --- a/main/php.h +++ b/main/php.h @@ -294,7 +294,6 @@ END_EXTERN_C() /* global variables */ #if !defined(PHP_WIN32) -#define PHP_SLEEP_NON_VOID #define php_sleep sleep extern char **environ; #endif /* !defined(PHP_WIN32) */ diff --git a/win32/build/config.w32.h.in b/win32/build/config.w32.h.in index bfe57ed488e08..ca3a19b5ce378 100644 --- a/win32/build/config.w32.h.in +++ b/win32/build/config.w32.h.in @@ -44,7 +44,6 @@ /* its in win32/time.c */ #define HAVE_USLEEP 1 #define HAVE_NANOSLEEP 1 -#define PHP_SLEEP_NON_VOID 1 #define HAVE_GETCWD 1 #define NEED_ISBLANK 1