From 22cdc1e592c2eadfe0ed739c2f3b275a8fc3fcb4 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Tue, 21 Jul 2015 11:16:43 +0200 Subject: [PATCH] provide RTLD_LAZY compatibility --- package.xml | 11 +++++------ php_raphf.c | 14 ++++++++++++++ php_raphf.h | 25 +++++++++++++++++++++++-- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/package.xml b/package.xml index ec9d962..f64b625 100644 --- a/package.xml +++ b/package.xml @@ -19,9 +19,9 @@ http://pear.php.net/dtd/package-2.0.xsd"> mike@php.net yes - 2013-12-04 + 2015-07-21 - 1.0.5 + 1.1.0 1.0.0 @@ -30,7 +30,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> BSD, revised @@ -60,8 +61,6 @@ http://pear.php.net/dtd/package-2.0.xsd"> raphf - - - + diff --git a/php_raphf.c b/php_raphf.c index 43cfa79..1de0fc0 100644 --- a/php_raphf.c +++ b/php_raphf.c @@ -125,6 +125,20 @@ void php_resource_factory_handle_dtor(php_resource_factory_t *f, } } +php_resource_factory_t *php_persistent_handle_resource_factory_init( + php_resource_factory_t *a, php_persistent_handle_factory_t *pf) +{ + return php_resource_factory_init(a, + php_persistent_handle_get_resource_factory_ops(), pf, + (void(*)(void*)) php_persistent_handle_abandon); +} + +zend_bool php_resource_factory_is_persistent(php_resource_factory_t *a) +{ + return a->dtor == (void(*)(void *)) php_persistent_handle_abandon; +} + + static inline php_persistent_handle_list_t *php_persistent_handle_list_init( php_persistent_handle_list_t *list) { diff --git a/php_raphf.h b/php_raphf.h index 3447059..4ca7b87 100644 --- a/php_raphf.h +++ b/php_raphf.h @@ -18,7 +18,7 @@ extern zend_module_entry raphf_module_entry; #define phpext_raphf_ptr &raphf_module_entry -#define PHP_RAPHF_VERSION "1.0.4" +#define PHP_RAPHF_VERSION "1.1.0" #ifdef PHP_WIN32 # define PHP_RAPHF_API __declspec(dllexport) @@ -362,7 +362,7 @@ PHP_RAPHF_API void *php_persistent_handle_accrete( * pf = php_persistent_handle_concede(NULL, "my", 2, * persistent_id_str, persistent_id_len, NULL, NULL TSRMLS_CC); * - * rf = php_resource_factory_init(NULL, ops, pf, php_persistent_handle_abandon); + * rf = php_persistent_handle_resource_factory_init(NULL, pf); * } else { * rf = php_resource_factory_init(NULL, &myops, NULL, NULL); * } @@ -373,6 +373,27 @@ PHP_RAPHF_API void *php_persistent_handle_accrete( PHP_RAPHF_API php_resource_factory_ops_t * php_persistent_handle_get_resource_factory_ops(void); +/** + * Create a resource factory for persistent handles. + * + * This will create a resource factory with persistent handle ops, which wraps + * the provided reource factory \a pf. + * + * @param a the persistent handle resource factory to initialize + * @param pf the resource factory to wrap + */ +PHP_RAPHF_API php_resource_factory_t * +php_persistent_handle_resource_factory_init(php_resource_factory_t *a, + php_persistent_handle_factory_t *pf); + +/** + * Check whether a resource factory is a persistent handle resource factory. + * + * @param a the resource factory to check + */ +PHP_RAPHF_API zend_bool php_resource_factory_is_persistent( + php_resource_factory_t *a); + /** * Clean persistent handles up. * -- 2.30.2