]> granicus.if.org Git - php/commitdiff
Add zend_ini_string_ex so that the you can differentiate between NULL as a value...
authorScott MacVicar <scottmac@php.net>
Mon, 7 Jul 2008 21:47:30 +0000 (21:47 +0000)
committerScott MacVicar <scottmac@php.net>
Mon, 7 Jul 2008 21:47:30 +0000 (21:47 +0000)
Zend/zend_ini.c
Zend/zend_ini.h

index 82cecc4eaf67b207bbac5d1b84da7a31a0c181ec..18a360d1906e09470e6492dafa5208c3a14cb135 100644 (file)
@@ -368,22 +368,42 @@ 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 {
+               if (exists) {
+                       *exists = 0;
+               }
                return NULL;
        }
+}
+/* }}} */
 
-       return "";
+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;
 }
 /* }}} */
 
index 7274d029ea99ba57e18df616faf8d9138697c284..1b777a00c1e62758070c2397c2398d4a6c929a25 100644 (file)
@@ -104,6 +104,7 @@ ZEND_API void display_ini_entries(zend_module_entry *module);
 ZEND_API long zend_ini_long(char *name, uint name_length, int orig);
 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_API int zend_ini_register_displayer(char *name, uint name_length, void (*displayer)(zend_ini_entry *ini_entry, int type));
 
@@ -157,7 +158,7 @@ END_EXTERN_C()
 
 #define INI_INT(name) zend_ini_long((name), sizeof(name), 0)
 #define INI_FLT(name) zend_ini_double((name), sizeof(name), 0)
-#define INI_STR(name) zend_ini_string((name), sizeof(name), 0)
+#define INI_STR(name) zend_ini_string_ex((name), sizeof(name), 0, NULL)
 #define INI_BOOL(name) ((zend_bool) INI_INT(name))
 
 #define INI_ORIG_INT(name)     zend_ini_long((name), sizeof(name), 1)