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