andrey Wed, 19 Oct 2011 15:04:12 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=318221
Log: api_ext to reverse_api Changed paths: U php/php-src/branches/PHP_5_4/ext/mysql/php_mysql.c U php/php-src/branches/PHP_5_4/ext/mysqli/mysqli.c U php/php-src/branches/PHP_5_4/ext/mysqlnd/config.w32 U php/php-src/branches/PHP_5_4/ext/mysqlnd/config9.m4 U php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c U php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.h A php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_reverse_api.c A php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_reverse_api.h U php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_structs.h U php/php-src/branches/PHP_5_4/ext/mysqlnd/php_mysqlnd.c U php/php-src/branches/PHP_5_4/ext/pdo_mysql/pdo_mysql.c U php/php-src/trunk/ext/mysql/php_mysql.c U php/php-src/trunk/ext/mysqli/mysqli.c U php/php-src/trunk/ext/mysqlnd/config.w32 U php/php-src/trunk/ext/mysqlnd/config9.m4 U php/php-src/trunk/ext/mysqlnd/mysqlnd.c U php/php-src/trunk/ext/mysqlnd/mysqlnd.h A php/php-src/trunk/ext/mysqlnd/mysqlnd_reverse_api.c A php/php-src/trunk/ext/mysqlnd/mysqlnd_reverse_api.h U php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h U php/php-src/trunk/ext/mysqlnd/php_mysqlnd.c U php/php-src/trunk/ext/pdo_mysql/pdo_mysql.c
Modified: php/php-src/branches/PHP_5_4/ext/mysql/php_mysql.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysql/php_mysql.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/branches/PHP_5_4/ext/mysql/php_mysql.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -530,7 +530,7 @@ /* }}} */ #ifdef MYSQL_USE_MYSQLND -static MYSQLND *mysql_convert_zv_to_mysqlnd(zval *zv TSRMLS_DC) +static MYSQLND * mysql_convert_zv_to_mysqlnd(zval * zv TSRMLS_DC) { php_mysql_conn *mysql; @@ -548,7 +548,7 @@ return mysql->conn; } -static mysqlnd_api_extension_t mysqlnd_api_ext = { +static MYSQLND_REVERSE_API mysql_reverse_api = { &mysql_module_entry, mysql_convert_zv_to_mysqlnd }; @@ -583,7 +583,7 @@ #endif #ifdef MYSQL_USE_MYSQLND - mysqlnd_register_api_extension(&mysqlnd_api_ext); + mysqlnd_reverse_api_register_api(&mysql_reverse_api TSRMLS_CC); #endif return SUCCESS; Modified: php/php-src/branches/PHP_5_4/ext/mysqli/mysqli.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqli/mysqli.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/branches/PHP_5_4/ext/mysqli/mysqli.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -528,12 +528,12 @@ /* }}} */ #ifdef MYSQLI_USE_MYSQLND -static MYSQLND *mysqli_convert_zv_to_mysqlnd(zval *zv TSRMLS_DC) +static MYSQLND *mysqli_convert_zv_to_mysqlnd(zval * zv TSRMLS_DC) { if (Z_TYPE_P(zv) == IS_OBJECT && Z_OBJCE_P(zv) == mysqli_link_class_entry) { - MY_MYSQL *mysql; - MYSQLI_RESOURCE *my_res; - mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(zv TSRMLS_CC); + MY_MYSQL * mysql; + MYSQLI_RESOURCE * my_res; + mysqli_object * intern = (mysqli_object *)zend_object_store_get_object(zv TSRMLS_CC); if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) { /* We know that we have a mysqli object, so this failure should be emitted */ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", intern->zo.ce->name); @@ -545,7 +545,7 @@ return NULL; } -static mysqlnd_api_extension_t mysqli_api_ext = { +static MYSQLND_REVERSE_API mysqli_reverse_api = { &mysqli_module_entry, mysqli_convert_zv_to_mysqlnd }; @@ -839,7 +839,7 @@ #ifdef MYSQLI_USE_MYSQLND - mysqlnd_register_api_extension(&mysqli_api_ext); + mysqlnd_reverse_api_register_api(&mysqli_reverse_api TSRMLS_CC); #endif return SUCCESS; Modified: php/php-src/branches/PHP_5_4/ext/mysqlnd/config.w32 =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqlnd/config.w32 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/branches/PHP_5_4/ext/mysqlnd/config.w32 2011-10-19 15:04:12 UTC (rev 318221) @@ -14,6 +14,7 @@ "mysqlnd_charset.c " + "mysqlnd_debug.c " + "mysqlnd_loaddata.c " + + "mysqlnd_reverse_api.c " + "mysqlnd_net.c " + "mysqlnd_plugin.c " + "mysqlnd_ps.c " + Modified: php/php-src/branches/PHP_5_4/ext/mysqlnd/config9.m4 =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqlnd/config9.m4 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/branches/PHP_5_4/ext/mysqlnd/config9.m4 2011-10-19 15:04:12 UTC (rev 318221) @@ -19,7 +19,7 @@ if test "$PHP_MYSQLND" != "no" || test "$PHP_MYSQLND_ENABLED" = "yes"; then mysqlnd_ps_sources="mysqlnd_ps.c mysqlnd_ps_codec.c" mysqlnd_base_sources="mysqlnd.c mysqlnd_alloc.c mysqlnd_bt.c mysqlnd_charset.c mysqlnd_wireprotocol.c \ - mysqlnd_loaddata.c mysqlnd_net.c \ + mysqlnd_loaddata.c mysqlnd_reverse_api.c mysqlnd_net.c \ mysqlnd_statistics.c mysqlnd_auth.c \ mysqlnd_result.c mysqlnd_result_meta.c mysqlnd_debug.c\ mysqlnd_block_alloc.c mysqlnd_plugin.c php_mysqlnd.c" Modified: php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -27,6 +27,7 @@ #include "mysqlnd_statistics.h" #include "mysqlnd_charset.h" #include "mysqlnd_debug.h" +#include "mysqlnd_reverse_api.h" /* TODO : @@ -68,8 +69,6 @@ static struct st_mysqlnd_plugin_core mysqlnd_plugin_core; -static HashTable mysqlnd_api_ext_ht; - /* {{{ mysqlnd_error_list_pdtor */ static void mysqlnd_error_list_pdtor(void * pDest) @@ -93,7 +92,7 @@ mysqlnd_stats_end(mysqlnd_global_stats); mysqlnd_global_stats = NULL; mysqlnd_library_initted = FALSE; - zend_hash_destroy(&mysqlnd_api_ext_ht); + mysqlnd_reverse_api_end(TSRMLS_C); } } /* }}} */ @@ -2547,46 +2546,12 @@ mysqlnd_debug_trace_plugin_register(TSRMLS_C); mysqlnd_register_builtin_authentication_plugins(TSRMLS_C); - zend_hash_init(&mysqlnd_api_ext_ht, 3, NULL, NULL, 1); + mysqlnd_reverse_api_init(TSRMLS_C); } } /* }}} */ -/* {{{ myslqnd_get_api_extensions */ -PHPAPI HashTable *mysqlnd_get_api_extensions() -{ - return &mysqlnd_api_ext_ht; -} -/* }}} */ -/* {{{ mysqlnd_register_api_extension */ -PHPAPI void mysqlnd_register_api_extension(mysqlnd_api_extension_t *apiext) -{ - zend_hash_add(&mysqlnd_api_ext_ht, apiext->module->name, strlen(apiext->module->name)+1, &apiext, sizeof(mysqlnd_api_extension_t), NULL); -} -/* }}} */ - -/* {{{ zval_to_mysqlnd */ -PHPAPI MYSQLND* zval_to_mysqlnd(zval *zv TSRMLS_DC) -{ - MYSQLND* retval; - mysqlnd_api_extension_t **elem; - - for (zend_hash_internal_pointer_reset(&mysqlnd_api_ext_ht); - zend_hash_get_current_data(&mysqlnd_api_ext_ht, (void **)&elem) == SUCCESS; - zend_hash_move_forward(&mysqlnd_api_ext_ht)) { - if ((*elem)->conversion_cb) { - retval = (*elem)->conversion_cb(zv TSRMLS_CC); - if (retval) { - return retval; - } - } - } - - return NULL; -} -/* }}} */ - /* {{{ mysqlnd_conn_get_methods */ PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods() { Modified: php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.h =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.h 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.h 2011-10-19 15:04:12 UTC (rev 318221) @@ -313,15 +313,6 @@ PHPAPI void mysqlnd_minfo_print_hash(zval *values); -typedef struct { - zend_module_entry *module; - MYSQLND *(*conversion_cb)(zval *zv TSRMLS_DC); -} mysqlnd_api_extension_t; - -PHPAPI HashTable *mysqlnd_get_api_extensions(); -PHPAPI void mysqlnd_register_api_extension(mysqlnd_api_extension_t *apiext); -PHPAPI MYSQLND* zval_to_mysqlnd(zval *zv TSRMLS_DC); - #endif /* MYSQLND_H */ Added: php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_reverse_api.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_reverse_api.c (rev 0) +++ php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_reverse_api.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -0,0 +1,103 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 2006-2011 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | lice...@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Andrey Hristov <and...@mysql.com> | + | Georg Richter <ge...@mysql.com> | + | Ulf Wendel <uwen...@mysql.com> | + +----------------------------------------------------------------------+ +*/ + +/* $Id: mysqlnd.c 317989 2011-10-10 20:49:28Z andrey $ */ +#include "php.h" +#include "mysqlnd.h" +#include "mysqlnd_wireprotocol.h" +#include "mysqlnd_priv.h" +#include "mysqlnd_result.h" +#include "mysqlnd_statistics.h" +#include "mysqlnd_charset.h" +#include "mysqlnd_debug.h" + + +static HashTable mysqlnd_api_ext_ht; + + +/* {{{ mysqlnd_reverse_api_init */ +PHPAPI void +mysqlnd_reverse_api_init(TSRMLS_D) +{ + zend_hash_init(&mysqlnd_api_ext_ht, 3, NULL, NULL, 1); +} +/* }}} */ + + +/* {{{ mysqlnd_reverse_api_end */ +PHPAPI void +mysqlnd_reverse_api_end(TSRMLS_D) +{ + zend_hash_destroy(&mysqlnd_api_ext_ht); +} +/* }}} */ + + +/* {{{ myslqnd_get_api_extensions */ +PHPAPI HashTable * +mysqlnd_reverse_api_get_api_list(TSRLMLS_D) +{ + return &mysqlnd_api_ext_ht; +} +/* }}} */ + + +/* {{{ mysqlnd_reverse_api_register_api */ +PHPAPI void +mysqlnd_reverse_api_register_api(MYSQLND_REVERSE_API * apiext TSRMLS_DC) +{ + zend_hash_add(&mysqlnd_api_ext_ht, apiext->module->name, strlen(apiext->module->name) + 1, &apiext, + sizeof(MYSQLND_REVERSE_API), NULL); +} +/* }}} */ + + +/* {{{ zval_to_mysqlnd */ +PHPAPI MYSQLND * +zval_to_mysqlnd(zval * zv TSRMLS_DC) +{ + MYSQLND * retval; + MYSQLND_REVERSE_API ** elem; + + for (zend_hash_internal_pointer_reset(&mysqlnd_api_ext_ht); + zend_hash_get_current_data(&mysqlnd_api_ext_ht, (void **)&elem) == SUCCESS; + zend_hash_move_forward(&mysqlnd_api_ext_ht)) + { + if ((*elem)->conversion_cb) { + retval = (*elem)->conversion_cb(zv TSRMLS_CC); + if (retval) { + return retval; + } + } + } + + return NULL; +} +/* }}} */ + + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ Added: php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_reverse_api.h =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_reverse_api.h (rev 0) +++ php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_reverse_api.h 2011-10-19 15:04:12 UTC (rev 318221) @@ -0,0 +1,45 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 2006-2011 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | lice...@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Andrey Hristov <and...@mysql.com> | + | Georg Richter <ge...@mysql.com> | + | Ulf Wendel <uwen...@mysql.com> | + +----------------------------------------------------------------------+ +*/ +/* $Id: mysqlnd.h 318051 2011-10-12 16:18:02Z andrey $ */ + +#ifndef MYSQLND_REVERSE_API_H +#define MYSQLND_REVERSE_API_H +struct st_mysqlnd_api_extension; + +PHPAPI void mysqlnd_reverse_api_init(TSRMLS_D); +PHPAPI void mysqlnd_reverse_api_end(TSRMLS_D); + +PHPAPI HashTable * mysqlnd_reverse_api_get_api_list(TSRMLS_D); + +PHPAPI void mysqlnd_reverse_api_register_api(struct st_mysqlnd_api_extension * apiext TSRMLS_DC); + +PHPAPI MYSQLND * zval_to_mysqlnd(zval * zv TSRMLS_DC); + +#endif /* MYSQLND_REVERSE_API_H */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ + Modified: php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_structs.h =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_structs.h 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_structs.h 2011-10-19 15:04:12 UTC (rev 318221) @@ -1023,4 +1023,11 @@ }; +typedef struct st_mysqlnd_reverse_api +{ + zend_module_entry * module; + MYSQLND *(*conversion_cb)(zval * zv TSRMLS_DC); +} MYSQLND_REVERSE_API; + + #endif /* MYSQLND_STRUCTS_H */ Modified: php/php-src/branches/PHP_5_4/ext/mysqlnd/php_mysqlnd.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/mysqlnd/php_mysqlnd.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/branches/PHP_5_4/ext/mysqlnd/php_mysqlnd.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -25,6 +25,7 @@ #include "mysqlnd_priv.h" #include "mysqlnd_debug.h" #include "mysqlnd_statistics.h" +#include "mysqlnd_reverse_api.h" #include "ext/standard/info.h" #include "ext/standard/php_smart_str.h" @@ -135,10 +136,10 @@ /* {{{ mysqlnd_minfo_dump_api_plugins */ static int -mysqlnd_minfo_dump_api_plugins(void *pDest, void * buf TSRMLS_DC) +mysqlnd_minfo_dump_api_plugins(void * pDest, void * buf TSRMLS_DC) { smart_str * buffer = (smart_str *) buf; - mysqlnd_api_extension_t *ext = *(mysqlnd_api_extension_t **) pDest; + MYSQLND_REVERSE_API * ext = *(MYSQLND_REVERSE_API **) pDest; if (buffer->len) { smart_str_appendc(buffer, ','); } @@ -188,7 +189,7 @@ php_info_print_table_row(2, "Loaded plugins", tmp_str.c); smart_str_free(&tmp_str); - zend_hash_apply_with_argument(mysqlnd_get_api_extensions(), mysqlnd_minfo_dump_api_plugins, &tmp_str TSRMLS_CC); + zend_hash_apply_with_argument(mysqlnd_reverse_api_get_api_list(TSRMLS_C), mysqlnd_minfo_dump_api_plugins, &tmp_str TSRMLS_CC); smart_str_0(&tmp_str); php_info_print_table_row(2, "API Extensions", tmp_str.c); smart_str_free(&tmp_str); Modified: php/php-src/branches/PHP_5_4/ext/pdo_mysql/pdo_mysql.c =================================================================== --- php/php-src/branches/PHP_5_4/ext/pdo_mysql/pdo_mysql.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/branches/PHP_5_4/ext/pdo_mysql/pdo_mysql.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -48,10 +48,11 @@ #endif #ifdef PDO_USE_MYSQLND -static MYSQLND *pdo_mysql_convert_zv_to_mysqlnd(zval *zv TSRMLS_DC) +#include "ext/mysqlnd/mysqlnd_reverse_api.h" +static MYSQLND * pdo_mysql_convert_zv_to_mysqlnd(zval * zv TSRMLS_DC) { if (Z_TYPE_P(zv) == IS_OBJECT && Z_OBJCE_P(zv) == php_pdo_get_dbh_ce()) { - pdo_dbh_t *dbh = zend_object_store_get_object(zv TSRMLS_CC); + pdo_dbh_t * dbh = zend_object_store_get_object(zv TSRMLS_CC); if (!dbh || dbh->driver != &pdo_mysql_driver) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Provided PDO instance is not using MySQL but %s", dbh->driver->driver_name); @@ -63,7 +64,7 @@ return NULL; } -static mysqlnd_api_extension_t pdo_mysql_api_ext = { +static MYSQLND_REVERSE_API pdo_mysql_reverse_api = { &pdo_mysql_module_entry, pdo_mysql_convert_zv_to_mysqlnd }; @@ -109,7 +110,7 @@ REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CIPHER", (long)PDO_MYSQL_ATTR_SSL_CIPHER); #ifdef PDO_USE_MYSQLND - mysqlnd_register_api_extension(&pdo_mysql_api_ext); + mysqlnd_reverse_api_register_api(&pdo_mysql_reverse_api TSRMLS_CC); #endif return php_pdo_register_driver(&pdo_mysql_driver); Modified: php/php-src/trunk/ext/mysql/php_mysql.c =================================================================== --- php/php-src/trunk/ext/mysql/php_mysql.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/trunk/ext/mysql/php_mysql.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -530,7 +530,7 @@ /* }}} */ #ifdef MYSQL_USE_MYSQLND -static MYSQLND *mysql_convert_zv_to_mysqlnd(zval *zv TSRMLS_DC) +static MYSQLND * mysql_convert_zv_to_mysqlnd(zval * zv TSRMLS_DC) { php_mysql_conn *mysql; @@ -548,7 +548,7 @@ return mysql->conn; } -static mysqlnd_api_extension_t mysqlnd_api_ext = { +static MYSQLND_REVERSE_API mysql_reverse_api = { &mysql_module_entry, mysql_convert_zv_to_mysqlnd }; @@ -583,7 +583,7 @@ #endif #ifdef MYSQL_USE_MYSQLND - mysqlnd_register_api_extension(&mysqlnd_api_ext); + mysqlnd_reverse_api_register_api(&mysql_reverse_api TSRMLS_CC); #endif return SUCCESS; Modified: php/php-src/trunk/ext/mysqli/mysqli.c =================================================================== --- php/php-src/trunk/ext/mysqli/mysqli.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/trunk/ext/mysqli/mysqli.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -528,12 +528,12 @@ /* }}} */ #ifdef MYSQLI_USE_MYSQLND -static MYSQLND *mysqli_convert_zv_to_mysqlnd(zval *zv TSRMLS_DC) +static MYSQLND *mysqli_convert_zv_to_mysqlnd(zval * zv TSRMLS_DC) { if (Z_TYPE_P(zv) == IS_OBJECT && Z_OBJCE_P(zv) == mysqli_link_class_entry) { - MY_MYSQL *mysql; - MYSQLI_RESOURCE *my_res; - mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(zv TSRMLS_CC); + MY_MYSQL * mysql; + MYSQLI_RESOURCE * my_res; + mysqli_object * intern = (mysqli_object *)zend_object_store_get_object(zv TSRMLS_CC); if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) { /* We know that we have a mysqli object, so this failure should be emitted */ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", intern->zo.ce->name); @@ -545,7 +545,7 @@ return NULL; } -static mysqlnd_api_extension_t mysqli_api_ext = { +static MYSQLND_REVERSE_API mysqli_reverse_api = { &mysqli_module_entry, mysqli_convert_zv_to_mysqlnd }; @@ -839,7 +839,7 @@ #ifdef MYSQLI_USE_MYSQLND - mysqlnd_register_api_extension(&mysqli_api_ext); + mysqlnd_reverse_api_register_api(&mysqli_reverse_api TSRMLS_CC); #endif return SUCCESS; Modified: php/php-src/trunk/ext/mysqlnd/config.w32 =================================================================== --- php/php-src/trunk/ext/mysqlnd/config.w32 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/trunk/ext/mysqlnd/config.w32 2011-10-19 15:04:12 UTC (rev 318221) @@ -14,6 +14,7 @@ "mysqlnd_charset.c " + "mysqlnd_debug.c " + "mysqlnd_loaddata.c " + + "mysqlnd_reverse_api.c " + "mysqlnd_net.c " + "mysqlnd_plugin.c " + "mysqlnd_ps.c " + Modified: php/php-src/trunk/ext/mysqlnd/config9.m4 =================================================================== --- php/php-src/trunk/ext/mysqlnd/config9.m4 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/trunk/ext/mysqlnd/config9.m4 2011-10-19 15:04:12 UTC (rev 318221) @@ -19,7 +19,7 @@ if test "$PHP_MYSQLND" != "no" || test "$PHP_MYSQLND_ENABLED" = "yes"; then mysqlnd_ps_sources="mysqlnd_ps.c mysqlnd_ps_codec.c" mysqlnd_base_sources="mysqlnd.c mysqlnd_alloc.c mysqlnd_bt.c mysqlnd_charset.c mysqlnd_wireprotocol.c \ - mysqlnd_loaddata.c mysqlnd_net.c \ + mysqlnd_loaddata.c mysqlnd_reverse_api.c mysqlnd_net.c \ mysqlnd_statistics.c mysqlnd_auth.c \ mysqlnd_result.c mysqlnd_result_meta.c mysqlnd_debug.c\ mysqlnd_block_alloc.c mysqlnd_plugin.c php_mysqlnd.c" Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -27,6 +27,7 @@ #include "mysqlnd_statistics.h" #include "mysqlnd_charset.h" #include "mysqlnd_debug.h" +#include "mysqlnd_reverse_api.h" /* TODO : @@ -68,8 +69,6 @@ static struct st_mysqlnd_plugin_core mysqlnd_plugin_core; -static HashTable mysqlnd_api_ext_ht; - /* {{{ mysqlnd_error_list_pdtor */ static void mysqlnd_error_list_pdtor(void * pDest) @@ -93,7 +92,7 @@ mysqlnd_stats_end(mysqlnd_global_stats); mysqlnd_global_stats = NULL; mysqlnd_library_initted = FALSE; - zend_hash_destroy(&mysqlnd_api_ext_ht); + mysqlnd_reverse_api_end(TSRMLS_C); } } /* }}} */ @@ -2547,46 +2546,12 @@ mysqlnd_debug_trace_plugin_register(TSRMLS_C); mysqlnd_register_builtin_authentication_plugins(TSRMLS_C); - zend_hash_init(&mysqlnd_api_ext_ht, 3, NULL, NULL, 1); + mysqlnd_reverse_api_init(TSRMLS_C); } } /* }}} */ -/* {{{ myslqnd_get_api_extensions */ -PHPAPI HashTable *mysqlnd_get_api_extensions() -{ - return &mysqlnd_api_ext_ht; -} -/* }}} */ -/* {{{ mysqlnd_register_api_extension */ -PHPAPI void mysqlnd_register_api_extension(mysqlnd_api_extension_t *apiext) -{ - zend_hash_add(&mysqlnd_api_ext_ht, apiext->module->name, strlen(apiext->module->name)+1, &apiext, sizeof(mysqlnd_api_extension_t), NULL); -} -/* }}} */ - -/* {{{ zval_to_mysqlnd */ -PHPAPI MYSQLND* zval_to_mysqlnd(zval *zv TSRMLS_DC) -{ - MYSQLND* retval; - mysqlnd_api_extension_t **elem; - - for (zend_hash_internal_pointer_reset(&mysqlnd_api_ext_ht); - zend_hash_get_current_data(&mysqlnd_api_ext_ht, (void **)&elem) == SUCCESS; - zend_hash_move_forward(&mysqlnd_api_ext_ht)) { - if ((*elem)->conversion_cb) { - retval = (*elem)->conversion_cb(zv TSRMLS_CC); - if (retval) { - return retval; - } - } - } - - return NULL; -} -/* }}} */ - /* {{{ mysqlnd_conn_get_methods */ PHPAPI struct st_mysqlnd_conn_methods * mysqlnd_conn_get_methods() { Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd.h 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd.h 2011-10-19 15:04:12 UTC (rev 318221) @@ -313,15 +313,6 @@ PHPAPI void mysqlnd_minfo_print_hash(zval *values); -typedef struct { - zend_module_entry *module; - MYSQLND *(*conversion_cb)(zval *zv TSRMLS_DC); -} mysqlnd_api_extension_t; - -PHPAPI HashTable *mysqlnd_get_api_extensions(); -PHPAPI void mysqlnd_register_api_extension(mysqlnd_api_extension_t *apiext); -PHPAPI MYSQLND* zval_to_mysqlnd(zval *zv TSRMLS_DC); - #endif /* MYSQLND_H */ Added: php/php-src/trunk/ext/mysqlnd/mysqlnd_reverse_api.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_reverse_api.c (rev 0) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_reverse_api.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -0,0 +1,103 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 2006-2011 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | lice...@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Andrey Hristov <and...@mysql.com> | + | Georg Richter <ge...@mysql.com> | + | Ulf Wendel <uwen...@mysql.com> | + +----------------------------------------------------------------------+ +*/ + +/* $Id: mysqlnd.c 317989 2011-10-10 20:49:28Z andrey $ */ +#include "php.h" +#include "mysqlnd.h" +#include "mysqlnd_wireprotocol.h" +#include "mysqlnd_priv.h" +#include "mysqlnd_result.h" +#include "mysqlnd_statistics.h" +#include "mysqlnd_charset.h" +#include "mysqlnd_debug.h" + + +static HashTable mysqlnd_api_ext_ht; + + +/* {{{ mysqlnd_reverse_api_init */ +PHPAPI void +mysqlnd_reverse_api_init(TSRMLS_D) +{ + zend_hash_init(&mysqlnd_api_ext_ht, 3, NULL, NULL, 1); +} +/* }}} */ + + +/* {{{ mysqlnd_reverse_api_end */ +PHPAPI void +mysqlnd_reverse_api_end(TSRMLS_D) +{ + zend_hash_destroy(&mysqlnd_api_ext_ht); +} +/* }}} */ + + +/* {{{ myslqnd_get_api_extensions */ +PHPAPI HashTable * +mysqlnd_reverse_api_get_api_list(TSRLMLS_D) +{ + return &mysqlnd_api_ext_ht; +} +/* }}} */ + + +/* {{{ mysqlnd_reverse_api_register_api */ +PHPAPI void +mysqlnd_reverse_api_register_api(MYSQLND_REVERSE_API * apiext TSRMLS_DC) +{ + zend_hash_add(&mysqlnd_api_ext_ht, apiext->module->name, strlen(apiext->module->name) + 1, &apiext, + sizeof(MYSQLND_REVERSE_API), NULL); +} +/* }}} */ + + +/* {{{ zval_to_mysqlnd */ +PHPAPI MYSQLND * +zval_to_mysqlnd(zval * zv TSRMLS_DC) +{ + MYSQLND * retval; + MYSQLND_REVERSE_API ** elem; + + for (zend_hash_internal_pointer_reset(&mysqlnd_api_ext_ht); + zend_hash_get_current_data(&mysqlnd_api_ext_ht, (void **)&elem) == SUCCESS; + zend_hash_move_forward(&mysqlnd_api_ext_ht)) + { + if ((*elem)->conversion_cb) { + retval = (*elem)->conversion_cb(zv TSRMLS_CC); + if (retval) { + return retval; + } + } + } + + return NULL; +} +/* }}} */ + + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ Added: php/php-src/trunk/ext/mysqlnd/mysqlnd_reverse_api.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_reverse_api.h (rev 0) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_reverse_api.h 2011-10-19 15:04:12 UTC (rev 318221) @@ -0,0 +1,44 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 2006-2011 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | lice...@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Andrey Hristov <and...@mysql.com> | + | Georg Richter <ge...@mysql.com> | + | Ulf Wendel <uwen...@mysql.com> | + +----------------------------------------------------------------------+ +*/ +/* $Id: mysqlnd.h 318051 2011-10-12 16:18:02Z andrey $ */ + +#ifndef MYSQLND_REVERSE_API_H +#define MYSQLND_REVERSE_API_H +struct st_mysqlnd_api_extension; + +PHPAPI void mysqlnd_reverse_api_init(TSRMLS_D); +PHPAPI void mysqlnd_reverse_api_end(TSRMLS_D); + +PHPAPI HashTable * mysqlnd_reverse_api_get_api_list(TSRMLS_D); + +PHPAPI void mysqlnd_reverse_api_register_api(struct st_mysqlnd_api_extension * apiext TSRMLS_DC); + +PHPAPI MYSQLND * zval_to_mysqlnd(zval * zv TSRMLS_DC); + +#endif /* MYSQLND_REVERSE_API_H */ + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim600: noet sw=4 ts=4 fdm=marker + * vim<600: noet sw=4 ts=4 + */ Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2011-10-19 15:04:12 UTC (rev 318221) @@ -1023,4 +1023,11 @@ }; +typedef struct st_mysqlnd_reverse_api +{ + zend_module_entry * module; + MYSQLND *(*conversion_cb)(zval * zv TSRMLS_DC); +} MYSQLND_REVERSE_API; + + #endif /* MYSQLND_STRUCTS_H */ Modified: php/php-src/trunk/ext/mysqlnd/php_mysqlnd.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/php_mysqlnd.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/trunk/ext/mysqlnd/php_mysqlnd.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -25,6 +25,7 @@ #include "mysqlnd_priv.h" #include "mysqlnd_debug.h" #include "mysqlnd_statistics.h" +#include "mysqlnd_reverse_api.h" #include "ext/standard/info.h" #include "ext/standard/php_smart_str.h" @@ -135,10 +136,10 @@ /* {{{ mysqlnd_minfo_dump_api_plugins */ static int -mysqlnd_minfo_dump_api_plugins(void *pDest, void * buf TSRMLS_DC) +mysqlnd_minfo_dump_api_plugins(void * pDest, void * buf TSRMLS_DC) { smart_str * buffer = (smart_str *) buf; - mysqlnd_api_extension_t *ext = *(mysqlnd_api_extension_t **) pDest; + MYSQLND_REVERSE_API * ext = *(MYSQLND_REVERSE_API **) pDest; if (buffer->len) { smart_str_appendc(buffer, ','); } @@ -188,7 +189,7 @@ php_info_print_table_row(2, "Loaded plugins", tmp_str.c); smart_str_free(&tmp_str); - zend_hash_apply_with_argument(mysqlnd_get_api_extensions(), mysqlnd_minfo_dump_api_plugins, &tmp_str TSRMLS_CC); + zend_hash_apply_with_argument(mysqlnd_reverse_api_get_api_list(TSRMLS_C), mysqlnd_minfo_dump_api_plugins, &tmp_str TSRMLS_CC); smart_str_0(&tmp_str); php_info_print_table_row(2, "API Extensions", tmp_str.c); smart_str_free(&tmp_str); Modified: php/php-src/trunk/ext/pdo_mysql/pdo_mysql.c =================================================================== --- php/php-src/trunk/ext/pdo_mysql/pdo_mysql.c 2011-10-19 14:57:59 UTC (rev 318220) +++ php/php-src/trunk/ext/pdo_mysql/pdo_mysql.c 2011-10-19 15:04:12 UTC (rev 318221) @@ -48,10 +48,11 @@ #endif #ifdef PDO_USE_MYSQLND -static MYSQLND *pdo_mysql_convert_zv_to_mysqlnd(zval *zv TSRMLS_DC) +#include "ext/mysqlnd/mysqlnd_reverse_api.h" +static MYSQLND * pdo_mysql_convert_zv_to_mysqlnd(zval * zv TSRMLS_DC) { if (Z_TYPE_P(zv) == IS_OBJECT && Z_OBJCE_P(zv) == php_pdo_get_dbh_ce()) { - pdo_dbh_t *dbh = zend_object_store_get_object(zv TSRMLS_CC); + pdo_dbh_t * dbh = zend_object_store_get_object(zv TSRMLS_CC); if (!dbh || dbh->driver != &pdo_mysql_driver) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Provided PDO instance is not using MySQL but %s", dbh->driver->driver_name); @@ -63,7 +64,7 @@ return NULL; } -static mysqlnd_api_extension_t pdo_mysql_api_ext = { +static MYSQLND_REVERSE_API pdo_mysql_reverse_api = { &pdo_mysql_module_entry, pdo_mysql_convert_zv_to_mysqlnd }; @@ -109,7 +110,7 @@ REGISTER_PDO_CLASS_CONST_LONG("MYSQL_ATTR_SSL_CIPHER", (long)PDO_MYSQL_ATTR_SSL_CIPHER); #ifdef PDO_USE_MYSQLND - mysqlnd_register_api_extension(&pdo_mysql_api_ext); + mysqlnd_reverse_api_register_api(&pdo_mysql_reverse_api TSRMLS_CC); #endif return php_pdo_register_driver(&pdo_mysql_driver);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php