diff options
Diffstat (limited to 'Zend/zend_ini.c')
-rw-r--r-- | Zend/zend_ini.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/Zend/zend_ini.c b/Zend/zend_ini.c index c773f0a05b..0e82a20b71 100644 --- a/Zend/zend_ini.c +++ b/Zend/zend_ini.c @@ -367,18 +367,23 @@ ZEND_API double zend_ini_double(char *name, uint name_length, int orig) /* {{{ * } /* }}} */ -ZEND_API char *zend_ini_string(char *name, uint name_length, int orig) /* {{{ */ +ZEND_API char *zend_ini_string_ex(char *name, uint name_length, int orig, zend_bool *exists) /* {{{ */ { zend_ini_entry *ini_entry; TSRMLS_FETCH(); if (zend_hash_find(EG(ini_directives), name, name_length, (void **) &ini_entry) == SUCCESS) { + if (exists) { + *exists = 1; + } + if (orig && ini_entry->modified) { - return ini_entry->orig_value ? ini_entry->orig_value : ""; + return ini_entry->orig_value; } else { - return ini_entry->value ? ini_entry->value : ""; + return ini_entry->value; } - } else { + } else if (exists) { + *exists = 0; return NULL; } @@ -386,6 +391,21 @@ ZEND_API char *zend_ini_string(char *name, uint name_length, int orig) /* {{{ */ } /* }}} */ +ZEND_API char *zend_ini_string(char *name, uint name_length, int orig) /* {{{ */ +{ + zend_bool exists = 1; + char *return_value; + + return_value = zend_ini_string_ex(name, name_length, orig, &exists); + if (!exists) { + return NULL; + } else if (!return_value) { + return_value = ""; + } + return return_value; +} +/* }}} */ + #if TONY_20070307 static void zend_ini_displayer_cb(zend_ini_entry *ini_entry, int type) /* {{{ */ { |