phanto Sun Jan 19 07:18:46 2003 EDT Modified files: /php4/ext/standard basic_functions.c Log: ini patch to allow 'entry[] = value' entries Index: php4/ext/standard/basic_functions.c diff -u php4/ext/standard/basic_functions.c:1.563 php4/ext/standard/basic_functions.c:1.564 --- php4/ext/standard/basic_functions.c:1.563 Sat Jan 18 10:03:00 2003 +++ php4/ext/standard/basic_functions.c Sun Jan 19 07:18:46 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.c,v 1.563 2003/01/18 15:03:00 andrey Exp $ */ +/* $Id: basic_functions.c,v 1.564 2003/01/19 12:18:46 phanto Exp $ */ #include "php.h" #include "php_streams.h" @@ -2824,51 +2824,60 @@ zend_hash_update(Z_ARRVAL_P(arr), Z_STRVAL_P(arg1), Z_STRLEN_P(arg1)+1, &element, sizeof(zval *), NULL); break; - case ZEND_INI_PARSER_SECTION: - break; - } -} - -static void php_ini_parser_cb_with_sections(zval *arg1, zval *arg2, int callback_type, zval *arr) -{ - zval *element; - TSRMLS_FETCH(); - - switch (callback_type) { - - case ZEND_INI_PARSER_ENTRY: + case ZEND_INI_PARSER_POP_ENTRY: { - zval *active_arr; + zval *hash, **find_hash; if (!arg2) { /* bare string - nothing to do */ break; } - if (BG(active_ini_file_section)) { - active_arr = BG(active_ini_file_section); + if (zend_hash_find(Z_ARRVAL_P(arr), Z_STRVAL_P(arg1), +Z_STRLEN_P(arg1)+1, (void **) &find_hash) == FAILURE) { + ALLOC_ZVAL(hash); + INIT_PZVAL(hash); + array_init(hash); + + zend_hash_update(Z_ARRVAL_P(arr), Z_STRVAL_P(arg1), +Z_STRLEN_P(arg1)+1, &hash, sizeof(zval *), NULL); } else { - active_arr = arr; + hash = *find_hash; } + ALLOC_ZVAL(element); *element = *arg2; zval_copy_ctor(element); INIT_PZVAL(element); - zend_hash_update(Z_ARRVAL_P(active_arr), Z_STRVAL_P(arg1), - Z_STRLEN_P(arg1)+1, &element, - sizeof(zval *), NULL); + add_next_index_zval(hash, element); } break; case ZEND_INI_PARSER_SECTION: - MAKE_STD_ZVAL(BG(active_ini_file_section)); - array_init(BG(active_ini_file_section)); - zend_hash_update( Z_ARRVAL_P(arr), - Z_STRVAL_P(arg1), - Z_STRLEN_P(arg1)+1, - &BG(active_ini_file_section), - sizeof(zval *), NULL); break; + } +} + +static void php_ini_parser_cb_with_sections(zval *arg1, zval *arg2, int +callback_type, zval *arr) +{ + TSRMLS_FETCH(); + + if (callback_type == ZEND_INI_PARSER_SECTION) { + MAKE_STD_ZVAL(BG(active_ini_file_section)); + array_init(BG(active_ini_file_section)); + zend_hash_update( Z_ARRVAL_P(arr), + Z_STRVAL_P(arg1), + Z_STRLEN_P(arg1)+1, + &BG(active_ini_file_section), + sizeof(zval *), NULL); + } else if (arg2) { + zval *active_arr; + + if (BG(active_ini_file_section)) { + active_arr = BG(active_ini_file_section); + } else { + active_arr = arr; + } + + php_simple_ini_parser_cb(arg1, arg2, callback_type, active_arr); } }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php