mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
Use the new INI parser for parse_ini_str()
- parse_ini_str() is now thread-safe, and supported under Windows (Zeev)
This commit is contained in:
parent
ab3beffad7
commit
4af433d627
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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> |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
|
@ -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> |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user