Browse Source
Fix for bug #52654 mysqli doesn't install headers with structures it uses
pull/12/head
Fix for bug #52654 mysqli doesn't install headers with structures it uses
pull/12/head
11 changed files with 346 additions and 288 deletions
-
1ext/mysqli/config.m4
-
84ext/mysqli/mysqli.c
-
1ext/mysqli/mysqli_api.c
-
1ext/mysqli/mysqli_exception.c
-
1ext/mysqli/mysqli_fe.c
-
135ext/mysqli/mysqli_fe.h
-
1ext/mysqli/mysqli_nonapi.c
-
156ext/mysqli/mysqli_priv.h
-
1ext/mysqli/mysqli_prop.c
-
1ext/mysqli/mysqli_warning.c
-
252ext/mysqli/php_mysqli_structs.h
@ -0,0 +1,135 @@ |
|||||
|
/* |
||||
|
+----------------------------------------------------------------------+ |
||||
|
| PHP Version 5 | |
||||
|
+----------------------------------------------------------------------+ |
||||
|
| Copyright (c) 1997-2010 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 | |
||||
|
| license@php.net so we can mail you a copy immediately. | |
||||
|
+----------------------------------------------------------------------+ |
||||
|
| Author: Georg Richter <georg@php.net> | |
||||
|
Andrey Hristov <andrey@php.net> | |
||||
|
+----------------------------------------------------------------------+ |
||||
|
|
||||
|
$Id: php_mysqli_structs.h 302179 2010-08-13 09:57:04Z andrey $ |
||||
|
*/ |
||||
|
|
||||
|
#ifndef MYSQLI_FE_H |
||||
|
#define MYSQLI_FE_H |
||||
|
|
||||
|
PHP_FUNCTION(mysqli); |
||||
|
PHP_FUNCTION(mysqli_affected_rows); |
||||
|
PHP_FUNCTION(mysqli_autocommit); |
||||
|
PHP_FUNCTION(mysqli_change_user); |
||||
|
PHP_FUNCTION(mysqli_character_set_name); |
||||
|
PHP_FUNCTION(mysqli_set_charset); |
||||
|
PHP_FUNCTION(mysqli_close); |
||||
|
PHP_FUNCTION(mysqli_commit); |
||||
|
PHP_FUNCTION(mysqli_connect); |
||||
|
PHP_FUNCTION(mysqli_connect_errno); |
||||
|
PHP_FUNCTION(mysqli_connect_error); |
||||
|
PHP_FUNCTION(mysqli_data_seek); |
||||
|
PHP_FUNCTION(mysqli_debug); |
||||
|
PHP_FUNCTION(mysqli_dump_debug_info); |
||||
|
PHP_FUNCTION(mysqli_errno); |
||||
|
PHP_FUNCTION(mysqli_error); |
||||
|
PHP_FUNCTION(mysqli_fetch_all); |
||||
|
PHP_FUNCTION(mysqli_fetch_array); |
||||
|
PHP_FUNCTION(mysqli_fetch_assoc); |
||||
|
PHP_FUNCTION(mysqli_fetch_object); |
||||
|
PHP_FUNCTION(mysqli_fetch_field); |
||||
|
PHP_FUNCTION(mysqli_fetch_fields); |
||||
|
PHP_FUNCTION(mysqli_fetch_field_direct); |
||||
|
PHP_FUNCTION(mysqli_fetch_lengths); |
||||
|
PHP_FUNCTION(mysqli_fetch_row); |
||||
|
PHP_FUNCTION(mysqli_field_count); |
||||
|
PHP_FUNCTION(mysqli_field_seek); |
||||
|
PHP_FUNCTION(mysqli_field_tell); |
||||
|
PHP_FUNCTION(mysqli_free_result); |
||||
|
PHP_FUNCTION(mysqli_get_cache_stats); |
||||
|
PHP_FUNCTION(mysqli_get_client_stats); |
||||
|
PHP_FUNCTION(mysqli_get_connection_stats); |
||||
|
PHP_FUNCTION(mysqli_get_charset); |
||||
|
PHP_FUNCTION(mysqli_get_client_info); |
||||
|
PHP_FUNCTION(mysqli_get_client_version); |
||||
|
PHP_FUNCTION(mysqli_get_host_info); |
||||
|
PHP_FUNCTION(mysqli_get_proto_info); |
||||
|
PHP_FUNCTION(mysqli_get_server_info); |
||||
|
PHP_FUNCTION(mysqli_get_server_version); |
||||
|
PHP_FUNCTION(mysqli_get_warnings); |
||||
|
PHP_FUNCTION(mysqli_info); |
||||
|
PHP_FUNCTION(mysqli_insert_id); |
||||
|
PHP_FUNCTION(mysqli_init); |
||||
|
PHP_FUNCTION(mysqli_kill); |
||||
|
PHP_FUNCTION(mysqli_link_construct); |
||||
|
PHP_FUNCTION(mysqli_set_local_infile_default); |
||||
|
PHP_FUNCTION(mysqli_set_local_infile_handler); |
||||
|
PHP_FUNCTION(mysqli_more_results); |
||||
|
PHP_FUNCTION(mysqli_multi_query); |
||||
|
PHP_FUNCTION(mysqli_next_result); |
||||
|
PHP_FUNCTION(mysqli_num_fields); |
||||
|
PHP_FUNCTION(mysqli_num_rows); |
||||
|
PHP_FUNCTION(mysqli_options); |
||||
|
PHP_FUNCTION(mysqli_ping); |
||||
|
PHP_FUNCTION(mysqli_poll); |
||||
|
PHP_FUNCTION(mysqli_prepare); |
||||
|
PHP_FUNCTION(mysqli_query); |
||||
|
PHP_FUNCTION(mysqli_stmt_result_metadata); |
||||
|
PHP_FUNCTION(mysqli_report); |
||||
|
PHP_FUNCTION(mysqli_read_query_result); |
||||
|
PHP_FUNCTION(mysqli_real_connect); |
||||
|
PHP_FUNCTION(mysqli_real_query); |
||||
|
PHP_FUNCTION(mysqli_real_escape_string); |
||||
|
PHP_FUNCTION(mysqli_reap_async_query); |
||||
|
PHP_FUNCTION(mysqli_rollback); |
||||
|
PHP_FUNCTION(mysqli_row_seek); |
||||
|
PHP_FUNCTION(mysqli_select_db); |
||||
|
PHP_FUNCTION(mysqli_stmt_attr_get); |
||||
|
PHP_FUNCTION(mysqli_stmt_attr_set); |
||||
|
PHP_FUNCTION(mysqli_stmt_bind_param); |
||||
|
PHP_FUNCTION(mysqli_stmt_bind_result); |
||||
|
PHP_FUNCTION(mysqli_stmt_execute); |
||||
|
PHP_FUNCTION(mysqli_stmt_field_count); |
||||
|
PHP_FUNCTION(mysqli_stmt_init); |
||||
|
PHP_FUNCTION(mysqli_stmt_prepare); |
||||
|
PHP_FUNCTION(mysqli_stmt_fetch); |
||||
|
PHP_FUNCTION(mysqli_stmt_param_count); |
||||
|
PHP_FUNCTION(mysqli_stmt_send_long_data); |
||||
|
PHP_FUNCTION(mysqli_embedded_server_end); |
||||
|
PHP_FUNCTION(mysqli_embedded_server_start); |
||||
|
PHP_FUNCTION(mysqli_sqlstate); |
||||
|
PHP_FUNCTION(mysqli_ssl_set); |
||||
|
PHP_FUNCTION(mysqli_stat); |
||||
|
PHP_FUNCTION(mysqli_refresh); |
||||
|
PHP_FUNCTION(mysqli_stmt_affected_rows); |
||||
|
PHP_FUNCTION(mysqli_stmt_close); |
||||
|
PHP_FUNCTION(mysqli_stmt_data_seek); |
||||
|
PHP_FUNCTION(mysqli_stmt_errno); |
||||
|
PHP_FUNCTION(mysqli_stmt_error); |
||||
|
PHP_FUNCTION(mysqli_stmt_free_result); |
||||
|
PHP_FUNCTION(mysqli_stmt_get_result); |
||||
|
PHP_FUNCTION(mysqli_stmt_get_warnings); |
||||
|
PHP_FUNCTION(mysqli_stmt_reset); |
||||
|
PHP_FUNCTION(mysqli_stmt_insert_id); |
||||
|
PHP_FUNCTION(mysqli_stmt_more_results); |
||||
|
PHP_FUNCTION(mysqli_stmt_next_result); |
||||
|
PHP_FUNCTION(mysqli_stmt_num_rows); |
||||
|
PHP_FUNCTION(mysqli_stmt_sqlstate); |
||||
|
PHP_FUNCTION(mysqli_stmt_store_result); |
||||
|
PHP_FUNCTION(mysqli_store_result); |
||||
|
PHP_FUNCTION(mysqli_thread_id); |
||||
|
PHP_FUNCTION(mysqli_thread_safe); |
||||
|
PHP_FUNCTION(mysqli_use_result); |
||||
|
PHP_FUNCTION(mysqli_warning_count); |
||||
|
|
||||
|
PHP_FUNCTION(mysqli_stmt_construct); |
||||
|
PHP_FUNCTION(mysqli_result_construct); |
||||
|
PHP_FUNCTION(mysqli_driver_construct); |
||||
|
PHP_METHOD(mysqli_warning,__construct); |
||||
|
|
||||
|
#endif /* MYSQLI_FE_H */ |
||||
@ -0,0 +1,156 @@ |
|||||
|
/* |
||||
|
+----------------------------------------------------------------------+ |
||||
|
| PHP Version 5 | |
||||
|
+----------------------------------------------------------------------+ |
||||
|
| Copyright (c) 1997-2010 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 | |
||||
|
| license@php.net so we can mail you a copy immediately. | |
||||
|
+----------------------------------------------------------------------+ |
||||
|
| Author: Georg Richter <georg@php.net> | |
||||
|
+----------------------------------------------------------------------+ |
||||
|
|
||||
|
$Id: php_mysqli_structs.h 302179 2010-08-13 09:57:04Z andrey $ |
||||
|
*/ |
||||
|
|
||||
|
#ifndef MYSQLI_PRIV_H |
||||
|
#define MYSQLI_PRIV_H |
||||
|
|
||||
|
#ifdef PHP_MYSQL_UNIX_SOCK_ADDR |
||||
|
#ifdef MYSQL_UNIX_ADDR |
||||
|
#undef MYSQL_UNIX_ADDR |
||||
|
#endif |
||||
|
#define MYSQL_UNIX_ADDR PHP_MYSQL_UNIX_SOCK_ADDR |
||||
|
#endif |
||||
|
|
||||
|
/* character set support */ |
||||
|
#if defined(MYSQLND_VERSION_ID) || MYSQL_VERSION_ID > 50009 |
||||
|
#define HAVE_MYSQLI_GET_CHARSET |
||||
|
#endif |
||||
|
|
||||
|
#if defined(MYSQLND_VERSION_ID) || (MYSQL_VERSION_ID > 40112 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID > 50005 |
||||
|
#define HAVE_MYSQLI_SET_CHARSET |
||||
|
#endif |
||||
|
|
||||
|
|
||||
|
extern const zend_function_entry mysqli_functions[]; |
||||
|
extern const zend_function_entry mysqli_link_methods[]; |
||||
|
extern const zend_function_entry mysqli_stmt_methods[]; |
||||
|
extern const zend_function_entry mysqli_result_methods[]; |
||||
|
extern const zend_function_entry mysqli_driver_methods[]; |
||||
|
extern const zend_function_entry mysqli_warning_methods[]; |
||||
|
extern const zend_function_entry mysqli_exception_methods[]; |
||||
|
|
||||
|
extern const mysqli_property_entry mysqli_link_property_entries[]; |
||||
|
extern const mysqli_property_entry mysqli_result_property_entries[]; |
||||
|
extern const mysqli_property_entry mysqli_stmt_property_entries[]; |
||||
|
extern const mysqli_property_entry mysqli_driver_property_entries[]; |
||||
|
extern const mysqli_property_entry mysqli_warning_property_entries[]; |
||||
|
|
||||
|
extern zend_property_info mysqli_link_property_info_entries[]; |
||||
|
extern zend_property_info mysqli_result_property_info_entries[]; |
||||
|
extern zend_property_info mysqli_stmt_property_info_entries[]; |
||||
|
extern zend_property_info mysqli_driver_property_info_entries[]; |
||||
|
extern zend_property_info mysqli_warning_property_info_entries[]; |
||||
|
|
||||
|
extern int php_le_pmysqli(void); |
||||
|
extern void php_mysqli_dtor_p_elements(void *data); |
||||
|
|
||||
|
extern void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_status TSRMLS_DC); |
||||
|
|
||||
|
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 void php_set_local_infile_handler_default(MY_MYSQL *); |
||||
|
extern void php_mysqli_throw_sql_exception(char *sqlstate, int errorno TSRMLS_DC, char *format, ...); |
||||
|
|
||||
|
#ifdef HAVE_SPL |
||||
|
extern PHPAPI zend_class_entry *spl_ce_RuntimeException; |
||||
|
#endif |
||||
|
|
||||
|
#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 PHP_MYSQLI_EXPORT(__type) PHP_MYSQLI_API __type |
||||
|
|
||||
|
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 MYSQLI_RETURN_LONG_LONG(__val) \ |
||||
|
{ \ |
||||
|
if ((__val) < LONG_MAX) { \ |
||||
|
RETURN_LONG((long) (__val)); \ |
||||
|
} else { \ |
||||
|
char *ret; \ |
||||
|
/* always used with my_ulonglong -> %llu */ \ |
||||
|
int l = spprintf(&ret, 0, MYSQLI_LLU_SPEC, (__val)); \ |
||||
|
RETURN_STRINGL(ret, l, 0); \ |
||||
|
} \ |
||||
|
} |
||||
|
|
||||
|
#define MYSQLI_STORE_RESULT 0 |
||||
|
#define MYSQLI_USE_RESULT 1 |
||||
|
#ifdef MYSQLI_USE_MYSQLND |
||||
|
#define MYSQLI_ASYNC 8 |
||||
|
#else |
||||
|
/* libmysql */ |
||||
|
#define MYSQLI_ASYNC 0 |
||||
|
#endif |
||||
|
|
||||
|
/* for mysqli_fetch_assoc */ |
||||
|
#define MYSQLI_ASSOC 1 |
||||
|
#define MYSQLI_NUM 2 |
||||
|
#define MYSQLI_BOTH 3 |
||||
|
|
||||
|
/* 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); \ |
||||
|
} |
||||
|
|
||||
|
void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_connect, zend_bool in_ctor); |
||||
|
|
||||
|
void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS); |
||||
|
|
||||
|
#endif /* MYSQLI_PRIV_H */ |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue