{
#if ZEND_EXTENSIONS_SUPPORT
DL_HANDLE handle;
- zend_extension extension, *new_extension;
+ zend_extension *new_extension;
zend_extension_version_info *extension_version_info;
handle = DL_LOAD(path);
return FAILURE;
}
}
+ return zend_register_extension(new_extension, handle);
+#else
+ fprintf(stderr, "Extensions are not supported on this platform.\n");
+ return FAILURE;
+#endif
+}
+
+
+int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle)
+{
+ zend_extension extension;
+
extension = *new_extension;
extension.handle = handle;
zend_llist_add_element(&zend_extensions, &extension);
+ zend_append_version_info(&extension);
/*fprintf(stderr, "Loaded %s, version %s\n", extension.name, extension.version);*/
- zend_append_version_info(&extension);
return SUCCESS;
-#else
- fprintf(stderr, "Extensions are not supported on this platform.\n");
- return FAILURE;
-#endif
}
+
static void zend_extension_shutdown(zend_extension *extension)
{
#if ZEND_EXTENSIONS_SUPPORT
void zend_extension_dtor(zend_extension *extension)
{
#if ZEND_EXTENSIONS_SUPPORT
- DL_UNLOAD(extension->handle);
+ if (extension->handle) {
+ DL_UNLOAD(extension->handle);
+ }
#endif
}
ZEND_API extern zend_llist zend_extensions;
void zend_extension_dtor(zend_extension *extension);
-int zend_load_extension(char *path);
-int zend_load_extensions(char **extension_paths);
+ZEND_API int zend_load_extension(char *path);
+ZEND_API int zend_load_extensions(char **extension_paths);
+ZEND_API int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle);
void zend_append_version_info(zend_extension *extension);
void zend_shutdown_extensions(void);