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

Reply via email to