diff options
Diffstat (limited to 'ext/standard/basic_functions.c')
| -rw-r--r-- | ext/standard/basic_functions.c | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index dd61c547c5..10d7622ee1 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -23,6 +23,7 @@ #include "php_streams.h" #include "php_main.h" #include "php_globals.h" +#include "php_variables.h" #include "php_ini.h" #include "php_standard.h" #include "php_math.h" @@ -632,7 +633,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_long2ip, 0) ZEND_ARG_INFO(0, proper_address) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO(arginfo_getenv, 0) +ZEND_BEGIN_ARG_INFO_EX(arginfo_getenv, 0, 0, 0) ZEND_ARG_INFO(0, varname) ZEND_END_ARG_INFO() @@ -2598,6 +2599,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_get_headers, 0, 0, 1) ZEND_ARG_INFO(0, url) ZEND_ARG_INFO(0, format) + ZEND_ARG_INFO(0, context) ZEND_END_ARG_INFO() /* }}} */ /* {{{ user_filters.c */ @@ -3491,8 +3493,8 @@ PHPAPI double php_get_nan(void) /* {{{ */ return HUGE_VAL + -HUGE_VAL; #elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha) double val = 0.0; - ((php_uint32*)&val)[1] = PHP_DOUBLE_QUIET_NAN_HIGH; - ((php_uint32*)&val)[0] = 0; + ((uint32_t*)&val)[1] = PHP_DOUBLE_QUIET_NAN_HIGH; + ((uint32_t*)&val)[0] = 0; return val; #elif HAVE_ATOF_ACCEPTS_NAN return atof("NAN"); @@ -3508,8 +3510,8 @@ PHPAPI double php_get_inf(void) /* {{{ */ return HUGE_VAL; #elif defined(__i386__) || defined(_X86_) || defined(ALPHA) || defined(_ALPHA) || defined(__alpha) double val = 0.0; - ((php_uint32*)&val)[1] = PHP_DOUBLE_INFINITY_HIGH; - ((php_uint32*)&val)[0] = 0; + ((uint32_t*)&val)[1] = PHP_DOUBLE_INFINITY_HIGH; + ((uint32_t*)&val)[0] = 0; return val; #elif HAVE_ATOF_ACCEPTS_INF return atof("INF"); @@ -3977,22 +3979,17 @@ PHP_FUNCTION(ip2long) Converts an (IPv4) Internet network address into a string in Internet standard dotted format */ PHP_FUNCTION(long2ip) { - /* "It's a long but it's not, PHP ints are signed */ - char *ip; - size_t ip_len; - uint32_t n; + zend_ulong ip; struct in_addr myaddr; #ifdef HAVE_INET_PTON char str[40]; #endif - if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &ip, &ip_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &ip) == FAILURE) { return; } - n = strtoul(ip, NULL, 0); - - myaddr.s_addr = htonl(n); + myaddr.s_addr = htonl(ip); #ifdef HAVE_INET_PTON if (inet_ntop(AF_INET, &myaddr, str, sizeof(str))) { RETURN_STRING(str); @@ -4009,17 +4006,24 @@ PHP_FUNCTION(long2ip) * System Functions * ********************/ -/* {{{ proto string getenv(string varname) - Get the value of an environment variable */ +/* {{{ proto string getenv([string varname]) + Get the value of an environment variable or every available environment variable + if no varname is present */ PHP_FUNCTION(getenv) { - char *ptr, *str; + char *ptr, *str = NULL; size_t str_len; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &str, &str_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "|s", &str, &str_len) == FAILURE) { RETURN_FALSE; } + if (!str) { + array_init(return_value); + php_import_environment_variables(return_value); + return; + } + /* SAPI method returns an emalloc()'d string */ ptr = sapi_getenv(str, str_len); if (ptr) { |
