zeev Mon Jan 15 02:52:02 2001 EDT
Modified files:
/php4/main php_globals.h php_ini.c
Log:
- Remove the ini_extension_list global
- Switch to delayed loading of Zend extensions
Index: php4/main/php_globals.h
diff -u php4/main/php_globals.h:1.60 php4/main/php_globals.h:1.61
--- php4/main/php_globals.h:1.60 Sun Jan 14 19:21:05 2001
+++ php4/main/php_globals.h Mon Jan 15 02:52:02 2001
@@ -124,8 +124,6 @@
zend_bool during_request_startup;
zend_bool allow_url_fopen;
-
- zend_llist ini_extension_list;
};
Index: php4/main/php_ini.c
diff -u php4/main/php_ini.c:1.48 php4/main/php_ini.c:1.49
--- php4/main/php_ini.c:1.48 Sun Jan 14 19:21:05 2001
+++ php4/main/php_ini.c Mon Jan 15 02:52:02 2001
@@ -28,6 +28,10 @@
static HashTable configuration_hash;
PHPAPI char *php_ini_opened_path=NULL;
+typedef struct _php_extension_lists {
+ zend_llist engine;
+ zend_llist functions;
+} php_extension_lists;
static void php_ini_displayer_cb(zend_ini_entry *ini_entry, int type)
{
@@ -117,7 +121,7 @@
}
}
-static void php_config_ini_parser_cb(zval *arg1, zval *arg2, int callback_type, void
*arg)
+static void php_config_ini_parser_cb(zval *arg1, zval *arg2, int callback_type,
+php_extension_lists *extension_lists)
{
switch (callback_type) {
case ZEND_INI_PARSER_ENTRY: {
@@ -128,18 +132,19 @@
}
if (!strcasecmp(Z_STRVAL_P(arg1), "extension")) { /*
load function module */
zval copy;
- PLS_FETCH();
copy = *arg2;
zval_copy_ctor(©);
copy.refcount = 0;
-
zend_llist_add_element(&PG(ini_extension_list), ©);
+
+zend_llist_add_element(&extension_lists->functions, ©);
} else if (!strcasecmp(Z_STRVAL_P(arg1),
ZEND_EXTENSION_TOKEN)) { /* load Zend extension */
- zend_load_extension(Z_STRVAL_P(arg2));
+ char *extension_name =
+estrndup(Z_STRVAL_P(arg2), Z_STRLEN_P(arg2));
+
+
+zend_llist_add_element(&extension_lists->engine, &extension_name);
} else {
zend_hash_update(&configuration_hash,
Z_STRVAL_P(arg1), Z_STRLEN_P(arg1)+1, arg2, sizeof(zval), (void **) &entry);
Z_STRVAL_P(entry) =
zend_strndup(Z_STRVAL_P(entry), Z_STRLEN_P(entry));
- }
+ }
}
break;
case ZEND_INI_PARSER_SECTION:
@@ -147,13 +152,19 @@
}
}
-static void php_apply_ini_extension_list(void *dummy)
+
+static void php_load_function_extension_cb(void *arg)
{
- zval *extension = (zval *) dummy;
+ zval *extension = (zval *) arg;
zval zval;
php_dl(extension, MODULE_PERSISTENT, &zval);
- zval_dtor(extension);
+}
+
+
+static void php_load_zend_extension_cb(void *arg)
+{
+ zend_load_extension(*((char **) arg));
}
@@ -164,13 +175,15 @@
char *open_basedir;
int free_ini_search_path=0;
zend_file_handle fh;
+ php_extension_lists extension_lists;
PLS_FETCH();
if (zend_hash_init(&configuration_hash, 0, NULL, (dtor_func_t)
pvalue_config_destructor, 1)==FAILURE) {
return FAILURE;
}
- zend_llist_init(&PG(ini_extension_list), sizeof(zval), NULL, 1);
+ zend_llist_init(&extension_lists.engine, sizeof(zval), free_estring, 1);
+ zend_llist_init(&extension_lists.functions, sizeof(zval), ZVAL_DESTRUCTOR, 1);
safe_mode_state = PG(safe_mode);
open_basedir = PG(open_basedir);
@@ -220,11 +233,14 @@
}
fh.type = ZEND_HANDLE_FP;
fh.filename = php_ini_opened_path;
+
+ zend_parse_ini_file(&fh, 1, php_config_ini_parser_cb, &extension_lists);
- zend_parse_ini_file(&fh, 1, php_config_ini_parser_cb, NULL);
+ zend_llist_apply(&extension_lists.engine, php_load_zend_extension_cb);
+ zend_llist_apply(&extension_lists.functions, php_load_function_extension_cb);
- zend_llist_apply(&PG(ini_extension_list), php_apply_ini_extension_list);
- zend_llist_destroy(&PG(ini_extension_list));
+ zend_llist_destroy(&extension_lists.engine);
+ zend_llist_destroy(&extension_lists.functions);
if (php_ini_opened_path) {
zval tmp;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]