|
|||||||||||
|
PHP mysqlnd svn commit: r508 - trunk/php6/ext/mysqli
From: <ahristov(at)mysql.com>
Date: Wed Jun 27 2007 - 04:27:59 EDT
Added: trunk/php6/ext/mysqli/php_mysqli_structs.h Modified: trunk/php6/ext/mysqli/config.w32 trunk/php6/ext/mysqli/config9.m4 trunk/php6/ext/mysqli/mysqli.c trunk/php6/ext/mysqli/mysqli_api.c trunk/php6/ext/mysqli/mysqli_driver.c trunk/php6/ext/mysqli/mysqli_embedded.c trunk/php6/ext/mysqli/mysqli_exception.c trunk/php6/ext/mysqli/mysqli_fe.c trunk/php6/ext/mysqli/mysqli_nonapi.c trunk/php6/ext/mysqli/mysqli_prop.c trunk/php6/ext/mysqli/mysqli_repl.c trunk/php6/ext/mysqli/mysqli_report.c trunk/php6/ext/mysqli/mysqli_warning.c trunk/php6/ext/mysqli/php_mysqli.h Log: Merge from PHP5 branch Modified: trunk/php6/ext/mysqli/config.w32
+// Note: The extension name is "mysqli", you enable it with "--with-mysqli".
ARG_WITH("mysqli", "MySQLi support", "no");
-ARG_ENABLE("mysqlnd", "Enable MySQL native driver", "no");
+ARG_ENABLE("mysqlnd", "MySQLi with mysqlnd support", "no");
-if (PHP_MYSQLND != "no") {
- AC_DEFINE('HAVE_MYSQLND', 1, "MySQL native driver support enabled")
- ADD_SOURCES(configure_module_dirname + "/mysqlnd",
- "mysqlnd.c mysqlnd_charset.c mysqlnd_wireprotocol.c \
- mysqlnd_ps.c mysqlnd_loaddata.c mysqlnd_palloc.c \
- mysqlnd_ps_codec.c mysqlnd_statistics.c mysqlnd_qcache.c \
- mysqlnd_result.c");
-}
+if (PHP_MYSQLI != "no") {
-if (PHP_MYSQLI != "no") {
- if (PHP_MYSQLND != "yes") {
- if (CHECK_LIB("libmysql.lib", "mysqli", PHP_MYSQLI) &&
- CHECK_HEADER_ADD_INCLUDE("mysql.h", "CFLAGS_MYSQLI", PHP_MYSQLI + "\\include;" + PHP_PHP_BUILD + "\\include\\mysql;" + PHP_MYSQLI)) {
- AC_DEFINE('HAVE_MYSQLILIB', 1, 'Have MySQLi library');
- ADD_SOURCES(configure_module_dirname, "mysqli_repl.c");
- } else {
- WARNING("mysqli not enabled; libraries and headers not found");
- }
++ if (PHP_MYSQLND == "no") { + if (CHECK_LIB("libmysql.lib", "mysqli", PHP_MYSQLI) && + CHECK_HEADER_ADD_INCLUDE("mysql.h", "CFLAGS_MYSQLI", PHP_MYSQLI + + "\\include;" + PHP_PHP_BUILD + + "\\include\\mysql;" + PHP_MYSQLI)) { + // No "mysqli_repl.c" when using "mysqlnd" + mysqli_extra_sources = "mysqli_repl.c"; + EXTENSION("mysqli", mysqli_source + " " + mysqli_extra_sources); + AC_DEFINE('HAVE_MYSQLILIB', 1, 'Have MySQLi library'); + } else { + WARNING("mysqli not enabled; libraries and headers not found"); + } + + } else { + + mysqlnd_source = + "mysqlnd.c " + +// "mysqlnd_alloc.c " + + "mysqlnd_charset.c " + + "mysqlnd_loaddata.c " + + "mysqlnd_palloc.c " + + "mysqlnd_ps.c " + + "mysqlnd_ps_codec.c " + + "mysqlnd_qcache.c " + + "mysqlnd_result.c " + + "mysqlnd_result_meta.c " + + "mysqlnd_statistics.c " + + "mysqlnd_wireprotocol.c"; + + EXTENSION("mysqli", mysqli_source); + // Specify that add "mysqlnd" sources, but use same object file + // directory as the "mysqli" sources + // FIXME the hard coded "ext/mysqli/mysqlnd" prevents pointing + // out sources in another directory? Like above: PHP_MYSQLI + "\\include;" + ADD_SOURCES("ext/mysqli/mysqlnd", mysqlnd_source, "mysqli"); + AC_DEFINE('HAVE_MYSQLILIB', 1, 'Have MySQLi library'); + AC_DEFINE('HAVE_MYSQLND' , 1, 'MySQL native driver support enabled');
}
Modified: trunk/php6/ext/mysqli/config9.m4
PHP_ARG_WITH(mysqli, for MySQLi support, -[ --with-mysqli[=FILE] Include MySQLi support. FILE is the optional pathname - to mysql_config]) PHP_ARG_ENABLE(embedded_mysqli, whether to enable embedded MySQLi support, [ --enable-embedded-mysqli MYSQLi: Enable embedded support], no, no) -if test -z "$PHP_MYSQLND"; then - PHP_ARG_ENABLE(mysqlnd, whether to enable MySQL native driver support, - [ --enable-mysqlnd MYSQLi: Enable MySQL native driver supprt], no, no) -fi +if test "$PHP_MYSQLI" = "mysqlnd"; then + dnl This needs to be set in any extension which wishes to use mysqlnd + PHP_MYSQLND_ENABLED=yes -dnl If some extension uses mysqlnd it will get compiled in PHP whether MYSQLi is enabled or not. -if test "$PHP_MYSQLND" = "yes"; then - AC_DEFINE(HAVE_MYSQLND, 1, [MySQL native driver support enabled]) - mysqlnd_sources="mysqlnd.c mysqlnd_charset.c mysqlnd_wireprotocol.c \ - mysqlnd_ps.c mysqlnd_loaddata.c mysqlnd_palloc.c \ - mysqlnd_ps_codec.c mysqlnd_statistics.c mysqlnd_qcache.c \ - mysqlnd_result.c mysqlnd_result_meta.c" +elif test "$PHP_MYSQLI" != "no"; then
+dnl Build extension
mysqli_fe.c mysqli_report.c mysqli_driver.c mysqli_warning.c \
mysqli_exception.c $extra_sources"
PHP_NEW_EXTENSION(mysqli, $mysqli_sources, $ext_shared)
PHP_SUBST(MYSQLI_SHARED_LIBADD)
+ + dnl These 3 lines are neeeded to be able to build ext/mysql and/or ext/mysqli with/without mysqlnd. + dnl Need to do this here for the file to be always available. + $php_shtool mkdir -p ext/mysqli/ + echo > ext/mysqli/php_have_mysqlnd.h + test "$PHP_MYSQLI" = "mysqlnd" && PHP_DEFINE(HAVE_MYSQLND, 1, [ext/mysqli]) fi + +dnl MySQLnd build +dnl If some extension uses mysqlnd it will get compiled in PHP whether MYSQLi is enabled or not. +if test "$PHP_MYSQLND_ENABLED" = "yes"; then + mysqlnd_sources="mysqlnd.c mysqlnd_charset.c mysqlnd_wireprotocol.c \ + mysqlnd_ps.c mysqlnd_loaddata.c mysqlnd_palloc.c \ + mysqlnd_ps_codec.c mysqlnd_statistics.c mysqlnd_qcache.c\ + mysqlnd_result.c mysqlnd_result_meta.c" + + PHP_ADD_SOURCES(ext/mysqli/mysqlnd, $mysqlnd_sources) + PHP_ADD_BUILD_DIR([ext/mysqli/mysqlnd]) + PHP_INSTALL_HEADERS([ext/mysqli/mysqlnd]) +fi + Modified: trunk/php6/ext/mysqli/mysqli.c
#define MYSQLI_STORE_RESULT 0 Modified: trunk/php6/ext/mysqli/mysqli_api.c
/* {{{ proto mixed mysqli_affected_rows(object link) U Get number of affected rows in previous MySQL operation */ Modified: trunk/php6/ext/mysqli/mysqli_driver.c
Modified: trunk/php6/ext/mysqli/mysqli_embedded.c
/* {{{ proto bool mysqli_embedded_server_start(bool start, array arguments, array groups) initialize and start embedded server */ Modified: trunk/php6/ext/mysqli/mysqli_exception.c
/* {{{ mysqli_exception_methods[] Modified: trunk/php6/ext/mysqli/mysqli_fe.c
static Modified: trunk/php6/ext/mysqli/mysqli_nonapi.c
#define SAFE_STR(a) ((a)?a:"") Modified: trunk/php6/ext/mysqli/mysqli_prop.c
#define CHECK_STATUS(value) \ if (((MYSQLI_RESOURCE *)obj->ptr)->status < value ) { \ Modified: trunk/php6/ext/mysqli/mysqli_repl.c
/* {{{ proto void mysqli_disable_reads_from_master(object link) */ Modified: trunk/php6/ext/mysqli/mysqli_report.c
/* {{{ proto bool mysqli_report(int flags) U sets report level */ Modified: trunk/php6/ext/mysqli/mysqli_warning.c
/* {{{ void php_clear_warnings() */ Modified: trunk/php6/ext/mysqli/php_mysqli.h
-/* A little hack to prevent build break, when mysql is used together with - * c-client, which also defines LIST. - */ -#ifdef LIST -#undef LIST -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - - -#if defined(HAVE_MYSQLND) -#include "ext/mysqli/mysqlnd/mysqlnd.h" -#include "ext/mysqli/mysqli_mysqlnd.h" -#else -#include #ifndef PHP_MYSQLI_H #define PHP_MYSQLI_H -#define MYSQLI_VERSION_ID 101009
-enum mysqli_status {
- MYSQLI_STATUS_UNKNOWN=0,
- MYSQLI_STATUS_CLEARED,
- MYSQLI_STATUS_INITIALIZED,
- MYSQLI_STATUS_VALID
-};
-
-typedef struct {
- void *buf; /* buffer: binary or unicode data */
- unsigned int buflen; /* buffer length */
- zend_uchar buftype; /* buffer type */
- UErrorCode status; /* error code */
-} MYSQLI_STRING;
-
-typedef struct {
- ulong buflen;
- char *val;
- ulong type;
-} VAR_BUFFER;
-
-typedef struct {
- unsigned int var_cnt;
- VAR_BUFFER *buf;
- zval **vars;
- char *is_null;
-} BIND_BUFFER;
-
-typedef struct {
- MYSQL_STMT *stmt;
- BIND_BUFFER param;
- BIND_BUFFER result;
- char *query;
-} MY_STMT;
-
-typedef struct {
- MYSQL *mysql;
- zval *li_read;
- php_stream *li_stream;
- zend_bool persistent;
- unsigned int multi_query;
- UConverter *conv;
-} MY_MYSQL;
-
-typedef struct {
- int mode;
- int socket;
- FILE *fp;
-} PROFILER;
-
-typedef struct {
- void *ptr; /* resource: (mysql, result, stmt) */
- void *info; /* additional buffer */
- enum mysqli_status status; /* object status */
-} MYSQLI_RESOURCE;
-
-typedef struct _mysqli_object {
- zend_object zo;
- void *ptr;
- HashTable *prop_handler;
-} mysqli_object; /* extends zend_object */
-
-typedef struct st_mysqli_warning MYSQLI_WARNING;
-
-struct st_mysqli_warning {
- zval reason;
- zval sqlstate;
- int errorno;
- MYSQLI_WARNING *next;
-};
-
-typedef struct _mysqli_property_entry {
- char *pname;
- int (*r_func)(mysqli_object *obj, zval **retval TSRMLS_DC);
- int (*w_func)(mysqli_object *obj, zval *value TSRMLS_DC);
-} mysqli_property_entry;
-
-#if !defined(HAVE_MYSQLND)
-typedef struct {
- char error_msg[LOCAL_INFILE_ERROR_LEN];
- void *userdata;
-} mysqli_local_infile;
-#endif
-
-#define phpext_mysqli_ptr &mysqli_module_entry
-
-#ifdef PHP_WIN32
-#define PHP_MYSQLI_API __declspec(dllexport)
-#define MYSQLI_LLU_SPEC "%I64u"
-#define MYSQLI_LL_SPEC "%I64d"
-#define L64(x) x##i64
-typedef __int64 my_longlong;
-#else
-#define PHP_MYSQLI_API
-#define MYSQLI_LLU_SPEC "%llu"
-#define MYSQLI_LL_SPEC "%lld"
-#define L64(x) xlistsL
-typedef long long my_longlong;
-#endif
-
-#ifdef ZTS
-#include "TSRM.h"
-#endif
-
-#define PHP_MYSQLI_EXPORT(__type) PHP_MYSQLI_API __type
-
-extern zend_module_entry mysqli_module_entry;
-extern zend_function_entry mysqli_functions[];
-extern zend_function_entry mysqli_link_methods[];
-extern zend_function_entry mysqli_stmt_methods[];
-extern zend_function_entry mysqli_result_methods[];
-extern zend_function_entry mysqli_driver_methods[];
-extern zend_function_entry mysqli_warning_methods[];
-extern zend_function_entry mysqli_exception_methods[];
-
-extern mysqli_property_entry mysqli_link_property_entries[];
-extern mysqli_property_entry mysqli_result_property_entries[];
-extern mysqli_property_entry mysqli_stmt_property_entries[];
-extern mysqli_property_entry mysqli_driver_property_entries[];
-extern mysqli_property_entry mysqli_warning_property_entries[];
-
-#ifdef HAVE_MYSQLND
-extern MYSQLND_ZVAL_PCACHE *mysqli_mysqlnd_zval_cache;
-extern MYSQLND_QCACHE *mysqli_mysqlnd_qcache;
-#endif
-
-extern void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flag, int into_object);
-extern void php_clear_stmt_bind(MY_STMT *stmt TSRMLS_DC);
-extern void php_clear_mysql(MY_MYSQL *);
-extern MYSQLI_WARNING *php_get_warnings(MYSQL *mysql TSRMLS_DC);
-extern void php_clear_warnings(MYSQLI_WARNING *w);
-extern void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type);
-extern void php_mysqli_report_error(const char *sqlstate, int errorno, const char *error TSRMLS_DC);
-extern void php_mysqli_report_index(const char *query, unsigned int status TSRMLS_DC);
-extern int php_local_infile_init(void **, const char *, void *);
-extern int php_local_infile_read(void *, char *, uint);
-extern void php_local_infile_end(void *);
-extern int php_local_infile_error(void *, char *, uint);
-extern void php_set_local_infile_handler_default(MY_MYSQL *);
-extern void php_mysqli_throw_sql_exception(char *sqlstate, int errorno TSRMLS_DC, char *format, ...);
-extern zend_class_entry *mysqli_link_class_entry;
-extern zend_class_entry *mysqli_stmt_class_entry;
-extern zend_class_entry *mysqli_result_class_entry;
-extern zend_class_entry *mysqli_driver_class_entry;
-extern zend_class_entry *mysqli_warning_class_entry;
-extern zend_class_entry *mysqli_exception_class_entry;
-extern int php_le_pmysqli(void);
-
-#ifdef HAVE_SPL
-extern PHPAPI zend_class_entry *spl_ce_RuntimeException;
-#endif
-
-PHP_MYSQLI_EXPORT(zend_object_value) mysqli_objects_new(zend_class_entry * TSRMLS_DC);
-
-#define MYSQLI_DISABLE_MQ if (mysql->multi_query) { \
- mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_OFF); \
- mysql->multi_query = 0; \
-}
-
-#define MYSQLI_ENABLE_MQ if (!mysql->multi_query) { \
- mysql_set_server_option(mysql->mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); \
- mysql->multi_query = 1; \
-}
-
-#define REGISTER_MYSQLI_CLASS_ENTRY(name, mysqli_entry, class_functions) { \
- zend_class_entry ce; \
- INIT_CLASS_ENTRY(ce, name,class_functions); \
- ce.create_object = mysqli_objects_new; \
- mysqli_entry = zend_register_internal_class(&ce TSRMLS_CC); \
-} \
-
-#define MYSQLI_REGISTER_RESOURCE_EX(__ptr, __zval) \
- ((mysqli_object *) zend_object_store_get_object(__zval TSRMLS_CC))->ptr = __ptr;
-
-#define MYSQLI_RETURN_RESOURCE(__ptr, __ce) \
- Z_TYPE_P(return_value) = IS_OBJECT; \
- (return_value)->value.obj = mysqli_objects_new(__ce TSRMLS_CC); \
- MYSQLI_REGISTER_RESOURCE_EX(__ptr, return_value)
-
-#define MYSQLI_REGISTER_RESOURCE(__ptr, __ce) \
-{\
- zval *object = getThis();\
- if (!object || !instanceof_function(Z_OBJCE_P(object), mysqli_link_class_entry TSRMLS_CC)) {\
- object = return_value;\
- Z_TYPE_P(object) = IS_OBJECT;\
- (object)->value.obj = mysqli_objects_new(__ce TSRMLS_CC);\
- }\
- MYSQLI_REGISTER_RESOURCE_EX(__ptr, object)\
-}
-
-#define MYSQLI_FETCH_RESOURCE(__ptr, __type, __id, __name, __check) \
-{ \
- MYSQLI_RESOURCE *my_res; \
- mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
- if (!(my_res = (MYSQLI_RESOURCE *)intern->ptr)) {\
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %v", intern->zo.ce->name);\
- RETURN_NULL();\
- }\
- __ptr = (__type)my_res->ptr; \
- if (__check && my_res->status < __check) { \
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid object or resource %v\n", intern->zo.ce->name); \
- RETURN_NULL();\
- }\
-}
-
-#define MYSQLI_SET_STATUS(__id, __value) \
-{ \
- mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
- ((MYSQLI_RESOURCE *)intern->ptr)->status = __value; \
-} \
-
-#define MYSQLI_CLEAR_RESOURCE(__id) \
-{ \
- mysqli_object *intern = (mysqli_object *)zend_object_store_get_object(*(__id) TSRMLS_CC);\
- efree(intern->ptr); \
- intern->ptr = NULL; \
-}
-
-#define MYSQLI_RETURN_LONG_LONG(__val) \
-{ \
- if ((__val) < LONG_MAX) { \
- RETURN_LONG((__val)); \
- } else { \
- char *ret; \
- int l = spprintf(&ret, 0, "%llu", (__val)); \
- RETURN_STRINGL(ret, l, 0); \
- } \
-}
-
-#define MYSQLI_ADD_PROPERTIES(a,b) \
-{ \
- int i = 0; \
- while (b[i].pname != NULL) { \
- mysqli_add_property(a, b[i].pname, (mysqli_read_t)b[i].r_func, (mysqli_write_t)b[i].w_func TSRMLS_CC); \
- i++; \
- }\
-}
-
-#if WIN32|WINNT
-#define SCLOSE(a) closesocket(a)
-#else
-#define SCLOSE(a) close(a)
-#endif
-
-#define MYSQLI_STORE_RESULT 0
-#define MYSQLI_USE_RESULT 1
-
-/* for mysqli_fetch_assoc */
-#define MYSQLI_ASSOC 1
-#define MYSQLI_NUM 2
-#define MYSQLI_BOTH 3
-
-/* for mysqli_bind_param */
-#define MYSQLI_BIND_INT 1
-#define MYSQLI_BIND_DOUBLE 2
-#define MYSQLI_BIND_STRING 3
-#define MYSQLI_BIND_SEND_DATA 4
-
-/* fetch types */
-#define FETCH_SIMPLE 1
-#define FETCH_RESULT 2
-
-/*** REPORT MODES ***/
-#define MYSQLI_REPORT_OFF 0
-#define MYSQLI_REPORT_ERROR 1
-#define MYSQLI_REPORT_STRICT 2
-#define MYSQLI_REPORT_INDEX 4
-#define MYSQLI_REPORT_CLOSE 8
-#define MYSQLI_REPORT_ALL 255
-
-#define MYSQLI_REPORT_MYSQL_ERROR(mysql) \
-if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_errno(mysql)) { \
- php_mysqli_report_error(mysql_sqlstate(mysql), mysql_errno(mysql), mysql_error(mysql) TSRMLS_CC); \
-}
-
-#define MYSQLI_REPORT_STMT_ERROR(stmt) \
-if ((MyG(report_mode) & MYSQLI_REPORT_ERROR) && mysql_stmt_errno(stmt)) { \
- php_mysqli_report_error(mysql_stmt_sqlstate(stmt), mysql_stmt_errno(stmt), mysql_stmt_error(stmt) TSRMLS_CC); \
-}
-
-PHP_MYSQLI_API void mysqli_register_link(zval *return_value, void *link TSRMLS_DC);
-PHP_MYSQLI_API void mysqli_register_stmt(zval *return_value, void *stmt TSRMLS_DC);
-PHP_MYSQLI_API void mysqli_register_result(zval *return_value, void *result TSRMLS_DC);
-PHP_MYSQLI_API void php_mysqli_set_error(long mysql_errno, char *mysql_err TSRMLS_DC);
-
PHP_MINIT_FUNCTION(mysqli);
PHP_MSHUTDOWN_FUNCTION(mysqli); PHP_RINIT_FUNCTION(mysqli); @@ -357,9 +35,7 @@ PHP_FUNCTION(mysqli_autocommit); PHP_FUNCTION(mysqli_change_user); PHP_FUNCTION(mysqli_character_set_name);-#ifdef HAVE_MYSQLI_SET_CHARSET PHP_FUNCTION(mysqli_set_charset); -#endif PHP_FUNCTION(mysqli_close); PHP_FUNCTION(mysqli_commit); PHP_FUNCTION(mysqli_connect); @@ -374,9 +50,7 @@ PHP_FUNCTION(mysqli_enable_rpl_parse); PHP_FUNCTION(mysqli_errno); PHP_FUNCTION(mysqli_error); -#ifdef HAVE_MYSQLND PHP_FUNCTION(mysqli_fetch_all); -#endif PHP_FUNCTION(mysqli_fetch_array); PHP_FUNCTION(mysqli_fetch_assoc); PHP_FUNCTION(mysqli_fetch_object); @@ -389,14 +63,10 @@ PHP_FUNCTION(mysqli_field_seek); PHP_FUNCTION(mysqli_field_tell); PHP_FUNCTION(mysqli_free_result); -#if defined(HAVE_MYSQLND) PHP_FUNCTION(mysqli_get_cache_stats); PHP_FUNCTION(mysqli_get_client_stats); PHP_FUNCTION(mysqli_get_connection_stats);-#endif -#ifdef HAVE_MYSQLI_GET_CHARSET PHP_FUNCTION(mysqli_get_charset); -#endif PHP_FUNCTION(mysqli_get_client_info); PHP_FUNCTION(mysqli_get_client_version); PHP_FUNCTION(mysqli_get_host_info); @@ -456,9 +126,7 @@ PHP_FUNCTION(mysqli_stmt_errno); PHP_FUNCTION(mysqli_stmt_error); PHP_FUNCTION(mysqli_stmt_free_result); -#if defined(HAVE_MYSQLND) PHP_FUNCTION(mysqli_stmt_get_result); -#endif PHP_FUNCTION(mysqli_stmt_get_warnings); PHP_FUNCTION(mysqli_stmt_reset); PHP_FUNCTION(mysqli_stmt_insert_id); @@ -476,45 +144,10 @@ ZEND_FUNCTION(mysqli_driver_construct); ZEND_METHOD(mysqli_warning,__construct); -ZEND_BEGIN_MODULE_GLOBALS(mysqli) - long default_link; - long num_links; - long max_links; - long cache_size; - unsigned int default_port; - char *default_host; - char *default_user; - char *default_socket; - char *default_pw; - int reconnect; - int strict; - long error_no; - char *error_msg; - int report_mode; - HashTable *report_ht; - unsigned int multi_query; - unsigned int embedded; -#ifdef HAVE_MYSQLND - MYSQLND_THD_ZVAL_PCACHE *mysqlnd_thd_zval_cache; -#endif -ZEND_END_MODULE_GLOBALS(mysqli) +#define phpext_mysqli_ptr &mysqli_module_entry -#define MYSQLI_PROPERTY(a) extern int a(mysqli_object *obj, zval **retval TSRMLS_DC) - -MYSQLI_PROPERTY(my_prop_link_host); - -#ifdef ZTS -#define MyG(v) TSRMG(mysqli_globals_id, zend_mysqli_globals *, v) -#else -#define MyG(v) (mysqli_globals.v) -#endif - -#define my_estrdup(x) (x) ? estrdup(x) : NULL -#define my_efree(x) if (x) efree(x) - -ZEND_EXTERN_MODULE_GLOBALS(mysqli) - #endif /* PHP_MYSQLI.H */ Added: trunk/php6/ext/mysqli/php_mysqli_structs.h
-- MySQL Code Commits Mailing List For list archives: http://lists.mysql.com/commits To unsubscribe: http://lists.mysql.com/commits?unsub=lists@pantek.comReceived on Wed Jun 27 04:28:30 2007 This archive was generated by hypermail 2.1.8 : Wed Jun 27 2007 - 04:30:02 EDT |
||||||||||
|
|||||||||||