cvs: ZendEngine2 / zend_API.c
| From: | Marcus Boerger | Date: | Wed, 12 May 2004 23:05:28 +0000 |
| Subject: | cvs: ZendEngine2 / zend_API.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-2637@lists.php.net to get a copy of this message | ||
helly Wed May 12 19:05:28 2004 EDT
Modified files:
/ZendEngine2 zend_API.c
Log:
- Centralize register and hash operations for startup/register_module
in new zend_register_module_ex().
http://cvs.php.net/diff.php/ZendEngine2/zend_API.c?r1=1.251&r2=1.252&ty=u
Index: ZendEngine2/zend_API.c
diff -u ZendEngine2/zend_API.c:1.251 ZendEngine2/zend_API.c:1.252
--- ZendEngine2/zend_API.c:1.251 Wed May 12 19:03:38 2004
+++ ZendEngine2/zend_API.c Wed May 12 19:05:28 2004
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_API.c,v 1.251 2004/05/12 23:03:38 helly Exp $ */
+/* $Id: zend_API.c,v 1.252 2004/05/12 23:05:28 helly Exp $ */
#include "zend.h"
#include "zend_execute.h"
@@ -1158,27 +1158,57 @@
return SUCCESS;
}
-ZEND_API int zend_startup_module(zend_module_entry *module)
+ZEND_API int zend_register_module_ex(zend_module_entry *module TSRMLS_DC)
{
- if (module) {
- module->module_number = zend_next_free_module();
- if (module->module_startup_func) {
- TSRMLS_FETCH();
-
- EG(current_module) = module;
- if (module->module_startup_func(MODULE_PERSISTENT, module->module_number
TSRMLS_CC)==FAILURE) {
- zend_error(E_CORE_ERROR,"Unable to start %s module", module->name);
- EG(current_module) = NULL;
- return FAILURE;
- }
+ int name_len;
+ char *lcname;
+
+ if (!module) {
+ return FAILURE;
+ }
+
+#if 0
+ zend_printf("%s: Registering module %d\n", module->name, module->module_number);
+#endif
+ name_len = strlen(module->name);
+ lcname = zend_str_tolower_dup(module->name, name_len);
+
+ if (zend_hash_add(&module_registry, lcname, name_len+1, (void *)module,
sizeof(zend_module_entry), NULL)==FAILURE) {
+ zend_error(E_CORE_WARNING, "Module '%s' already loaded", module->name);
+ efree(lcname);
+ return FAILURE;
+ }
+ efree(lcname);
+
+ if (module->functions && zend_register_functions(NULL, module->functions, NULL,
module->type TSRMLS_CC)==FAILURE) {
+ zend_error(E_CORE_WARNING,"%s: Unable to register functions, unable to load",
module->name);
+ return FAILURE;
+ }
+
+ if (!module->module_started && module->module_startup_func) {
+ EG(current_module) = module;
+ if (module->module_startup_func(MODULE_PERSISTENT, module->module_number
TSRMLS_CC)==FAILURE) {
+ zend_error(E_CORE_ERROR,"Unable to start %s module", module->name);
EG(current_module) = NULL;
+ return FAILURE;
}
- module->type = MODULE_PERSISTENT;
- zend_register_module(module);
+ EG(current_module) = NULL;
}
+
+ module->module_started=1;
+
return SUCCESS;
}
+ZEND_API int zend_startup_module(zend_module_entry *module)
+{
+ TSRMLS_FETCH();
+
+ module->module_number = zend_next_free_module();
+ module->type = MODULE_PERSISTENT;
+ return zend_register_module_ex(module TSRMLS_CC);
+}
+
/* registers all functions in *library_functions in the function hash */
ZEND_API int zend_register_functions(zend_class_entry *scope, zend_function_entry *functions,
HashTable *function_table, int type TSRMLS_DC)
@@ -1357,23 +1387,9 @@
ZEND_API int zend_register_module(zend_module_entry *module)
{
- int retval, name_len;
- char *lcname;
TSRMLS_FETCH();
-
-#if 0
- zend_printf("%s: Registering module %d\n", module->name, module->module_number);
-#endif
- if (module->functions && zend_register_functions(NULL, module->functions, NULL,
module->type TSRMLS_CC)==FAILURE) {
- zend_error(E_CORE_WARNING,"%s: Unable to register functions, unable to load",
module->name);
- return FAILURE;
- }
- module->module_started=1;
- name_len = strlen(module->name);
- lcname = zend_str_tolower_dup(module->name, name_len);
- retval = zend_hash_add(&module_registry, lcname, name_len+1, (void *)module,
sizeof(zend_module_entry), NULL);
- efree(lcname);
- return retval;
+
+ return zend_register_module_ex(module TSRMLS_CC);
}