]> granicus.if.org Git - php/commitdiff
Use the new INI parser for parse_ini_str()
authorZeev Suraski <zeev@php.net>
Sun, 29 Oct 2000 22:42:01 +0000 (22:42 +0000)
committerZeev Suraski <zeev@php.net>
Sun, 29 Oct 2000 22:42:01 +0000 (22:42 +0000)
- parse_ini_str() is now thread-safe, and supported under Windows (Zeev)

ext/standard/basic_functions.c
main/configuration-parser.y
main/php_ini.c
main/php_ini.h

index 722c5cbcb27bbeab8703786b3bc64b3188db0a1d..4b9e2bdd25f73fa5a9272320de986437cdee7311 100644 (file)
@@ -2318,6 +2318,49 @@ PHP_FUNCTION(move_uploaded_file)
 /* }}} */
 
 
+
+static void php_simple_ini_parser_cb(zval *arg1, zval *arg2, int callback_type, zval *arr)
+{
+       zval *element;
+
+       switch (callback_type) {
+               case ZEND_INI_PARSER_ENTRY:
+                       ALLOC_ZVAL(element);
+                       *element = *arg2;
+                       zval_copy_ctor(element);
+                       INIT_PZVAL(element);
+                       zend_hash_update(arr->value.ht, Z_STRVAL_P(arg1), Z_STRLEN_P(arg1)+1, &element, sizeof(zval *), NULL);
+                       break;
+               case ZEND_INI_PARSER_SECTION:
+                       break;
+       }
+}
+
+
+/* {{{ proto void parse_ini_file(string filename)
+   Parse configuration file */
+PHP_FUNCTION(parse_ini_file)
+{
+       zval **filename;
+       zend_file_handle fh;
+
+       if (ARG_COUNT(ht)!=1 || zend_get_parameters_ex(1, &filename)==FAILURE) {
+               WRONG_PARAM_COUNT;
+       }
+       convert_to_string_ex(filename);
+       fh.handle.fp = V_FOPEN((*filename)->value.str.val, "r");
+       if (!fh.handle.fp) {
+               php_error(E_WARNING,"Cannot open '%s' for reading", (*filename)->value.str.val);
+               return;
+       }
+       fh.type = ZEND_HANDLE_FP;
+       array_init(return_value);
+       zend_parse_ini_file(&fh, (zend_ini_parser_cb_t) php_simple_ini_parser_cb, return_value);
+
+}
+/* }}} */
+
+
 /*
  * Local variables:
  * tab-width: 4
index 6c1cc3d8b4b7677efe679f49ff8619e2bc315a97..7cea8de979f5f11769e57ee114d219244b0801c4 100644 (file)
@@ -273,36 +273,6 @@ PHP_MINIT_FUNCTION(browscap)
 }
 
 
-/* {{{ proto void parse_ini_file(string filename)
-   Parse configuration file */
-PHP_FUNCTION(parse_ini_file)
-{
-#ifdef ZTS
-       php_error(E_WARNING, "parse_ini_file() is not supported in multithreaded PHP");
-       RETURN_FALSE;
-#else
-       zval **filename;
-
-       if (ARG_COUNT(ht)!=1 || zend_get_parameters_ex(1, &filename)==FAILURE) {
-               WRONG_PARAM_COUNT;
-       }
-       convert_to_string_ex(filename);
-       cfgin = V_FOPEN((*filename)->value.str.val, "r");
-       if (!cfgin) {
-               php_error(E_WARNING,"Cannot open '%s' for reading", (*filename)->value.str.val);
-               return;
-       }
-       array_init(return_value);
-       init_cfg_scanner();
-       active_hash_table = return_value->value.ht;
-       parsing_mode = PARSING_MODE_STANDALONE;
-       currently_parsed_filename = (*filename)->value.str.val;
-       yyparse();
-       fclose(cfgin);
-#endif
-}
-/* }}} */
-
 int php_shutdown_config(void)
 {
        zend_hash_destroy(&configuration_hash);
index c681eb227044750ced41a1148df2bedd5d08e98b..1c52a384e5271a0bb50d402274cc1f444cb89b8d 100644 (file)
@@ -2,17 +2,17 @@
    +----------------------------------------------------------------------+
    | PHP version 4.0                                                                                                     |
    +----------------------------------------------------------------------+
-   | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group                                   |
+   | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group                                      |
    +----------------------------------------------------------------------+
    | This source file is subject to version 2.02 of the PHP license,     |
-   | that is bundled with this package in the file LICENSE, and is             |
-   | available at through the world-wide-web at                                                   |
-   | http://www.php.net/license/2_02.txt.                                                               |
+   | that is bundled with this package in the file LICENSE, and is               |
+   | available at through the world-wide-web at                                                      |
+   | http://www.php.net/license/2_02.txt.                                                                |
    | If you did not receive a copy of the PHP license and are unable to   |
    | obtain it through the world-wide-web, please send a note to                 |
-   | license@php.net so we can mail you a copy immediately.                       |
+   | license@php.net so we can mail you a copy immediately.                          |
    +----------------------------------------------------------------------+
-   | Author: Zeev Suraski <zeev@zend.com>                                                               |
+   | Author: Zeev Suraski <zeev@zend.com>                                                                |
    +----------------------------------------------------------------------+
  */
 
index 80014e68b5b08dd5ba06d6cf8f079551656cba08..0321c1fa680c59718bccf904995c8f3f9bd62fc0 100644 (file)
@@ -12,7 +12,7 @@
    | obtain it through the world-wide-web, please send a note to          |
    | license@php.net so we can mail you a copy immediately.               |
    +----------------------------------------------------------------------+
-   | Authors: Zeev Suraski <zeev@zend.com>                                |
+   | Author: Zeev Suraski <zeev@zend.com>                                 |
    +----------------------------------------------------------------------+
 */