]> granicus.if.org Git - php/commitdiff
ini patch to allow 'entry[] = value' entries
authorHarald Radi <phanto@php.net>
Sun, 19 Jan 2003 12:01:38 +0000 (12:01 +0000)
committerHarald Radi <phanto@php.net>
Sun, 19 Jan 2003 12:01:38 +0000 (12:01 +0000)
Zend/zend_ini.h
Zend/zend_ini_parser.y
Zend/zend_ini_scanner.l

index e6cd22a7709d8112a3d942fed2e03bcbf6726cff..416db5a11227574a0c985267fffb215f28e7722c 100644 (file)
@@ -191,6 +191,7 @@ typedef void (*zend_ini_parser_cb_t)(zval *arg1, zval *arg2, int callback_type,
 int zend_parse_ini_file(zend_file_handle *fh, zend_bool unbuffered_errors, zend_ini_parser_cb_t ini_parser_cb, void *arg);
 #define ZEND_INI_PARSER_ENTRY  1
 #define ZEND_INI_PARSER_SECTION        2
+#define ZEND_INI_PARSER_POP_ENTRY      3
 
 typedef struct _zend_ini_parser_param {
        zend_ini_parser_cb_t ini_parser_cb;
index 33b0bf005f73bfcd662e25cd851dea2eed524e52..058d52d08a29e31f0662cf747ac5cff9d38c95ad 100644 (file)
@@ -178,6 +178,7 @@ int zend_parse_ini_file(zend_file_handle *fh, zend_bool unbuffered_errors, zend_
 %pure_parser
 %token TC_STRING
 %token TC_ENCAPSULATED_STRING
+%token BRACK
 %token SECTION
 %token CFG_TRUE
 %token CFG_FALSE
@@ -200,6 +201,14 @@ statement:
                        free($1.value.str.val);
                        free($3.value.str.val);
                }
+       |       TC_STRING BRACK '=' string_or_value {
+#if DEBUG_CFG_PARSER
+                       printf("'%s'[ ] = '%s'\n", $1.value.str.val, $4.value.str.val);
+#endif
+                       ZEND_INI_PARSER_CB(&$1, &$4, ZEND_INI_PARSER_POP_ENTRY, ZEND_INI_PARSER_ARG);
+                       free($1.value.str.val);
+                       free($4.value.str.val);
+               }
        |       TC_STRING { ZEND_INI_PARSER_CB(&$1, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG); free($1.value.str.val); }
        |       SECTION { ZEND_INI_PARSER_CB(&$1, NULL, ZEND_INI_PARSER_SECTION, ZEND_INI_PARSER_ARG); free($1.value.str.val); }
        |       '\n'
index 65aa9e578102a77665f7c24a6a51e33b93c1d5e1..16d4d30feb221fcb8dbb254255e602279f8029ff 100644 (file)
@@ -108,6 +108,9 @@ NEWLINE ("\r"|"\n"|"\r\n")
 
 %%
 
+<INITIAL>[ ]*[\[][ ]*[\]][ ]* {
+       return BRACK;
+}
 
 <INITIAL>[ ]*("true"|"on"|"yes")[ ]* {
        ini_lval->value.str.val = zend_strndup("1", 1);
@@ -166,7 +169,7 @@ NEWLINE ("\r"|"\n"|"\r\n")
 }
 
 
-<INITIAL>[^=\n\r\t;|&~()!"]+ {
+<INITIAL>[^=\n\r\t;|&~()!"\[]+ {
        /* STRING */
        register int i;