summaryrefslogtreecommitdiff
path: root/Zend/zend_extensions.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-04-29 10:20:40 +0000
committerZeev Suraski <zeev@php.net>2000-04-29 10:20:40 +0000
commit8aac6e7d3d94b2a180de0c13ea4fa6aee1a02605 (patch)
tree4480c65a36f915e79f77b537e64796ae3eda0656 /Zend/zend_extensions.c
parent0118f62195a1a5a4c0c4ce0313e9deb201dfaa15 (diff)
downloadphp-git-8aac6e7d3d94b2a180de0c13ea4fa6aee1a02605.tar.gz
- Add zend_llist_apply_with_arguments()
- Add a message handler to the extensions
Diffstat (limited to 'Zend/zend_extensions.c')
-rw-r--r--Zend/zend_extensions.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/Zend/zend_extensions.c b/Zend/zend_extensions.c
index de5df36157..f7f7c76ced 100644
--- a/Zend/zend_extensions.c
+++ b/Zend/zend_extensions.c
@@ -123,6 +123,8 @@ int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle)
extension = *new_extension;
extension.handle = handle;
+ zend_extension_dispatch_message(ZEND_EXTMSG_NEW_EXTENSION, &extension);
+
zend_llist_add_element(&zend_extensions, &extension);
zend_append_version_info(&extension);
@@ -168,6 +170,26 @@ void zend_extension_dtor(zend_extension *extension)
}
+static void zend_extension_message_dispatcher(zend_extension *extension, int num_args, va_list args)
+{
+ int message;
+ void *arg;
+
+ if (num_args!=2) {
+ return;
+ }
+ message = va_arg(args, int);
+ arg = va_arg(args, void *);
+ extension->message_handler(message, arg);
+}
+
+
+ZEND_API void zend_extension_dispatch_message(int message, void *arg)
+{
+ zend_llist_apply_with_arguments(&zend_extensions, (llist_apply_with_args_func_t) zend_extension_message_dispatcher, 2, message, arg);
+}
+
+
ZEND_API int zend_get_resource_handle(zend_extension *extension)
{
if (last_resource_number<ZEND_MAX_RESERVED_RESOURCES) {