summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Ruby <rubys@php.net>1999-12-07 20:49:01 +0000
committerSam Ruby <rubys@php.net>1999-12-07 20:49:01 +0000
commit8abf7246780903b2b3084948dbe83e3b967d84bb (patch)
treea5e1168d097a3fb52b9e77b2f90e9fc2242aa28f
parent6068b5bdacc76296299ea9a3c9fa63049780d961 (diff)
downloadphp-git-8abf7246780903b2b3084948dbe83e3b967d84bb.tar.gz
Provide basis for shared libraries/dlls to contain internal extensions
-rw-r--r--main.h4
-rw-r--r--main/SAPI.c4
-rw-r--r--main/internal_functions.c.in49
-rw-r--r--main/internal_functions_win32.c49
-rw-r--r--main/main.c52
-rw-r--r--main/php.h6
6 files changed, 79 insertions, 85 deletions
diff --git a/main.h b/main.h
index c06954d2c9..e476f490dd 100644
--- a/main.h
+++ b/main.h
@@ -36,6 +36,10 @@ PHPAPI void php_module_shutdown(void);
PHPAPI void php_module_shutdown_for_exec(void);
PHPAPI int php_module_shutdown_wrapper(sapi_module_struct *sapi_globals);
+PHPAPI int php_startup_extensions(zend_module_entry **ptr, int count);
+PHPAPI int php_global_startup_extensions(zend_module_entry **ptr, int count);
+PHPAPI int php_global_shutdown_extensions(zend_module_entry **ptr, int count);
+
PHPAPI void php_execute_script(zend_file_handle *primary_file CLS_DC ELS_DC PLS_DC);
extern void php_call_shutdown_functions(void);
diff --git a/main/SAPI.c b/main/SAPI.c
index 01be19857e..b88b8ebf8c 100644
--- a/main/SAPI.c
+++ b/main/SAPI.c
@@ -76,12 +76,12 @@ SAPI_API void sapi_startup(sapi_module_struct *sf)
sapi_globals_id = ts_allocate_id(sizeof(sapi_globals_struct), NULL, NULL);
#endif
- module_global_startup_modules();
+ php_global_startup_internal_extensions();
}
SAPI_API void sapi_shutdown(void)
{
- module_global_shutdown_modules();
+ php_global_shutdown_internal_extensions();
zend_hash_destroy(&known_post_content_types);
}
diff --git a/main/internal_functions.c.in b/main/internal_functions.c.in
index 7b3020fa3d..da89aaab04 100644
--- a/main/internal_functions.c.in
+++ b/main/internal_functions.c.in
@@ -21,6 +21,7 @@
/* $Id$ */
#include "php.h"
+#include "main.h"
#include "modules.h"
#include "internal_functions_registry.h"
#include "zend_compile.h"
@@ -38,7 +39,7 @@ unsigned char first_arg_allow_ref[] = { 1, BYREF_ALLOW };
unsigned char second_arg_force_ref[] = { 2, BYREF_NONE, BYREF_FORCE };
unsigned char second_arg_allow_ref[] = { 2, BYREF_NONE, BYREF_ALLOW };
-zend_module_entry *php3_builtin_modules[] = {
+zend_module_entry *php_builtin_extensions[] = {
phpext_regex_ptr,
phpext_dl_ptr,
phpext_file_ptr,
@@ -59,52 +60,22 @@ zend_module_entry *php3_builtin_modules[] = {
@EXT_MODULE_PTRS@
};
+#define EXTCOUNT (sizeof(php_builtin_extensions)/sizeof(zend_module_entry *))
+
-int module_startup_modules(void)
+int php_startup_internal_extensions(void)
{
- zend_module_entry **ptr = php3_builtin_modules, **end = ptr+(sizeof(php3_builtin_modules)/sizeof(zend_module_entry *));
-
- while (ptr < end) {
- if (*ptr) {
- if (zend_startup_module(*ptr)==FAILURE) {
- return FAILURE;
- }
- }
- ptr++;
- }
- return SUCCESS;
+ return php_startup_extensions(php_builtin_extensions, EXTCOUNT);
}
-int module_global_startup_modules(void)
+int php_global_startup_internal_extensions(void)
{
- zend_module_entry **ptr = php3_builtin_modules, **end = ptr+(sizeof(php3_builtin_modules)/sizeof(zend_module_entry *));
-
- while (ptr < end) {
- if (*ptr) {
- if ((*ptr)->global_startup_func &&
- (*ptr)->global_startup_func()==FAILURE) {
- return FAILURE;
- }
- }
- ptr++;
- }
- return SUCCESS;
+ return php_global_startup_extensions(php_builtin_extensions, EXTCOUNT);
}
-int module_global_shutdown_modules(void)
+int php_global_shutdown_internal_extensions(void)
{
- zend_module_entry **ptr = php3_builtin_modules, **end = ptr+(sizeof(php3_builtin_modules)/sizeof(zend_module_entry *));
-
- while (ptr < end) {
- if (*ptr) {
- if ((*ptr)->global_shutdown_func &&
- (*ptr)->global_shutdown_func()==FAILURE) {
- return FAILURE;
- }
- }
- ptr++;
- }
- return SUCCESS;
+ return php_global_shutdown_extensions(php_builtin_extensions, EXTCOUNT);
}
/*
diff --git a/main/internal_functions_win32.c b/main/internal_functions_win32.c
index c93de106b5..b4666e8703 100644
--- a/main/internal_functions_win32.c
+++ b/main/internal_functions_win32.c
@@ -22,6 +22,7 @@
#include "php.h"
+#include "main.h"
#include "modules.h"
#include "internal_functions_registry.h"
#include "zend_compile.h"
@@ -62,7 +63,7 @@ unsigned char first_arg_allow_ref[] = { 1, BYREF_ALLOW };
unsigned char second_arg_force_ref[] = { 2, BYREF_NONE, BYREF_FORCE };
unsigned char second_arg_allow_ref[] = { 2, BYREF_NONE, BYREF_ALLOW };
-zend_module_entry *php3_builtin_modules[] = {
+zend_module_entry *php_builtin_extensions[] = {
phpext_dl_ptr,
phpext_file_ptr,
phpext_fsock_ptr,
@@ -89,52 +90,22 @@ zend_module_entry *php3_builtin_modules[] = {
phpext_assert_ptr
};
+#define EXTCOUNT (sizeof(php_builtin_extensions)/sizeof(zend_module_entry *))
+
-int module_startup_modules(void)
+int php_startup_internal_extensions(void)
{
- zend_module_entry **ptr = php3_builtin_modules, **end = ptr+(sizeof(php3_builtin_modules)/sizeof(zend_module_entry *));
-
- while (ptr < end) {
- if (*ptr) {
- if (zend_startup_module(*ptr)==FAILURE) {
- return FAILURE;
- }
- }
- ptr++;
- }
- return SUCCESS;
+ return php_startup_extensions(php_builtin_extensions, EXTCOUNT);
}
-int module_global_startup_modules(void)
+int php_global_startup_internal_extensions(void)
{
- zend_module_entry **ptr = php3_builtin_modules, **end = ptr+(sizeof(php3_builtin_modules)/sizeof(zend_module_entry *));
-
- while (ptr < end) {
- if (*ptr) {
- if ((*ptr)->global_startup_func &&
- (*ptr)->global_startup_func()==FAILURE) {
- return FAILURE;
- }
- }
- ptr++;
- }
- return SUCCESS;
+ return php_global_startup_extensions(php_builtin_extensions, EXTCOUNT);
}
-int module_global_shutdown_modules(void)
+int php_global_shutdown_internal_extensions(void)
{
- zend_module_entry **ptr = php3_builtin_modules, **end = ptr+(sizeof(php3_builtin_modules)/sizeof(zend_module_entry *));
-
- while (ptr < end) {
- if (*ptr) {
- if ((*ptr)->global_shutdown_func &&
- (*ptr)->global_shutdown_func()==FAILURE) {
- return FAILURE;
- }
- }
- ptr++;
- }
- return SUCCESS;
+ return php_global_shutdown_extensions(php_builtin_extensions, EXTCOUNT);
}
diff --git a/main/main.c b/main/main.c
index 08674d470a..f21d3563e7 100644
--- a/main/main.c
+++ b/main/main.c
@@ -854,6 +854,54 @@ static void core_globals_ctor(php_core_globals *core_globals)
#endif
+int php_startup_extensions(zend_module_entry **ptr, int count)
+{
+ zend_module_entry **end = ptr+count;
+
+ while (ptr < end) {
+ if (*ptr) {
+ if (zend_startup_module(*ptr)==FAILURE) {
+ return FAILURE;
+ }
+ }
+ ptr++;
+ }
+ return SUCCESS;
+}
+
+int php_global_startup_extensions(zend_module_entry **ptr, int count)
+{
+ zend_module_entry **end = ptr+count;
+
+ while (ptr < end) {
+ if (*ptr) {
+ if ((*ptr)->global_startup_func &&
+ (*ptr)->global_startup_func()==FAILURE) {
+ return FAILURE;
+ }
+ }
+ ptr++;
+ }
+ return SUCCESS;
+}
+
+int php_global_shutdown_extensions(zend_module_entry **ptr, int count)
+{
+ zend_module_entry **end = ptr+count;
+
+ while (ptr < end) {
+ if (*ptr) {
+ if ((*ptr)->global_shutdown_func &&
+ (*ptr)->global_shutdown_func()==FAILURE) {
+ return FAILURE;
+ }
+ }
+ ptr++;
+ }
+ return SUCCESS;
+}
+
+
int php_module_startup(sapi_module_struct *sf)
{
zend_utility_functions zuf;
@@ -934,8 +982,8 @@ int php_module_startup(sapi_module_struct *sf)
zend_set_utility_values(&zuv);
php_startup_SAPI_content_types();
- if (module_startup_modules() == FAILURE) {
- php_printf("Unable to start modules\n");
+ if (php_startup_internal_extensions() == FAILURE) {
+ php_printf("Unable to start builtin modules\n");
return FAILURE;
}
module_initialized = 1;
diff --git a/main/php.h b/main/php.h
index 47f0f367c8..6caa8c445c 100644
--- a/main/php.h
+++ b/main/php.h
@@ -312,9 +312,9 @@ extern void html_putc(char c);
#define phpin zendin
/* functions */
-int module_startup_modules(void);
-int module_global_startup_modules(void);
-int module_global_shutdown_modules(void);
+int php_startup_internal_extensions(void);
+int php_global_startup_internal_extensions(void);
+int php_global_shutdown_internal_extensions(void);
int mergesort(void *base, size_t nmemb, register size_t size, int (*cmp) (const void *, const void *));