diff options
Diffstat (limited to 'ext/standard/basic_functions.c')
-rw-r--r-- | ext/standard/basic_functions.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 8da45c4287..2ac9ce3800 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" @@ -631,7 +632,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() @@ -2597,6 +2598,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 */ @@ -4007,17 +4009,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) { |