From: foobar Date: Thu, 24 Jul 2003 02:47:11 +0000 (+0000) Subject: - MFH: Sync to HEAD (TSRMLS_FETCH() nukes, pval -> zval, php_error_docref) X-Git-Tag: php-4.3.3RC2~50 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d496c5f4a5719e788a331730204445669f2fca50;p=php - MFH: Sync to HEAD (TSRMLS_FETCH() nukes, pval -> zval, php_error_docref) --- diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c index fcb789a5e1..25ca63e630 100644 --- a/ext/interbase/interbase.c +++ b/ext/interbase/interbase.c @@ -18,7 +18,7 @@ */ /* $Id$ */ - + /* TODO: Arrays, roles? A lot... */ @@ -115,8 +115,7 @@ function_entry ibase_functions[] = { {NULL, NULL, NULL} }; -zend_module_entry ibase_module_entry = -{ +zend_module_entry ibase_module_entry = { STANDARD_MODULE_HEADER, "interbase", ibase_functions, @@ -125,23 +124,19 @@ zend_module_entry ibase_module_entry = PHP_RINIT(ibase), PHP_RSHUTDOWN(ibase), PHP_MINFO(ibase), - NO_VERSION_YET, + NO_VERSION_YET, STANDARD_MODULE_PROPERTIES }; #ifdef COMPILE_DL_INTERBASE ZEND_GET_MODULE(ibase) - #define DL_MALLOC(size) malloc(size) #define DL_STRDUP(str) strdup(str) #define DL_FREE(ptr) free(ptr) - #else - #define DL_MALLOC(size) emalloc(size) #define DL_STRDUP(str) estrdup(str) #define DL_FREE(ptr) efree(ptr) - #endif /* True globals, no need for thread safety */ @@ -155,9 +150,10 @@ ZEND_DECLARE_MODULE_GLOBALS(ibase) #define IB_STATUS (IBG(status)) -/* Fill ib_link and trans_n with the correct database link and transaction slot number. */ - -static void get_link_trans(INTERNAL_FUNCTION_PARAMETERS, zval **link_id, ibase_db_link **ib_link, int *trans_n, int *trans_id) { +/* Fill ib_link and trans_n with the correct database link and transaction slot number. + */ +static void get_link_trans(INTERNAL_FUNCTION_PARAMETERS, zval **link_id, ibase_db_link **ib_link, int *trans_n, int *trans_id) +{ int type; void *resource = NULL; ibase_tr_link *ib_trans; @@ -184,12 +180,11 @@ static void get_link_trans(INTERNAL_FUNCTION_PARAMETERS, zval **link_id, ibase_d } #define RESET_ERRMSG { IBG(errmsg)[0] = '\0';} - #define TEST_ERRMSG ( IBG(errmsg)[0] != '\0') /* sql variables union - used for convert and binding input variables -*/ + * used for convert and binding input variables + */ typedef struct { union { short sval; @@ -204,17 +199,16 @@ typedef struct { short sqlind; } BIND_BUF; - /* get blob identifier from argument - on empty unset argument ib_blob set to NULL -*/ + * on empty unset argument ib_blob set to NULL + */ #define GET_BLOB_ID_ARG(blob_arg, ib_blob)\ {\ if (Z_TYPE_P(blob_arg) == IS_STRING && Z_STRLEN_P(blob_arg) == 0) {\ ib_blob = NULL;\ } else if (Z_TYPE_P(blob_arg) != IS_STRING\ || Z_STRLEN_P(blob_arg) != sizeof(ibase_blob_handle)\ - || ((ibase_blob_handle *)(Z_STRVAL_P(blob_arg)))->bl_handle != 0){\ + || ((ibase_blob_handle *)(Z_STRVAL_P(blob_arg)))->bl_handle != 0) {\ _php_ibase_module_error("Invalid blob id");\ RETURN_FALSE;\ } else {\ @@ -222,22 +216,22 @@ typedef struct { }\ } - /* get blob handle from argument - note: blob already open when handle active -*/ + * note: blob already open when handle active + */ #define GET_BLOB_HANDLE_ARG(blob_arg, blob_ptr) \ { \ int type; \ - convert_to_long(blob_arg); \ - blob_ptr = (ibase_blob_handle *) zend_list_find(Z_LVAL_P(blob_arg), &type); \ + convert_to_long_ex(blob_arg); \ + blob_ptr = (ibase_blob_handle *) zend_list_find(Z_LVAL_PP(blob_arg), &type); \ if (type!=le_blob) { \ - _php_ibase_module_error("%d is not blob handle", Z_LVAL_P(blob_arg)); \ + _php_ibase_module_error("%d is not blob handle", Z_LVAL_PP(blob_arg)); \ RETURN_FALSE; \ } \ } -/* blob information struct */ +/* blob information struct + */ typedef struct { ISC_LONG max_segment; /* Length of longest segment */ ISC_LONG num_segments; /* Total number of segments */ @@ -260,12 +254,13 @@ PHP_FUNCTION(ibase_errmsg) if (IBG(errmsg[0])) { RETURN_STRING(IBG(errmsg), 1); } + RETURN_FALSE; } /* }}} */ /* {{{ _php_ibase_error(TSRMLS_D) - print interbase error and save it for ibase_errmsg() */ + print interbase error and save it for ibase_errmsg() */ static void _php_ibase_error(TSRMLS_D) { char *s; @@ -273,16 +268,18 @@ static void _php_ibase_error(TSRMLS_D) s = IBG(errmsg); statusp = IB_STATUS; + while ((s - IBG(errmsg)) < MAX_ERRMSG - (IBASE_MSGSIZE + 2) && isc_interprete(s, &statusp)) { strcat(IBG(errmsg), " "); s = IBG(errmsg) + strlen(IBG(errmsg)); } - php_error(E_WARNING, "%s(): %s", get_active_function_name(TSRMLS_C), IBG(errmsg)); + + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", IBG(errmsg)); } /* }}} */ /* {{{ _php_ibase_module_error() - print php interbase module error and save it for ibase_errmsg() */ + print php interbase module error and save it for ibase_errmsg() */ static void _php_ibase_module_error(char *msg, ...) { va_list ap; @@ -293,7 +290,7 @@ static void _php_ibase_module_error(char *msg, ...) vsnprintf(IBG(errmsg), MAX_ERRMSG, msg, ap); va_end(ap); - php_error(E_WARNING, "%s(): %s", get_active_function_name(TSRMLS_C), IBG(errmsg)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", IBG(errmsg)); } /* }}} */ @@ -313,19 +310,20 @@ static void _php_ibase_free_xsqlda(XSQLDA *sqlda) var = sqlda->sqlvar; for (i = 0; i < sqlda->sqld; i++, var++) { efree(var->sqldata); - if(var->sqlind) + if (var->sqlind) { efree(var->sqlind); + } } efree(sqlda); } } /* }}} */ -/* {{{ _php_ibase_commit_link() */ -static void _php_ibase_commit_link(ibase_db_link *link) +/* {{{ _php_ibase_commit_link() + */ +static void _php_ibase_commit_link(ibase_db_link *link TSRMLS_DC) { int i; - TSRMLS_FETCH(); IBDEBUG("Checking transactions to close..."); if (link->trans[0] != NULL) { /* commit default */ @@ -349,18 +347,18 @@ static void _php_ibase_commit_link(ibase_db_link *link) static void php_ibase_commit_link_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - ibase_db_link *link = (ibase_db_link *)rsrc->ptr; + ibase_db_link *link = (ibase_db_link *) rsrc->ptr; - _php_ibase_commit_link(link); + _php_ibase_commit_link(link TSRMLS_CC); } /* {{{ _php_ibase_close_link() */ static void _php_ibase_close_link(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - ibase_db_link *link = (ibase_db_link *)rsrc->ptr; + ibase_db_link *link = (ibase_db_link *) rsrc->ptr; - _php_ibase_commit_link(link); + _php_ibase_commit_link(link TSRMLS_CC); IBDEBUG("Closing normal link..."); isc_detach_database(IB_STATUS, &link->link); IBG(num_links)--; @@ -372,9 +370,9 @@ static void _php_ibase_close_link(zend_rsrc_list_entry *rsrc TSRMLS_DC) */ static void _php_ibase_close_plink(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - ibase_db_link *link = (ibase_db_link *)rsrc->ptr; + ibase_db_link *link = (ibase_db_link *) rsrc->ptr; - _php_ibase_commit_link(link); + _php_ibase_commit_link(link TSRMLS_CC); IBDEBUG("Closing permanent link..."); isc_detach_database(IB_STATUS, &link->link); IBG(num_persistent)--; @@ -387,10 +385,10 @@ static void _php_ibase_close_plink(zend_rsrc_list_entry *rsrc TSRMLS_DC) */ static void _php_ibase_free_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - ibase_result *ib_result = (ibase_result *)rsrc->ptr; + ibase_result *ib_result = (ibase_result *) rsrc->ptr; IBDEBUG("Freeing result by dtor..."); - if (ib_result){ + if (ib_result) { _php_ibase_free_xsqlda(ib_result->out_sqlda); if (ib_result->drop_stmt && ib_result->stmt) { IBDEBUG("Dropping statement handle (free_result dtor)..."); @@ -416,10 +414,8 @@ static void _php_ibase_free_result(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* }}} */ /* {{{ _php_ibase_free_query() */ -static void _php_ibase_free_query(ibase_query *ib_query) +static void _php_ibase_free_query(ibase_query *ib_query TSRMLS_DC) { - TSRMLS_FETCH(); - IBDEBUG("Freeing query..."); if (ib_query) { if (ib_query->in_sqlda) { @@ -430,7 +426,7 @@ static void _php_ibase_free_query(ibase_query *ib_query) } if (ib_query->stmt) { IBDEBUG("Dropping statement handle (free_query)..."); - if (isc_dsql_free_statement(IB_STATUS, &ib_query->stmt, DSQL_drop)){ + if (isc_dsql_free_statement(IB_STATUS, &ib_query->stmt, DSQL_drop)) { _php_ibase_error(TSRMLS_C); } } @@ -480,7 +476,7 @@ static void _php_ibase_free_blob(zend_rsrc_list_entry *rsrc TSRMLS_DC) if (ib_blob->bl_handle != NULL) { /* blob open*/ if (isc_cancel_blob(IB_STATUS, &ib_blob->bl_handle)) { - php_error(E_ERROR, "You can lose data. Close any blob after reading of writing it. Use ibase_blob_close() before calling ibase_close()"); + php_error_docref(NULL TSRMLS_CC, E_ERROR, "You can lose data. Close any blob after reading of writing it. Use ibase_blob_close() before calling ibase_close()"); } } efree(ib_blob); @@ -496,7 +492,7 @@ static void _php_ibase_free_trans(zend_rsrc_list_entry *rsrc TSRMLS_DC) void *ptr; ptr = zend_list_find(ib_trans->link_rsrc, &type); /* check if the link is still there */ - if (ptr && (type==le_link || type==le_plink)) { + if (ptr && (type == le_link || type == le_plink)) { ib_link = (ibase_db_link *) zend_fetch_resource(NULL TSRMLS_CC, ib_trans->link_rsrc, "InterBase link", NULL, 2, le_link, le_plink); if (ib_link) { @@ -515,14 +511,14 @@ static void _php_ibase_free_trans(zend_rsrc_list_entry *rsrc TSRMLS_DC) /* {{{ startup, shutdown and info functions */ PHP_INI_BEGIN() - STD_PHP_INI_BOOLEAN("ibase.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateInt, allow_persistent, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY_EX("ibase.max_persistent", "-1", PHP_INI_SYSTEM, OnUpdateInt, max_persistent, zend_ibase_globals, ibase_globals, display_link_numbers) - STD_PHP_INI_ENTRY_EX("ibase.max_links", "-1", PHP_INI_SYSTEM, OnUpdateInt, max_links, zend_ibase_globals, ibase_globals, display_link_numbers) - STD_PHP_INI_ENTRY("ibase.default_user", NULL, PHP_INI_ALL, OnUpdateString, default_user, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY("ibase.default_password", NULL, PHP_INI_ALL, OnUpdateString, default_password, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY("ibase.timestampformat", "%m/%d/%Y %H:%M:%S", PHP_INI_ALL, OnUpdateString, cfg_timestampformat, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY("ibase.dateformat", "%m/%d/%Y", PHP_INI_ALL, OnUpdateString, cfg_dateformat, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY("ibase.timeformat", "%H:%M:%S", PHP_INI_ALL, OnUpdateString, cfg_timeformat, zend_ibase_globals, ibase_globals) + STD_PHP_INI_BOOLEAN("ibase.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateLong, allow_persistent, zend_ibase_globals, ibase_globals) + STD_PHP_INI_ENTRY_EX("ibase.max_persistent", "-1", PHP_INI_SYSTEM, OnUpdateLong, max_persistent, zend_ibase_globals, ibase_globals, display_link_numbers) + STD_PHP_INI_ENTRY_EX("ibase.max_links", "-1", PHP_INI_SYSTEM, OnUpdateLong, max_links, zend_ibase_globals, ibase_globals, display_link_numbers) + STD_PHP_INI_ENTRY("ibase.default_user", NULL, PHP_INI_ALL, OnUpdateString, default_user, zend_ibase_globals, ibase_globals) + STD_PHP_INI_ENTRY("ibase.default_password", NULL, PHP_INI_ALL, OnUpdateString, default_password, zend_ibase_globals, ibase_globals) + STD_PHP_INI_ENTRY("ibase.timestampformat", "%m/%d/%Y %H:%M:%S", PHP_INI_ALL, OnUpdateString, cfg_timestampformat, zend_ibase_globals, ibase_globals) + STD_PHP_INI_ENTRY("ibase.dateformat", "%m/%d/%Y", PHP_INI_ALL, OnUpdateString, cfg_dateformat, zend_ibase_globals, ibase_globals) + STD_PHP_INI_ENTRY("ibase.timeformat", "%H:%M:%S", PHP_INI_ALL, OnUpdateString, cfg_timeformat, zend_ibase_globals, ibase_globals) PHP_INI_END() static void php_ibase_init_globals(zend_ibase_globals *ibase_globals) @@ -567,103 +563,106 @@ PHP_MINIT_FUNCTION(ibase) return SUCCESS; } - PHP_RINIT_FUNCTION(ibase) { IBG(default_link)= -1; IBG(num_links) = IBG(num_persistent); - if (IBG(timestampformat)) - DL_FREE(IBG(timestampformat)); + if (IBG(timestampformat)) { + DL_FREE(IBG(timestampformat)); + } IBG(timestampformat) = DL_STRDUP(IBG(cfg_timestampformat)); - if (IBG(dateformat)) - DL_FREE(IBG(dateformat)); + if (IBG(dateformat)) { + DL_FREE(IBG(dateformat)); + } IBG(dateformat) = DL_STRDUP(IBG(cfg_dateformat)); - if (IBG(timeformat)) - DL_FREE(IBG(timeformat)); + if (IBG(timeformat)) { + DL_FREE(IBG(timeformat)); + } IBG(timeformat) = DL_STRDUP(IBG(cfg_timeformat)); - if (IBG(errmsg)) - DL_FREE(IBG(errmsg)); + if (IBG(errmsg)) { + DL_FREE(IBG(errmsg)); + } IBG(errmsg) = DL_MALLOC(sizeof(char)*MAX_ERRMSG+1); return SUCCESS; } - PHP_MSHUTDOWN_FUNCTION(ibase) { UNREGISTER_INI_ENTRIES(); return SUCCESS; } - PHP_RSHUTDOWN_FUNCTION(ibase) { - if (IBG(timestampformat)) - DL_FREE(IBG(timestampformat)); + if (IBG(timestampformat)) { + DL_FREE(IBG(timestampformat)); + } IBG(timestampformat) = NULL; - if (IBG(dateformat)) - DL_FREE(IBG(dateformat)); + if (IBG(dateformat)) { + DL_FREE(IBG(dateformat)); + } IBG(dateformat) = NULL; - if (IBG(timeformat)) - DL_FREE(IBG(timeformat)); + if (IBG(timeformat)) { + DL_FREE(IBG(timeformat)); + } IBG(timeformat) = NULL; - - if (IBG(errmsg)) - DL_FREE(IBG(errmsg)); + + if (IBG(errmsg)) { + DL_FREE(IBG(errmsg)); + } IBG(errmsg) = NULL; - return SUCCESS; + return SUCCESS; } - PHP_MINFO_FUNCTION(ibase) { char tmp[32]; php_info_print_table_start(); - php_info_print_table_row(2, "Interbase Support", "enabled"); + php_info_print_table_row(2, "Interbase Support", "enabled"); php_info_print_table_row(2, "Revision", "$Revision$"); #ifdef COMPILE_DL_INTERBASE php_info_print_table_row(2, "Dynamic Module", "yes"); #endif - php_info_print_table_row(2, "Allow Persistent Links", (IBG(allow_persistent)?"Yes":"No") ); + php_info_print_table_row(2, "Allow Persistent Links", (IBG(allow_persistent) ? "Yes" : "No")); if (IBG(max_persistent) == -1) { snprintf(tmp, 31, "%ld/unlimited", IBG(num_persistent)); } else { snprintf(tmp, 31, "%ld/%ld", IBG(num_persistent), IBG(max_persistent)); } - tmp[31]=0; - php_info_print_table_row(2, "Persistent Links", tmp ); + tmp[31] = 0; + php_info_print_table_row(2, "Persistent Links", tmp); if (IBG(max_links) == -1) { snprintf(tmp, 31, "%ld/unlimited", IBG(num_links)); } else { snprintf(tmp, 31, "%ld/%ld", IBG(num_links), IBG(max_links)); } - tmp[31]=0; - php_info_print_table_row(2, "Total Links", tmp ); + tmp[31] = 0; + php_info_print_table_row(2, "Total Links", tmp); - php_info_print_table_row(2, "Timestamp Format", IBG(timestampformat) ); - php_info_print_table_row(2, "Date Format", IBG(dateformat) ); - php_info_print_table_row(2, "Time Format", IBG(timeformat) ); + php_info_print_table_row(2, "Timestamp Format", IBG(timestampformat)); + php_info_print_table_row(2, "Date Format", IBG(dateformat)); + php_info_print_table_row(2, "Time Format", IBG(timeformat)); php_info_print_table_end(); } /* }}} */ /* {{{ _php_ibase_attach_db() */ -static int _php_ibase_attach_db(char *server, char *uname, char *passwd, char *charset, int buffers, char *role, isc_db_handle *db) +static int _php_ibase_attach_db(char *server, char *uname, char *passwd, char *charset, int buffers, char *role, isc_db_handle *db TSRMLS_DC) { char dpb_buffer[256], *dpb, *p; int dpb_length, len; - TSRMLS_FETCH(); dpb = dpb_buffer; @@ -722,7 +721,7 @@ static int _php_ibase_attach_db(char *server, char *uname, char *passwd, char *c /* {{{ _php_ibase_connect() */ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) { - pval ***args; + zval ***args; char *ib_server = NULL, *ib_uname, *ib_passwd, *ib_charset = NULL, *ib_buffers = NULL, *ib_dialect = NULL, *ib_role = NULL; int i, ib_uname_len, ib_passwd_len; isc_db_handle db_handle = NULL; @@ -737,17 +736,17 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) ib_uname_len = ib_uname ? strlen(ib_uname) : 0; ib_passwd_len = ib_passwd ? strlen(ib_passwd) : 0; - if(ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 7){ + if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 7) { WRONG_PARAM_COUNT; } - args = (pval ***) emalloc(sizeof(pval **)*ZEND_NUM_ARGS()); + args = (zval ***) emalloc(sizeof(zval **) * ZEND_NUM_ARGS()); if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) { efree(args); RETURN_FALSE; } - switch(ZEND_NUM_ARGS()) { + switch (ZEND_NUM_ARGS()) { case 7: convert_to_string_ex(args[6]); ib_role = Z_STRVAL_PP(args[6]); @@ -786,14 +785,14 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) efree(args); - hashed_details = (char *) emalloc(hashed_details_length+strlen("ibase_%s_%s_%s_%s_%s_%s_%s")+1); + hashed_details = (char *) emalloc(hashed_details_length + strlen("ibase_%s_%s_%s_%s_%s_%s_%s") + 1); sprintf(hashed_details, "ibase_%s_%s_%s_%s_%s_%s_%s", SAFE_STRING(ib_server), SAFE_STRING(ib_uname), SAFE_STRING(ib_passwd), SAFE_STRING(ib_charset), SAFE_STRING(ib_buffers), SAFE_STRING(ib_dialect), SAFE_STRING(ib_role)); if (persistent) { list_entry *le; int open_new_connection = 1; - if (zend_hash_find(&EG(persistent_list), hashed_details, hashed_details_length+1, (void **) &le) != FAILURE) { + if (zend_hash_find(&EG(persistent_list), hashed_details, hashed_details_length + 1, (void **) &le) != FAILURE) { char tmp_1[] = {isc_info_base_level, isc_info_end}; char tmp_2[8]; /* Enough? Hope so... */ @@ -826,7 +825,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) if (_php_ibase_attach_db(ib_server, ib_uname, ib_passwd, ib_charset, (ib_buffers ? strtoul(ib_buffers, NULL, 0) : 0), - ib_role, &db_handle) == FAILURE) { + ib_role, &db_handle TSRMLS_CC) == FAILURE) { efree(hashed_details); RETURN_FALSE; } @@ -834,13 +833,15 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) ib_link = (ibase_db_link *) malloc(sizeof(ibase_db_link)); ib_link->link = db_handle; ib_link->dialect = (ib_dialect ? (unsigned short) strtoul(ib_dialect, NULL, 10) : SQL_DIALECT_CURRENT); - for (i = 0; i < IBASE_TRANS_ON_LINK; i++) + + for (i = 0; i < IBASE_TRANS_ON_LINK; i++) { ib_link->trans[i] = NULL; - + } + /* hash it up */ Z_TYPE(new_le) = le_plink; new_le.ptr = ib_link; - if (zend_hash_update(&EG(persistent_list), hashed_details, hashed_details_length+1, (void *) &new_le, sizeof(list_entry), NULL)==FAILURE) { + if (zend_hash_update(&EG(persistent_list), hashed_details, hashed_details_length + 1, (void *) &new_le, sizeof(list_entry), NULL) == FAILURE) { efree(hashed_details); free(ib_link); RETURN_FALSE; @@ -859,7 +860,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) * if it doesn't, open a new ib_link, add it to the resource list, * and add a pointer to it with hashed_details as the key. */ - if (zend_hash_find(&EG(regular_list), hashed_details, hashed_details_length+1, (void **) &index_ptr)==SUCCESS) { + if (zend_hash_find(&EG(regular_list), hashed_details, hashed_details_length + 1, (void **) &index_ptr) == SUCCESS) { int type, xlink; void *ptr; if (Z_TYPE_P(index_ptr) != le_index_ptr) { @@ -867,7 +868,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) } xlink = (int) index_ptr->ptr; ptr = zend_list_find(xlink, &type); /* check if the xlink is still there */ - if (ptr && (type==le_link || type==le_plink)) { + if (ptr && (type == le_link || type == le_plink)) { zend_list_addref(xlink); Z_LVAL_P(return_value) = xlink; Z_TYPE_P(return_value) = IS_RESOURCE; @@ -875,7 +876,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) efree(hashed_details); return; } else { - zend_hash_del(&EG(regular_list), hashed_details, hashed_details_length+1); + zend_hash_del(&EG(regular_list), hashed_details, hashed_details_length + 1); } } if ((IBG(max_links) != -1) && (IBG(num_links) >= IBG(max_links))) { @@ -887,7 +888,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) if (_php_ibase_attach_db(ib_server, ib_uname, ib_passwd, ib_charset, (ib_buffers ? strtoul(ib_buffers, NULL, 0) : 0), - ib_role, &db_handle) == FAILURE) { + ib_role, &db_handle TSRMLS_CC) == FAILURE) { efree(hashed_details); RETURN_FALSE; } @@ -895,15 +896,17 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) ib_link = (ibase_db_link *) emalloc(sizeof(ibase_db_link)); ib_link->link = db_handle; ib_link->dialect = (ib_dialect ? (unsigned short) strtoul(ib_dialect, NULL, 10) : SQL_DIALECT_CURRENT); - for (i = 0; i < IBASE_TRANS_ON_LINK; i++) - ib_link->trans[i] = NULL; + for (i = 0; i < IBASE_TRANS_ON_LINK; i++) { + ib_link->trans[i] = NULL; + } + ZEND_REGISTER_RESOURCE(return_value, ib_link, le_link); /* add it to the hash */ new_index_ptr.ptr = (void *) Z_LVAL_P(return_value); Z_TYPE(new_index_ptr) = le_index_ptr; - if (zend_hash_update(&EG(regular_list), hashed_details, hashed_details_length+1, (void *) &new_index_ptr, sizeof(list_entry), NULL)==FAILURE) { + if (zend_hash_update(&EG(regular_list), hashed_details, hashed_details_length + 1, (void *) &new_index_ptr, sizeof(list_entry), NULL) == FAILURE) { efree(hashed_details); RETURN_FALSE; } @@ -964,37 +967,34 @@ PHP_FUNCTION(ibase_close) /* }}} */ /* {{{ _php_ibase_alloc_array() */ -static int _php_ibase_alloc_array(ibase_array **ib_arrayp, int *array_cntp, - XSQLDA *sqlda, isc_db_handle link, isc_tr_handle trans) +static int _php_ibase_alloc_array(ibase_array **ib_arrayp, int *array_cntp, XSQLDA *sqlda, isc_db_handle link, isc_tr_handle trans TSRMLS_DC) { #define IB_ARRAY (*ib_arrayp) - + int i, dim, ar_cnt, ar_length; XSQLVAR *var; - TSRMLS_FETCH(); IB_ARRAY = NULL; ar_cnt = 0; /* find arrays */ var = sqlda->sqlvar; for (i = 0; i < sqlda->sqld; i++, var++) { - if ((var->sqltype & ~1) == SQL_ARRAY) + if ((var->sqltype & ~1) == SQL_ARRAY) { ar_cnt++; + } } if (ar_cnt) { /* have arrays ? */ - *array_cntp = ar_cnt; IB_ARRAY = emalloc(sizeof(ibase_array)*ar_cnt); ar_cnt = 0; var = sqlda->sqlvar; for (i = 0; i < sqlda->sqld; i++, var++) { if ((var->sqltype & ~1) == SQL_ARRAY) { - + ISC_ARRAY_DESC *ar_desc = &IB_ARRAY[ar_cnt].ar_desc; - if (isc_array_lookup_bounds(IB_STATUS, &link, &trans, - var->relname, var->sqlname, ar_desc)) { + if (isc_array_lookup_bounds(IB_STATUS, &link, &trans, var->relname, var->sqlname, ar_desc)) { _php_ibase_error(TSRMLS_C); efree(IB_ARRAY); IB_ARRAY = NULL; @@ -1005,7 +1005,7 @@ static int _php_ibase_alloc_array(ibase_array **ib_arrayp, int *array_cntp, case blr_text: case blr_text2: IB_ARRAY[ar_cnt].el_type = SQL_TEXT; - IB_ARRAY[ar_cnt].el_size = ar_desc->array_desc_length+1; + IB_ARRAY[ar_cnt].el_size = ar_desc->array_desc_length + 1; break; case blr_short: IB_ARRAY[ar_cnt].el_type = SQL_SHORT; @@ -1031,11 +1031,10 @@ static int _php_ibase_alloc_array(ibase_array **ib_arrayp, int *array_cntp, case blr_varying2: /* changed to SQL_TEXT ? */ /* sql_type = SQL_VARYING; Why? FIXME: ??? */ IB_ARRAY[ar_cnt].el_type = SQL_TEXT; - IB_ARRAY[ar_cnt].el_size = ar_desc->array_desc_length+sizeof(short); + IB_ARRAY[ar_cnt].el_size = ar_desc->array_desc_length + sizeof(short); break; default: - _php_ibase_module_error("Unexpected array type %d in relation '%s' column '%s'", - ar_desc->array_desc_dtype, var->relname, var->sqlname); + _php_ibase_module_error("Unexpected array type %d in relation '%s' column '%s'", ar_desc->array_desc_dtype, var->relname, var->sqlname); efree(IB_ARRAY); IB_ARRAY = NULL; return FAILURE; @@ -1043,8 +1042,7 @@ static int _php_ibase_alloc_array(ibase_array **ib_arrayp, int *array_cntp, ar_length = 0; /* calculate elements count */ for (dim = 0; dim < ar_desc->array_desc_dimensions; dim++) { - ar_length += 1 + ar_desc->array_desc_bounds[dim].array_bound_upper - - ar_desc->array_desc_bounds[dim].array_bound_lower; + ar_length += 1 + ar_desc->array_desc_bounds[dim].array_bound_upper - ar_desc->array_desc_bounds[dim].array_bound_lower; } IB_ARRAY[ar_cnt].ar_size = IB_ARRAY[ar_cnt].el_size * ar_length; @@ -1061,10 +1059,9 @@ static int _php_ibase_alloc_array(ibase_array **ib_arrayp, int *array_cntp, /* {{{ _php_ibase_alloc_query() */ /* allocate and prepare query */ -static int _php_ibase_alloc_query(ibase_query **ib_queryp, isc_db_handle link, isc_tr_handle trans, char *query, unsigned short dialect) +static int _php_ibase_alloc_query(ibase_query **ib_queryp, isc_db_handle link, isc_tr_handle trans, char *query, unsigned short dialect TSRMLS_DC) { #define IB_QUERY (*ib_queryp) - TSRMLS_FETCH(); IB_QUERY = emalloc(sizeof(ibase_query)); IB_QUERY->link = link; @@ -1124,13 +1121,11 @@ static int _php_ibase_alloc_query(ibase_query **ib_queryp, isc_db_handle link, i } /* allocate arrays... */ - if (_php_ibase_alloc_array(&IB_QUERY->in_array, &IB_QUERY->in_array_cnt, - IB_QUERY->in_sqlda, link, trans) == FAILURE) { + if (_php_ibase_alloc_array(&IB_QUERY->in_array, &IB_QUERY->in_array_cnt, IB_QUERY->in_sqlda, link, trans TSRMLS_CC) == FAILURE) { goto _php_ibase_alloc_query_error; /* error report already done */ } - if (_php_ibase_alloc_array(&IB_QUERY->out_array, &IB_QUERY->out_array_cnt, - IB_QUERY->out_sqlda, link, trans) == FAILURE) { + if (_php_ibase_alloc_array(&IB_QUERY->out_array, &IB_QUERY->out_array_cnt, IB_QUERY->out_sqlda, link, trans TSRMLS_CC) == FAILURE) { goto _php_ibase_alloc_query_error; } @@ -1149,12 +1144,15 @@ static int _php_ibase_alloc_query(ibase_query **ib_queryp, isc_db_handle link, i _php_ibase_alloc_query_error: - if (IB_QUERY->out_sqlda) + if (IB_QUERY->out_sqlda) { efree(IB_QUERY->out_sqlda); - if (IB_QUERY->in_sqlda) + } + if (IB_QUERY->in_sqlda) { efree(IB_QUERY->in_sqlda); - if (IB_QUERY->out_array) + } + if (IB_QUERY->out_array) { efree(IB_QUERY->out_array); + } efree(IB_QUERY); IB_QUERY = NULL; @@ -1165,17 +1163,17 @@ _php_ibase_alloc_query_error: /* {{{ _php_ibase_bind() Bind parameter placeholders in a previously prepared query */ -static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_query *ib_query) +static int _php_ibase_bind(XSQLDA *sqlda, zval **b_vars, BIND_BUF *buf, ibase_query *ib_query TSRMLS_DC) { XSQLVAR *var; - pval *b_var; + zval *b_var; int i; var = sqlda->sqlvar; for (i = 0; i < sqlda->sqld; var++, i++) { /* binded vars */ buf[i].sqlind = 0; - var->sqlind = &buf[i].sqlind; + var->sqlind = &buf[i].sqlind; b_var = b_vars[i]; if (Z_TYPE_P(b_var) == IS_NULL) { @@ -1184,14 +1182,16 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu var->sqldata = nothing; var->sqltype |= 1; var->sqlind = &null_flag; - if (var->sqllen > 64) + if (var->sqllen > 64) { var->sqllen = 64; + } } else - switch(var->sqltype & ~1) { + + switch (var->sqltype & ~1) { case SQL_TEXT: /* direct to variable */ case SQL_VARYING: convert_to_string(b_var); - var->sqldata = (void ISC_FAR *)Z_STRVAL_P(b_var); + var->sqldata = (void ISC_FAR *) Z_STRVAL_P(b_var); var->sqllen = Z_STRLEN_P(b_var); var->sqltype = SQL_TEXT + (var->sqltype & 1); break; @@ -1201,8 +1201,8 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu _php_ibase_module_error("Field %*s overflow", var->aliasname_length, var->aliasname); return FAILURE; } - buf[i].val.sval = (short)Z_LVAL_P(b_var); - var->sqldata = (void ISC_FAR *)(&buf[i].val.sval); + buf[i].val.sval = (short) Z_LVAL_P(b_var); + var->sqldata = (void ISC_FAR *) (&buf[i].val.sval); break; case SQL_LONG: if (var->sqlscale < 0) { @@ -1212,22 +1212,22 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu handle it. */ convert_to_string(b_var); - var->sqldata = (void ISC_FAR *)Z_STRVAL_P(b_var); + var->sqldata = (void ISC_FAR *) Z_STRVAL_P(b_var); var->sqllen = Z_STRLEN_P(b_var); var->sqltype = SQL_TEXT; } else { convert_to_long(b_var); - var->sqldata = (void ISC_FAR *)(&Z_LVAL_P(b_var)); + var->sqldata = (void ISC_FAR *) (&Z_LVAL_P(b_var)); } break; case SQL_FLOAT: convert_to_double(b_var); - buf[i].val.fval = (float)Z_DVAL_P(b_var); - var->sqldata = (void ISC_FAR *)(&buf[i].val.fval); + buf[i].val.fval = (float) Z_DVAL_P(b_var); + var->sqldata = (void ISC_FAR *) (&buf[i].val.fval); break; case SQL_DOUBLE: /* direct to variable */ convert_to_double(b_var); - var->sqldata = (void ISC_FAR *)(&Z_DVAL_P(b_var)); + var->sqldata = (void ISC_FAR *) (&Z_DVAL_P(b_var)); break; #ifdef SQL_INT64 case SQL_INT64: @@ -1237,7 +1237,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu to avoid rounding errors... */ convert_to_string(b_var); - var->sqldata = (void ISC_FAR *)Z_STRVAL_P(b_var); + var->sqldata = (void ISC_FAR *) Z_STRVAL_P(b_var); var->sqllen = Z_STRLEN_P(b_var); var->sqltype = SQL_TEXT; break; @@ -1256,21 +1256,20 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu struct tm t; int n; - t.tm_year = t.tm_mon = t.tm_mday = t.tm_hour = - t.tm_min = t.tm_sec = 0; + t.tm_year = t.tm_mon = t.tm_mday = t.tm_hour = t.tm_min = t.tm_sec = 0; convert_to_string(b_var); - n = sscanf(Z_STRVAL_P(b_var), "%d%*[/]%d%*[/]%d %d%*[:]%d%*[:]%d", - &t.tm_mon, &t.tm_mday, &t.tm_year, &t.tm_hour, &t.tm_min, &t.tm_sec); - if(n != 3 && n != 6){ + n = sscanf(Z_STRVAL_P(b_var), "%d%*[/]%d%*[/]%d %d%*[:]%d%*[:]%d", &t.tm_mon, &t.tm_mday, &t.tm_year, &t.tm_hour, &t.tm_min, &t.tm_sec); + + if (n != 3 && n != 6) { _php_ibase_module_error("Invalid date/time format: Expected 3 or 6 fields, got %d. Use format m/d/Y H:i:s. You gave '%s'", n, Z_STRVAL_P(b_var)); return FAILURE; } t.tm_year -= 1900; t.tm_mon--; isc_encode_date(&t, &buf[i].val.qval); - var->sqldata = (void ISC_FAR *)(&buf[i].val.qval); + var->sqldata = (void ISC_FAR *) (&buf[i].val.qval); } #else /* @@ -1281,7 +1280,7 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu ask Sascha? */ convert_to_string(b_var); - var->sqldata = (void ISC_FAR *)Z_STRVAL_P(b_var); + var->sqldata = (void ISC_FAR *) Z_STRVAL_P(b_var); var->sqllen = Z_STRLEN_P(b_var); var->sqltype = SQL_TEXT; #endif @@ -1293,23 +1292,23 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu #ifndef SQL_TIMESTAMP strptime(Z_STRVAL_P(b_var), IBG(timestampformat), &t); isc_encode_date(&t, &buf[i].val.qval); - var->sqldata = (void ISC_FAR *)(&buf[i].val.qval); + var->sqldata = (void ISC_FAR *) (&buf[i].val.qval); #else switch (var->sqltype & ~1) { case SQL_TIMESTAMP: strptime(Z_STRVAL_P(b_var), IBG(timestampformat), &t); isc_encode_timestamp(&t, &buf[i].val.tsval); - var->sqldata = (void ISC_FAR *)(&buf[i].val.tsval); + var->sqldata = (void ISC_FAR *) (&buf[i].val.tsval); break; case SQL_TYPE_DATE: strptime(Z_STRVAL_P(b_var), IBG(dateformat), &t); isc_encode_sql_date(&t, &buf[i].val.dtval); - var->sqldata = (void ISC_FAR *)(&buf[i].val.dtval); + var->sqldata = (void ISC_FAR *) (&buf[i].val.dtval); break; case SQL_TYPE_TIME: strptime(Z_STRVAL_P(b_var), IBG(timeformat), &t); isc_encode_sql_time(&t, &buf[i].val.tmval); - var->sqldata = (void ISC_FAR *)(&buf[i].val.tmval); + var->sqldata = (void ISC_FAR *) (&buf[i].val.tmval); break; } #endif @@ -1319,11 +1318,9 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu case SQL_BLOB: { ibase_blob_handle *ib_blob_id; - if (Z_TYPE_P(b_var) != IS_STRING - || Z_STRLEN_P(b_var) != sizeof(ibase_blob_handle) - || ((ibase_blob_handle *)(Z_STRVAL_P(b_var)))->bl_handle != 0) { + if (Z_TYPE_P(b_var) != IS_STRING || Z_STRLEN_P(b_var) != sizeof(ibase_blob_handle) || + ((ibase_blob_handle *)(Z_STRVAL_P(b_var)))->bl_handle != 0) { ibase_blob_handle *ib_blob; - TSRMLS_FETCH(); ib_blob = (ibase_blob_handle *) emalloc(sizeof(ibase_blob_handle)); ib_blob->trans_handle = ib_query->trans; @@ -1344,15 +1341,15 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu return FAILURE; } ib_blob_id = ib_blob; - var->sqldata = (void ISC_FAR *)&ib_blob_id->bl_qd; + var->sqldata = (void ISC_FAR *) &ib_blob_id->bl_qd; /* _php_ibase_module_error("Invalid blob id string"); return FAILURE; */ } else { - ib_blob_id = (ibase_blob_handle *)Z_STRVAL_P(b_var); + ib_blob_id = (ibase_blob_handle *) Z_STRVAL_P(b_var); - var->sqldata = (void ISC_FAR *)&ib_blob_id->bl_qd; + var->sqldata = (void ISC_FAR *) &ib_blob_id->bl_qd; } } break; @@ -1360,8 +1357,9 @@ static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_qu _php_ibase_module_error("Binding arrays not supported yet"); return FAILURE; break; - } /*switch*/ - } /*for*/ + } /* switch */ + } /* for */ + return SUCCESS; } /* }}} */ @@ -1371,15 +1369,14 @@ static void _php_ibase_alloc_xsqlda(XSQLDA *sqlda) { int i; XSQLVAR *var = sqlda->sqlvar; - - + for (i = 0; i < sqlda->sqld; i++, var++) { - switch(var->sqltype & ~1) { + switch (var->sqltype & ~1) { case SQL_TEXT: - var->sqldata = emalloc(sizeof(char)*(var->sqllen)); + var->sqldata = emalloc(sizeof(char) * (var->sqllen)); break; case SQL_VARYING: - var->sqldata = emalloc(sizeof(char)*(var->sqllen+sizeof(short))); + var->sqldata = emalloc(sizeof(char) * (var->sqllen + sizeof(short))); break; case SQL_SHORT: var->sqldata = emalloc(sizeof(short)); @@ -1415,23 +1412,24 @@ static void _php_ibase_alloc_xsqlda(XSQLDA *sqlda) case SQL_ARRAY: var->sqldata = emalloc(sizeof(ISC_QUAD)); break; - } /*switch*/ - if (var->sqltype & 1) /* sql NULL flag */ + } /* switch */ + + if (var->sqltype & 1) { /* sql NULL flag */ var->sqlind = emalloc(sizeof(short)); - else + } else { var->sqlind = NULL; - } /* for*/ + } + } /* for */ } /* }}} */ /* {{{ _php_ibase_exec() */ -static int _php_ibase_exec(ibase_result **ib_resultp, ibase_query *ib_query, int argc, pval **args) +static int _php_ibase_exec(ibase_result **ib_resultp, ibase_query *ib_query, int argc, zval **args TSRMLS_DC) { #define IB_RESULT (*ib_resultp) XSQLDA *in_sqlda = NULL, *out_sqlda = NULL; BIND_BUF *bind_buf = NULL; int rv = FAILURE; - TSRMLS_FETCH(); IB_RESULT = NULL; @@ -1453,8 +1451,8 @@ static int _php_ibase_exec(ibase_result **ib_resultp, ibase_query *ib_query, int _php_ibase_alloc_xsqlda(out_sqlda); if (ib_query->out_array) { - IB_RESULT->out_array = emalloc(sizeof(ibase_array)*ib_query->out_array_cnt); - memcpy(IB_RESULT->out_array, ib_query->out_array, sizeof(ibase_array)*ib_query->out_array_cnt); + IB_RESULT->out_array = emalloc(sizeof(ibase_array) * ib_query->out_array_cnt); + memcpy(IB_RESULT->out_array, ib_query->out_array, sizeof(ibase_array) * ib_query->out_array_cnt); } else { IB_RESULT->out_array = NULL; } @@ -1469,7 +1467,7 @@ static int _php_ibase_exec(ibase_result **ib_resultp, ibase_query *ib_query, int in_sqlda = emalloc(XSQLDA_LENGTH(ib_query->in_sqlda->sqld)); memcpy(in_sqlda, ib_query->in_sqlda, XSQLDA_LENGTH(ib_query->in_sqlda->sqld)); bind_buf = emalloc(sizeof(BIND_BUF) * ib_query->in_sqlda->sqld); - if (_php_ibase_bind(in_sqlda, args, bind_buf, ib_query) == FAILURE) { + if (_php_ibase_bind(in_sqlda, args, bind_buf, ib_query TSRMLS_CC) == FAILURE) { IBDEBUG("Could not bind input XSQLDA"); goto _php_ibase_exec_error; } @@ -1485,7 +1483,7 @@ static int _php_ibase_exec(ibase_result **ib_resultp, ibase_query *ib_query, int _php_ibase_exec_error: /* I'm a bad boy... */ - if (in_sqlda){ + if (in_sqlda) { efree(in_sqlda); } if (bind_buf) @@ -1496,8 +1494,9 @@ _php_ibase_exec_error: /* I'm a bad boy... */ efree(IB_RESULT); IB_RESULT = NULL; } - if (out_sqlda) + if (out_sqlda) { _php_ibase_free_xsqlda(out_sqlda); + } } return rv; @@ -1509,7 +1508,7 @@ _php_ibase_exec_error: /* I'm a bad boy... */ Start transaction */ PHP_FUNCTION(ibase_trans) { - pval ***args; + zval ***args; char tpb[20], *tpbp = NULL; long trans_argl = 0; int tpb_len = 0, argn, link_id, trans_n = 0, i; @@ -1527,7 +1526,7 @@ PHP_FUNCTION(ibase_trans) } if (argn) { - args = (pval ***) emalloc(sizeof(pval **)*argn); + args = (zval ***) emalloc(sizeof(zval **) * argn); if (zend_get_parameters_array_ex(argn, args) == FAILURE) { efree(args); RETURN_FALSE; @@ -1573,6 +1572,7 @@ PHP_FUNCTION(ibase_trans) } else { tpb[tpb_len++] = isc_tpb_concurrency; /* default isolation level */ } + /* lock resolution */ if (trans_argl & PHP_IBASE_NOWAIT) { tpb[tpb_len++] = isc_tpb_nowait; @@ -1582,9 +1582,7 @@ PHP_FUNCTION(ibase_trans) } /* find empty transaction slot */ - for (trans_n = 0; trans_n < IBASE_TRANS_ON_LINK - && ib_link->trans[trans_n]; trans_n++) - ; + for (trans_n = 0; trans_n < IBASE_TRANS_ON_LINK && ib_link->trans[trans_n]; trans_n++); if (trans_n == IBASE_TRANS_ON_LINK) { _php_ibase_module_error("Too many transactions on link"); RETURN_FALSE; @@ -1604,10 +1602,8 @@ PHP_FUNCTION(ibase_trans) /* {{{ _php_ibase_def_trans() */ /* open default transaction */ -static int _php_ibase_def_trans(ibase_db_link * ib_link, int trans_n) +static int _php_ibase_def_trans(ibase_db_link * ib_link, int trans_n TSRMLS_DC) { - TSRMLS_FETCH(); - if (ib_link == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid database link"); return FAILURE; @@ -1628,7 +1624,7 @@ static int _php_ibase_def_trans(ibase_db_link * ib_link, int trans_n) #define ROLLBACK 0 static void _php_ibase_trans_end(INTERNAL_FUNCTION_PARAMETERS, int commit) { - pval **link_trans_arg = NULL; + zval **link_trans_arg = NULL; int link_id = 0, trans_n = 0, trans_id = 0; ibase_db_link *ib_link; @@ -1656,7 +1652,7 @@ static void _php_ibase_trans_end(INTERNAL_FUNCTION_PARAMETERS, int commit) } if (ib_link->trans[trans_n] == NULL) { - php_error(E_WARNING, "Trying to commit or rollback an already handled transaction"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Trying to commit or rollback an already handled transaction"); RETURN_FALSE; } @@ -1682,7 +1678,7 @@ static void _php_ibase_trans_end(INTERNAL_FUNCTION_PARAMETERS, int commit) } /* }}} */ -/* {{{ proto bool ibase_commit(resource link_identifier) +/* {{{ proto bool ibase_commit( resource link_identifier ) Commit transaction */ PHP_FUNCTION(ibase_commit) { @@ -1690,7 +1686,7 @@ PHP_FUNCTION(ibase_commit) } /* }}} */ -/* {{{ proto bool ibase_rollback(resource link_identifier) +/* {{{ proto bool ibase_rollback( resource link_identifier ) Rollback transaction */ PHP_FUNCTION(ibase_rollback) { @@ -1702,7 +1698,7 @@ PHP_FUNCTION(ibase_rollback) Execute a query */ PHP_FUNCTION(ibase_query) { - pval ***args, **bind_args = NULL, **dummy = NULL; + zval ***args, **bind_args = NULL, **dummy = NULL; int i, link_id = 0, trans_n = 0, bind_n = 0, trans_id = 0; char *query; ibase_db_link *ib_link; @@ -1715,7 +1711,7 @@ PHP_FUNCTION(ibase_query) WRONG_PARAM_COUNT; } - args = (pval ***) emalloc(sizeof(pval **)*ZEND_NUM_ARGS()); + args = (zval ***) emalloc(sizeof(zval **) * ZEND_NUM_ARGS()); if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) { efree(args); RETURN_FALSE; @@ -1749,18 +1745,18 @@ PHP_FUNCTION(ibase_query) } /* open default transaction */ - if (_php_ibase_def_trans(ib_link, trans_n) == FAILURE) { + if (_php_ibase_def_trans(ib_link, trans_n TSRMLS_CC) == FAILURE) { efree(args); RETURN_FALSE; } - if (_php_ibase_alloc_query(&ib_query, ib_link->link, ib_link->trans[trans_n], query, ib_link->dialect) == FAILURE) { + if (_php_ibase_alloc_query(&ib_query, ib_link->link, ib_link->trans[trans_n], query, ib_link->dialect TSRMLS_CC) == FAILURE) { efree(args); RETURN_FALSE; } - if (_php_ibase_exec(&ib_result, ib_query, bind_n, bind_args) == FAILURE) { - _php_ibase_free_query(ib_query); + if (_php_ibase_exec(&ib_result, ib_query, bind_n, bind_args TSRMLS_CC) == FAILURE) { + _php_ibase_free_query(ib_query TSRMLS_CC); efree(args); RETURN_FALSE; } @@ -1770,43 +1766,43 @@ PHP_FUNCTION(ibase_query) if (ib_result) { /* select statement */ ib_result->drop_stmt = 1; /* drop stmt when free result */ ib_query->stmt = NULL; /* keep stmt when free query */ - _php_ibase_free_query(ib_query); + _php_ibase_free_query(ib_query TSRMLS_CC); ZEND_REGISTER_RESOURCE(return_value, ib_result, le_result); } else { - _php_ibase_free_query(ib_query); + _php_ibase_free_query(ib_query TSRMLS_CC); RETURN_TRUE; } } /* }}} */ -/* {{{ _php_ibase_var_pval() */ -static int _php_ibase_var_pval(pval *val, void *data, int type, int len, int scale, int flag TSRMLS_DC) +/* {{{ _php_ibase_var_zval() */ +static int _php_ibase_var_zval(zval *val, void *data, int type, int len, int scale, int flag TSRMLS_DC) { char string_data[255]; - switch(type & ~1) { + switch (type & ~1) { case SQL_VARYING: len = ((IBASE_VCHAR *) data)->var_len; data = ((IBASE_VCHAR *) data)->var_str; /* fallout */ case SQL_TEXT: - Z_STRVAL_P(val) = (char *)emalloc(sizeof(char)*(len+1)); + Z_STRVAL_P(val) = (char *) emalloc(sizeof(char) * (len + 1)); memcpy(Z_STRVAL_P(val), data, len); Z_STRVAL_P(val)[len] = '\0'; if (PG(magic_quotes_runtime)) { Z_STRVAL_P(val) = php_addslashes(Z_STRVAL_P(val), len, &len, 1 TSRMLS_CC); - } + } Z_TYPE_P(val) = IS_STRING; Z_STRLEN_P(val) = len; break; case SQL_LONG: case SQL_SHORT: if (scale) { - short j ; + short j; long n, f = 1; if ( (type & ~1) == SQL_SHORT) { n = (long) *(short *) (data); - }else { + }else { n = (long) *(long *) (data); } for (j = 0; j < -scale; j++) { @@ -1832,17 +1828,16 @@ static int _php_ibase_var_pval(pval *val, void *data, int type, int len, int sca break; case SQL_FLOAT: Z_TYPE_P(val) = IS_DOUBLE; - Z_DVAL_P(val) = *(float *)(data); + Z_DVAL_P(val) = *(float *) (data); break; case SQL_DOUBLE: if (scale) { Z_TYPE_P(val) = IS_STRING; - Z_STRLEN_P(val) = sprintf(string_data, "%.*f", -scale, *(double *)data); + Z_STRLEN_P(val) = sprintf(string_data, "%.*f", -scale, *(double *) data); Z_STRVAL_P(val) = estrdup(string_data); - } else { Z_TYPE_P(val) = IS_DOUBLE; - Z_DVAL_P(val) = *(double *)data; + Z_DVAL_P(val) = *(double *) data; } break; #ifdef SQL_INT64 @@ -1850,12 +1845,12 @@ static int _php_ibase_var_pval(pval *val, void *data, int type, int len, int sca Z_TYPE_P(val) = IS_STRING; if (scale < 0 ){ short j = 0; - ISC_INT64 f = 1; - ISC_INT64 n = (ISC_INT64) *(ISC_INT64 *) data; + ISC_INT64 n, f = 1; + n = (ISC_INT64) *(ISC_INT64 *) data; for (j = 0; j < -scale; j++) { f *= 10; } - if (n >= 0){ + if ( n >= 0){ Z_STRLEN_P(val) = sprintf (string_data, "%" ISC_INT64_FORMAT "d.%0*" ISC_INT64_FORMAT "d", (ISC_INT64) n / f, -scale, (ISC_INT64) n % f ); }else if ((n/f) != 0 ){ @@ -1867,7 +1862,7 @@ static int _php_ibase_var_pval(pval *val, void *data, int type, int len, int sca } } else { Z_STRLEN_P(val) =sprintf (string_data, "%.0" ISC_INT64_FORMAT "d", - (ISC_INT64) *(ISC_INT64 *) data); + (ISC_INT64) *(ISC_INT64 *) data); } Z_STRVAL_P(val) = estrdup(string_data); @@ -1922,16 +1917,13 @@ static int _php_ibase_var_pval(pval *val, void *data, int type, int len, int sca Z_STRLEN_P(val) = strftime(string_data, sizeof(string_data), format, &t); #else /* FIXME */ - if (!t.tm_hour && !t.tm_min && !t.tm_sec) - Z_STRLEN_P(val) = sprintf(string_data, "%02d/%02d/%4d", t.tm_mon+1, t.tm_mday, t.tm_year+1900); - else - Z_STRLEN_P(val) = sprintf(string_data, "%02d/%02d/%4d %02d:%02d:%02d", - t.tm_mon+1, t.tm_mday, t.tm_year+1900, t.tm_hour, t.tm_min, t.tm_sec); + if (!t.tm_hour && !t.tm_min && !t.tm_sec) { + Z_STRLEN_P(val) = sprintf(string_data, "%02d/%02d/%4d", t.tm_mon + 1, t.tm_mday, t.tm_year + 1900); + } else { + Z_STRLEN_P(val) = sprintf(string_data, "%02d/%02d/%4d %02d:%02d:%02d", t.tm_mon+1, t.tm_mday, t.tm_year + 1900, t.tm_hour, t.tm_min, t.tm_sec); + } #endif Z_STRVAL_P(val) = estrdup(string_data); - /* - Z_STRVAL_P(val) = string_data; - */ break; } } @@ -1942,14 +1934,14 @@ static int _php_ibase_var_pval(pval *val, void *data, int type, int len, int sca } /* }}} */ -/* {{{ _php_ibase_arr_pval() */ +/* {{{ _php_ibase_arr_zval() */ /* create multidimension array - resursion function - (*datap) argument changed */ -static int _php_ibase_arr_pval(pval *ar_pval, char **datap, ibase_array *ib_array, int dim, int flag TSRMLS_DC) + * (*datap) argument changed + */ +static int _php_ibase_arr_zval(zval *ar_zval, char **datap, ibase_array *ib_array, int dim, int flag TSRMLS_DC) { - pval tmp; + zval tmp; int i, dim_len, l_bound, u_bound; - if (dim > 16) { /* InterBase limit */ _php_ibase_module_error("Too many dimensions"); @@ -1963,25 +1955,24 @@ static int _php_ibase_arr_pval(pval *ar_pval, char **datap, ibase_array *ib_arra if (dim < ib_array->ar_desc.array_desc_dimensions - 1) { /* array again */ for (i = 0; i < dim_len; i++) { /* recursion here */ - if (_php_ibase_arr_pval(ar_pval, datap, ib_array, dim+1, flag TSRMLS_CC) == FAILURE) { + if (_php_ibase_arr_zval(ar_zval, datap, ib_array, dim + 1, flag TSRMLS_CC) == FAILURE) { return FAILURE; } } } else { /* data at last */ - array_init(ar_pval); + array_init(ar_zval); for (i = 0; i < dim_len; i++) { - if (_php_ibase_var_pval(&tmp, *datap, ib_array->el_type, + if (_php_ibase_var_zval(&tmp, *datap, + ib_array->el_type, ib_array->ar_desc.array_desc_length, ib_array->ar_desc.array_desc_scale, - flag TSRMLS_CC) == FAILURE){ + flag TSRMLS_CC) == FAILURE) { return FAILURE; } /* FIXME ??? */ - zend_hash_index_update(Z_ARRVAL_P(ar_pval), - l_bound + i, - (void *) &tmp, sizeof(pval), NULL); + zend_hash_index_update(Z_ARRVAL_P(ar_zval), l_bound + i, (void *) &tmp, sizeof(zval), NULL); *datap += ib_array->el_size; } } @@ -2004,14 +1995,14 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) RESET_ERRMSG; - switch(ZEND_NUM_ARGS()) { + switch (ZEND_NUM_ARGS()) { case 1: - if (ZEND_NUM_ARGS()==1 && zend_get_parameters_ex(1, &result_arg)==FAILURE) { + if (ZEND_NUM_ARGS() == 1 && zend_get_parameters_ex(1, &result_arg) == FAILURE) { RETURN_FALSE; } break; case 2: - if (ZEND_NUM_ARGS()==2 && zend_get_parameters_ex(2, &result_arg, &flag_arg)==FAILURE) { + if (ZEND_NUM_ARGS() == 2 && zend_get_parameters_ex(2, &result_arg, &flag_arg) == FAILURE) { RETURN_FALSE; } convert_to_long_ex(flag_arg); @@ -2038,17 +2029,15 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) RETURN_FALSE; } - if (array_init(return_value)==FAILURE) { - RETURN_FALSE; - } + array_init(return_value); arr_cnt = 0; var = ib_result->out_sqlda->sqlvar; for (i = 0; i < ib_result->out_sqlda->sqld; i++, var++) { if (((var->sqltype & 1) == 0) || *var->sqlind != -1) { - pval *tmp; - tmp = emalloc(sizeof(pval)); - switch(var->sqltype & ~1) { + zval *tmp; + tmp = emalloc(sizeof(zval)); + switch (var->sqltype & ~1) { case SQL_VARYING: case SQL_TEXT: case SQL_SHORT: @@ -2065,7 +2054,7 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) case SQL_TYPE_DATE: case SQL_TYPE_TIME: #endif - _php_ibase_var_pval(tmp, var->sqldata, var->sqltype, var->sqllen, var->sqlscale, flag TSRMLS_CC); + _php_ibase_var_zval(tmp, var->sqldata, var->sqltype, var->sqllen, var->sqlscale, flag TSRMLS_CC); break; case SQL_BLOB: if (flag & PHP_IBASE_TEXT) { /* text ? */ @@ -2086,24 +2075,26 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) } /* find total length of blob's data */ - for (p = bl_info; *p != isc_info_end && p < bl_info+sizeof(bl_info);) { + for (p = bl_info; *p != isc_info_end && p < bl_info + sizeof(bl_info);) { unsigned short item_len, item = *p++; item_len = (short) isc_vax_integer(p, 2); p += 2; - if (item == isc_info_blob_total_length) + if (item == isc_info_blob_total_length) { max_len = isc_vax_integer(p, item_len); + } p += item_len; } bl_data = emalloc(max_len+1); - for (cur_len = stat = 0; stat == 0 && cur_len < max_len; ) { + for (cur_len = stat = 0; stat == 0 && cur_len < max_len;) { unsigned short seg_len; unsigned short max_seg = (unsigned short) (max_len - cur_len > USHRT_MAX ? USHRT_MAX : max_len-cur_len); + stat = isc_get_segment(IB_STATUS, &bl_handle, &seg_len, max_seg, &bl_data[cur_len]); cur_len += seg_len; - if (cur_len > max_len) { /* never!*/ + if (cur_len > max_len) { /* never! */ efree(bl_data); _php_ibase_module_error("PHP module internal error"); RETURN_FALSE; @@ -2125,6 +2116,7 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) Z_STRLEN_P(tmp) = cur_len; Z_STRVAL_P(tmp) = estrndup(bl_data, cur_len); efree(bl_data); + } else { /* blob id only */ ISC_QUAD *bl_qd = (ISC_QUAD ISC_FAR *) var->sqldata; ibase_blob_handle *ib_blob_id; @@ -2139,11 +2131,11 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) Z_TYPE_P(tmp) = IS_STRING; Z_STRLEN_P(tmp) = sizeof(ibase_blob_handle); - Z_STRVAL_P(tmp) = estrndup((char *)ib_blob_id, sizeof(ibase_blob_handle)); + Z_STRVAL_P(tmp) = estrndup((char *) ib_blob_id, sizeof(ibase_blob_handle)); efree(ib_blob_id); } break; - case SQL_ARRAY:{ + case SQL_ARRAY: { ISC_QUAD ar_qd = *(ISC_QUAD ISC_FAR *) var->sqldata; ibase_array *ib_array = &ib_result->out_array[arr_cnt]; void *ar_data; @@ -2151,14 +2143,13 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) ar_data = emalloc(ib_array->ar_size); - if (isc_array_get_slice(IB_STATUS, &ib_result->link, &ib_result->trans, - &ar_qd, &ib_array->ar_desc, ar_data, &ib_array->ar_size)) { + if (isc_array_get_slice(IB_STATUS, &ib_result->link, &ib_result->trans, &ar_qd, &ib_array->ar_desc, ar_data, &ib_array->ar_size)) { _php_ibase_error(TSRMLS_C); RETURN_FALSE; } - tmp_ptr = ar_data; /* avoid changes in _arr_pval */ - if (_php_ibase_arr_pval(tmp, &tmp_ptr, ib_array, 0, flag TSRMLS_CC) == FAILURE) { + tmp_ptr = ar_data; /* avoid changes in _arr_zval */ + if (_php_ibase_arr_zval(tmp, &tmp_ptr, ib_array, 0, flag TSRMLS_CC) == FAILURE) { RETURN_FALSE; } efree(ar_data); @@ -2166,30 +2157,31 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) break; default: break; - } /*switch*/ + } /* switch */ + if (fetch_type & FETCH_ROW) { switch (Z_TYPE_P(tmp)) { - case IS_STRING: - add_index_stringl(return_value, i, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp), 0); - break; - case IS_LONG: - add_index_long(return_value, i, Z_LVAL_P(tmp)); - break; - case IS_DOUBLE: - add_index_double(return_value, i, Z_DVAL_P(tmp)); - break; + case IS_STRING: + add_index_stringl(return_value, i, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp), 0); + break; + case IS_LONG: + add_index_long(return_value, i, Z_LVAL_P(tmp)); + break; + case IS_DOUBLE: + add_index_double(return_value, i, Z_DVAL_P(tmp)); + break; } } else { switch (Z_TYPE_P(tmp)) { - case IS_STRING: - add_assoc_stringl(return_value, var->aliasname, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp), 0); - break; - case IS_LONG: - add_assoc_long(return_value, var->aliasname, Z_LVAL_P(tmp)); - break; - case IS_DOUBLE: - add_assoc_double(return_value, var->aliasname, Z_DVAL_P(tmp)); - break; + case IS_STRING: + add_assoc_stringl(return_value, var->aliasname, Z_STRVAL_P(tmp), Z_STRLEN_P(tmp), 0); + break; + case IS_LONG: + add_assoc_long(return_value, var->aliasname, Z_LVAL_P(tmp)); + break; + case IS_DOUBLE: + add_assoc_double(return_value, var->aliasname, Z_DVAL_P(tmp)); + break; } } efree(tmp); @@ -2203,7 +2195,7 @@ static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type) if ((var->sqltype & ~1) == SQL_ARRAY) { arr_cnt++; } - } /*for field*/ + } /* for field */ } /* }}} */ @@ -2228,8 +2220,9 @@ PHP_FUNCTION(ibase_fetch_assoc) PHP_FUNCTION(ibase_fetch_object) { _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, FETCH_ARRAY); + if (Z_TYPE_P(return_value) == IS_ARRAY) { - object_and_properties_init(return_value, &zend_standard_class_def, Z_ARRVAL_P(return_value)); + object_and_properties_init(return_value, ZEND_STANDARD_CLASS_DEF_PTR, Z_ARRVAL_P(return_value)); } } /* }}} */ @@ -2243,7 +2236,7 @@ PHP_FUNCTION(ibase_free_result) RESET_ERRMSG; - if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &result_arg)==FAILURE) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &result_arg) == FAILURE) { WRONG_PARAM_COUNT; } @@ -2288,11 +2281,11 @@ PHP_FUNCTION(ibase_prepare) query = Z_STRVAL_PP(query_arg); /* open default transaction */ - if (_php_ibase_def_trans(ib_link, trans_n) == FAILURE) { + if (_php_ibase_def_trans(ib_link, trans_n TSRMLS_CC) == FAILURE) { RETURN_FALSE; } - if (_php_ibase_alloc_query(&ib_query, ib_link->link, ib_link->trans[trans_n], query, ib_link->dialect) == FAILURE) { + if (_php_ibase_alloc_query(&ib_query, ib_link->link, ib_link->trans[trans_n], query, ib_link->dialect TSRMLS_CC) == FAILURE) { RETURN_FALSE; } ib_query->cursor_open = 0; @@ -2300,7 +2293,6 @@ PHP_FUNCTION(ibase_prepare) zend_list_addref(link_id); ZEND_REGISTER_RESOURCE(return_value, ib_query, le_query); - } /* }}} */ @@ -2308,7 +2300,7 @@ PHP_FUNCTION(ibase_prepare) Execute a previously prepared query */ PHP_FUNCTION(ibase_execute) { - pval ***args, **bind_args = NULL; + zval ***args, **bind_args = NULL; ibase_query *ib_query; ibase_result *ib_result; @@ -2318,7 +2310,7 @@ PHP_FUNCTION(ibase_execute) WRONG_PARAM_COUNT; } - args = (pval ***)emalloc(ZEND_NUM_ARGS() * sizeof(pval **)); + args = (zval ***) emalloc(ZEND_NUM_ARGS() * sizeof(zval **)); if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) { efree(args); RETURN_FALSE; @@ -2333,13 +2325,13 @@ PHP_FUNCTION(ibase_execute) /* Have we used this cursor before and it's still open? */ if (ib_query->cursor_open) { IBDEBUG("Implicitly closing a cursor"); - if (isc_dsql_free_statement(IB_STATUS, &ib_query->stmt, DSQL_close)){ + if (isc_dsql_free_statement(IB_STATUS, &ib_query->stmt, DSQL_close)) { efree(args); _php_ibase_error(TSRMLS_C); } } - if ( _php_ibase_exec(&ib_result, ib_query, ZEND_NUM_ARGS()-1, bind_args) == FAILURE) { + if (_php_ibase_exec(&ib_result, ib_query, ZEND_NUM_ARGS() - 1, bind_args TSRMLS_CC) == FAILURE) { efree(args); RETURN_FALSE; } @@ -2360,7 +2352,7 @@ PHP_FUNCTION(ibase_execute) Free memory used by a query */ PHP_FUNCTION(ibase_free_query) { - pval **query_arg; + zval **query_arg; ibase_query *ib_query; RESET_ERRMSG; @@ -2380,18 +2372,17 @@ PHP_FUNCTION(ibase_free_query) Sets the format of timestamp, date and time columns returned from queries */ PHP_FUNCTION(ibase_timefmt) { - pval ***args; + zval ***args; char *fmt = NULL; int type = PHP_IBASE_TIMESTAMP; RESET_ERRMSG; /* ??? */ - - if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 2){ + if (ZEND_NUM_ARGS() < 1 || ZEND_NUM_ARGS() > 2) { WRONG_PARAM_COUNT; } - args = (pval ***) emalloc(sizeof(pval **)*ZEND_NUM_ARGS()); + args = (zval ***) emalloc(sizeof(zval **) * ZEND_NUM_ARGS()); if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) { efree(args); RETURN_FALSE; @@ -2408,22 +2399,25 @@ PHP_FUNCTION(ibase_timefmt) switch (type) { case PHP_IBASE_TIMESTAMP: - if (IBG(timestampformat)) + if (IBG(timestampformat)) { DL_FREE(IBG(timestampformat)); + } IBG(timestampformat) = DL_STRDUP(fmt); break; case PHP_IBASE_DATE: - if (IBG(dateformat)) + if (IBG(dateformat)) { DL_FREE(IBG(dateformat)); + } IBG(dateformat) = DL_STRDUP(fmt); break; case PHP_IBASE_TIME: - if (IBG(timeformat)) + if (IBG(timeformat)) { DL_FREE(IBG(timeformat)); + } IBG(timeformat) = DL_STRDUP(fmt); break; } - + efree(args); RETURN_TRUE; } @@ -2434,7 +2428,7 @@ PHP_FUNCTION(ibase_timefmt) Get the number of fields in result */ PHP_FUNCTION(ibase_num_fields) { - pval **result; + zval **result; ibase_result *ib_result; RESET_ERRMSG; @@ -2458,7 +2452,7 @@ PHP_FUNCTION(ibase_num_fields) Get information about a field */ PHP_FUNCTION(ibase_field_info) { - pval *ret_val; + zval *ret_val; zval **result_arg, **field_arg; ibase_result *ib_result; char buf[30], *s; @@ -2480,11 +2474,11 @@ PHP_FUNCTION(ibase_field_info) convert_to_long_ex(field_arg); - if (Z_LVAL_PP(field_arg)<0 || Z_LVAL_PP(field_arg)>=ib_result->out_sqlda->sqld) - RETURN_FALSE; - - if (array_init(return_value)==FAILURE) + if (Z_LVAL_PP(field_arg) < 0 || Z_LVAL_PP(field_arg) >= ib_result->out_sqlda->sqld) { RETURN_FALSE; + } + + array_init(return_value); var = ib_result->out_sqlda->sqlvar + Z_LVAL_PP(field_arg); @@ -2535,9 +2529,8 @@ PHP_FUNCTION(ibase_field_info) /* blobs ----------------------------------- */ /* {{{ _php_ibase_blob_info(isc_blob_handle bl_handle, IBASE_BLOBINFO *bl_info) */ -static int _php_ibase_blob_info(isc_blob_handle bl_handle, IBASE_BLOBINFO *bl_info) +static int _php_ibase_blob_info(isc_blob_handle bl_handle, IBASE_BLOBINFO *bl_info TSRMLS_DC) { - static char bl_items[] = { isc_info_blob_num_segments, isc_info_blob_max_segment, @@ -2546,7 +2539,6 @@ static int _php_ibase_blob_info(isc_blob_handle bl_handle, IBASE_BLOBINFO *bl_in }; char bl_inf[sizeof(long)*8], *p; - TSRMLS_FETCH(); bl_info->max_segment = 0; bl_info->num_segments = 0; @@ -2558,11 +2550,11 @@ static int _php_ibase_blob_info(isc_blob_handle bl_handle, IBASE_BLOBINFO *bl_in return FAILURE; } - for (p = bl_inf; *p != isc_info_end && p < bl_inf+sizeof(bl_inf);) { + for (p = bl_inf; *p != isc_info_end && p < bl_inf + sizeof(bl_inf);) { unsigned short item_len; int item = *p++; - item_len = (short)isc_vax_integer(p, 2); + item_len = (short) isc_vax_integer(p, 2); p += 2; switch (item) { case isc_info_blob_num_segments: @@ -2583,9 +2575,9 @@ static int _php_ibase_blob_info(isc_blob_handle bl_handle, IBASE_BLOBINFO *bl_in case isc_info_error: /* hmm. don't think so...*/ _php_ibase_module_error("PHP module internal error"); return FAILURE; - } /*switch*/ + } /* switch */ p += item_len; - } /*for*/ + } /* for */ return SUCCESS; } /* }}} */ @@ -2618,7 +2610,7 @@ PHP_FUNCTION(ibase_blob_create) } /* open default transaction */ - if(_php_ibase_def_trans(ib_link, trans_n) == FAILURE){ + if (_php_ibase_def_trans(ib_link, trans_n TSRMLS_CC) == FAILURE) { RETURN_FALSE; } @@ -2641,18 +2633,18 @@ PHP_FUNCTION(ibase_blob_create) Open blob for retriving data parts */ PHP_FUNCTION(ibase_blob_open) { - pval *blob_arg; + zval **blob_arg; ibase_blob_handle *ib_blob, *ib_blob_id; RESET_ERRMSG; - if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &blob_arg)==FAILURE) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &blob_arg) == FAILURE) { WRONG_PARAM_COUNT; } ib_blob = (ibase_blob_handle *) emalloc(sizeof(ibase_blob_handle)); - GET_BLOB_ID_ARG(blob_arg, ib_blob_id); + GET_BLOB_ID_ARG(*blob_arg, ib_blob_id); if (ib_blob_id == NULL) { /* blob IS NULL or argument unset */ RETURN_FALSE; @@ -2677,20 +2669,20 @@ PHP_FUNCTION(ibase_blob_open) Add data into created blob */ PHP_FUNCTION(ibase_blob_add) { - pval *blob_arg, *string_arg; + zval **blob_arg, **string_arg; ibase_blob_handle *ib_blob; RESET_ERRMSG; - if (ZEND_NUM_ARGS()!=2 || getParameters(ht, 2, &blob_arg, &string_arg)==FAILURE) { + if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &blob_arg, &string_arg) == FAILURE) { WRONG_PARAM_COUNT; } GET_BLOB_HANDLE_ARG(blob_arg, ib_blob); - convert_to_string(string_arg); + convert_to_string_ex(string_arg); - if (isc_put_segment(IB_STATUS, &ib_blob->bl_handle, (unsigned short) Z_STRLEN_P(string_arg), Z_STRVAL_P(string_arg))) { + if (isc_put_segment(IB_STATUS, &ib_blob->bl_handle, (unsigned short) Z_STRLEN_PP(string_arg), Z_STRVAL_PP(string_arg))) { _php_ibase_error(TSRMLS_C); RETURN_FALSE; } @@ -2702,7 +2694,7 @@ PHP_FUNCTION(ibase_blob_add) Get len bytes data from open blob */ PHP_FUNCTION(ibase_blob_get) { - pval *blob_arg, *len_arg; + zval **blob_arg, **len_arg; int stat; char *bl_data; unsigned short max_len = 0, cur_len, seg_len; @@ -2710,20 +2702,20 @@ PHP_FUNCTION(ibase_blob_get) RESET_ERRMSG; - if (ZEND_NUM_ARGS() != 2 || getParameters(ht, 2, &blob_arg, &len_arg) == FAILURE) { + if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &blob_arg, &len_arg) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_long(len_arg); - max_len = (unsigned short) Z_LVAL_P(len_arg); + convert_to_long_ex(len_arg); + max_len = (unsigned short) Z_LVAL_PP(len_arg); GET_BLOB_HANDLE_ARG(blob_arg, ib_blob); if (ib_blob->bl_qd.gds_quad_high || ib_blob->bl_qd.gds_quad_low) { /*not null ?*/ - bl_data = emalloc(max_len+1); + bl_data = emalloc(max_len + 1); - for (cur_len = stat = 0; stat == 0; ) { + for (cur_len = stat = 0; stat == 0;) { stat = isc_get_segment(IB_STATUS, &ib_blob->bl_handle, &seg_len, (unsigned short) (max_len-cur_len), &bl_data[cur_len]); cur_len += seg_len; if (cur_len > max_len) { /* never!*/ @@ -2753,12 +2745,12 @@ PHP_FUNCTION(ibase_blob_get) /* Close or Cancel created or Close open blob */ static void _php_ibase_blob_end(INTERNAL_FUNCTION_PARAMETERS, int bl_end) { - pval *blob_arg; + zval **blob_arg; ibase_blob_handle *ib_blob; RESET_ERRMSG; - if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &blob_arg)==FAILURE) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &blob_arg) == FAILURE) { WRONG_PARAM_COUNT; } @@ -2772,15 +2764,15 @@ static void _php_ibase_blob_end(INTERNAL_FUNCTION_PARAMETERS, int bl_end) } } ib_blob->bl_handle = NULL; - RETVAL_STRINGL((char *)ib_blob, sizeof(ibase_blob_handle), 1); - zend_list_delete(Z_LVAL_P(blob_arg)); + RETVAL_STRINGL((char *) ib_blob, sizeof(ibase_blob_handle), 1); + zend_list_delete(Z_LVAL_PP(blob_arg)); } else { /* discard created blob */ if (isc_cancel_blob(IB_STATUS, &ib_blob->bl_handle)) { _php_ibase_error(TSRMLS_C); RETURN_FALSE; } ib_blob->bl_handle = NULL; - zend_list_delete(Z_LVAL_P(blob_arg)); + zend_list_delete(Z_LVAL_PP(blob_arg)); RETURN_TRUE; } } @@ -2806,30 +2798,27 @@ PHP_FUNCTION(ibase_blob_cancel) Return blob length and other useful info */ PHP_FUNCTION(ibase_blob_info) { - pval *blob_arg, *result_var; + zval **blob_arg, **result_var; ibase_blob_handle *ib_blob_id; IBASE_BLOBINFO bl_info; RESET_ERRMSG; - if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &blob_arg)==FAILURE) { + if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &blob_arg) == FAILURE) { WRONG_PARAM_COUNT; } - GET_BLOB_ID_ARG(blob_arg, ib_blob_id); + GET_BLOB_ID_ARG(*blob_arg, ib_blob_id); - if (array_init(return_value)==FAILURE){ - RETURN_FALSE; - } + array_init(return_value); - if (ib_blob_id->bl_qd.gds_quad_high || ib_blob_id->bl_qd.gds_quad_low) { /*not null ?*/ - if (isc_open_blob(IB_STATUS, &ib_blob_id->link, &ib_blob_id->trans_handle, - &ib_blob_id->bl_handle, &ib_blob_id->bl_qd)) { + if (ib_blob_id->bl_qd.gds_quad_high || ib_blob_id->bl_qd.gds_quad_low) { /* not null ? */ + if (isc_open_blob(IB_STATUS, &ib_blob_id->link, &ib_blob_id->trans_handle, &ib_blob_id->bl_handle, &ib_blob_id->bl_qd)) { _php_ibase_error(TSRMLS_C); RETURN_FALSE; } - if (_php_ibase_blob_info(ib_blob_id->bl_handle, &bl_info)) { + if (_php_ibase_blob_info(ib_blob_id->bl_handle, &bl_info TSRMLS_CC)) { RETURN_FALSE; } if (isc_close_blob(IB_STATUS, &ib_blob_id->bl_handle)) { @@ -2837,7 +2826,7 @@ PHP_FUNCTION(ibase_blob_info) RETURN_FALSE; } ib_blob_id->bl_handle = NULL; - } else { /* null blob, all values to zero */ + } else { /* null blob, all values to zero */ bl_info.max_segment = 0; bl_info.num_segments = 0; bl_info.total_length = 0; @@ -2845,30 +2834,27 @@ PHP_FUNCTION(ibase_blob_info) } /* FIXME */ - add_get_index_long(return_value, 0, bl_info.total_length, (void **)&result_var); + add_get_index_long(return_value, 0, bl_info.total_length, (void **) &result_var); /* zend_hash_pointer_update(Z_ARRVAL_P(return_value), "length", sizeof("length"), result_var); */ - add_get_index_long(return_value, 1, bl_info.num_segments, (void **)&result_var); + add_get_index_long(return_value, 1, bl_info.num_segments, (void **) &result_var); /* zend_hash_pointer_update(Z_ARRVAL_P(return_value), "numseg", sizeof("numseg"), result_var); */ - add_get_index_long(return_value, 2, bl_info.max_segment, (void **)&result_var); + add_get_index_long(return_value, 2, bl_info.max_segment, (void **) &result_var); /* zend_hash_pointer_update(Z_ARRVAL_P(return_value), "maxseg", sizeof("maxseg"), result_var); */ - add_get_index_long(return_value, 3, bl_info.bl_stream, (void **)&result_var); + add_get_index_long(return_value, 3, bl_info.bl_stream, (void **) &result_var); /* zend_hash_pointer_update(Z_ARRVAL_P(return_value), "stream", sizeof("stream"), result_var); */ - add_get_index_long(return_value, 4, - (!ib_blob_id->bl_qd.gds_quad_high - && !ib_blob_id->bl_qd.gds_quad_low), - (void **)&result_var); + add_get_index_long(return_value, 4, (!ib_blob_id->bl_qd.gds_quad_high && !ib_blob_id->bl_qd.gds_quad_low), (void **) &result_var); /* zend_hash_pointer_update(Z_ARRVAL_P(return_value), "isnull", sizeof("isnull"), result_var); */ @@ -2879,29 +2865,27 @@ PHP_FUNCTION(ibase_blob_info) Output blob contents to browser */ PHP_FUNCTION(ibase_blob_echo) { - pval *blob_arg; + zval **blob_arg; char bl_data[IBASE_BLOB_SEG]; unsigned short seg_len; ibase_blob_handle *ib_blob_id; RESET_ERRMSG; - if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &blob_arg)==FAILURE) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &blob_arg) == FAILURE) { WRONG_PARAM_COUNT; } - GET_BLOB_ID_ARG(blob_arg, ib_blob_id); + GET_BLOB_ID_ARG(*blob_arg, ib_blob_id); - if (ib_blob_id) { /*not null ?*/ + if (ib_blob_id) { /* not null? */ - if (isc_open_blob(IB_STATUS, &ib_blob_id->link, &ib_blob_id->trans_handle, - &ib_blob_id->bl_handle, &ib_blob_id->bl_qd)) { + if (isc_open_blob(IB_STATUS, &ib_blob_id->link, &ib_blob_id->trans_handle, &ib_blob_id->bl_handle, &ib_blob_id->bl_qd)) { _php_ibase_error(TSRMLS_C); RETURN_FALSE; } - while (!isc_get_segment(IB_STATUS, &ib_blob_id->bl_handle, &seg_len, sizeof(bl_data), bl_data) - || IB_STATUS[1] == isc_segment) { + while (!isc_get_segment(IB_STATUS, &ib_blob_id->bl_handle, &seg_len, sizeof(bl_data), bl_data) || IB_STATUS[1] == isc_segment) { PHPWRITE(bl_data, seg_len); } @@ -2921,15 +2905,8 @@ PHP_FUNCTION(ibase_blob_echo) } /* }}} */ -/* -extern int le_fp, le_pp; -extern int wsa_fp; -*/ -/*to handle reading and writing to windows sockets*/ - /* {{{ proto string ibase_blob_import([resource link_identifier, ] int file_id) Create blob, copy file in it, and close it */ - PHP_FUNCTION(ibase_blob_import) { zval **link_arg, **file_arg; @@ -2962,7 +2939,7 @@ PHP_FUNCTION(ibase_blob_import) } /* open default transaction */ - if (_php_ibase_def_trans(ib_link, trans_n) == FAILURE) { + if (_php_ibase_def_trans(ib_link, trans_n TSRMLS_CC) == FAILURE) { RETURN_FALSE; } @@ -2981,13 +2958,12 @@ PHP_FUNCTION(ibase_blob_import) size = 0; - while( (b = php_stream_read(stream, bl_data, sizeof(bl_data)) ) > 0) { + while ((b = php_stream_read(stream, bl_data, sizeof(bl_data))) > 0) { if (isc_put_segment(IB_STATUS, &ib_blob.bl_handle, b, bl_data)) { _php_ibase_error(TSRMLS_C); RETURN_FALSE; } size += b; - } if (isc_close_blob(IB_STATUS, &ib_blob.bl_handle)) { @@ -2996,16 +2972,17 @@ PHP_FUNCTION(ibase_blob_import) } ib_blob.bl_handle = NULL; - RETVAL_STRINGL((char *)&ib_blob, sizeof(ibase_blob_handle), 1); + RETVAL_STRINGL((char *) &ib_blob, sizeof(ibase_blob_handle), 1); } /* }}} */ + #ifdef SQL_DIALECT_V6 /* {{{ _php_ibase_user() */ static void _php_ibase_user(INTERNAL_FUNCTION_PARAMETERS, int operation) { - pval **args[8]; - char *ib_server, *dba_user_name, *dba_password, *user_name, *user_password = NULL, - *first_name = NULL, *middle_name = NULL, *last_name = NULL; + zval **args[8]; + char *ib_server, *dba_user_name, *dba_password, *user_name, *user_password = NULL; + char *first_name = NULL, *middle_name = NULL, *last_name = NULL; char service_name_buffer[128], *service_name = service_name_buffer; char spb_buffer[128], *spb = spb_buffer; unsigned short spb_length; @@ -3014,57 +2991,57 @@ static void _php_ibase_user(INTERNAL_FUNCTION_PARAMETERS, int operation) RESET_ERRMSG; switch (operation) { - case isc_action_svc_add_user: - case isc_action_svc_modify_user: - /* 5 to 8 parameters for ADD or MODIFY operation */ - if(ZEND_NUM_ARGS() < 5 || ZEND_NUM_ARGS() > 8) { - WRONG_PARAM_COUNT; - } - break; + case isc_action_svc_add_user: + case isc_action_svc_modify_user: + /* 5 to 8 parameters for ADD or MODIFY operation */ + if (ZEND_NUM_ARGS() < 5 || ZEND_NUM_ARGS() > 8) { + WRONG_PARAM_COUNT; + } + break; - case isc_action_svc_delete_user: - /* 4 parameters for DELETE operation */ - if (ZEND_NUM_ARGS() != 4) { - WRONG_PARAM_COUNT; - } + case isc_action_svc_delete_user: + /* 4 parameters for DELETE operation */ + if (ZEND_NUM_ARGS() != 4) { + WRONG_PARAM_COUNT; + } } - + if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) { RETURN_FALSE; } - switch(ZEND_NUM_ARGS()) { + switch (ZEND_NUM_ARGS()) { case 8: convert_to_string_ex(args[7]); - last_name = (*args[7])->value.str.val; + last_name = Z_STRVAL_PP(args[7]); /* fallout */ case 7: convert_to_string_ex(args[6]); - middle_name = (*args[6])->value.str.val; + middle_name = Z_STRVAL_PP(args[6]); /* fallout */ case 6: convert_to_string_ex(args[5]); - first_name = (*args[5])->value.str.val; + first_name = Z_STRVAL_PP(args[5]); /* fallout */ } if (operation != isc_action_svc_delete_user) { /* Parameter not available for DELETE operation */ convert_to_string_ex(args[4]); - user_password = (*args[4])->value.str.val; + user_password = Z_STRVAL_PP(args[4]); } convert_to_string_ex(args[3]); - user_name = (*args[3])->value.str.val; + user_name = Z_STRVAL_PP(args[3]); convert_to_string_ex(args[2]); - dba_password = (*args[2])->value.str.val; + dba_password = Z_STRVAL_PP(args[2]); convert_to_string_ex(args[1]); - dba_user_name = (*args[1])->value.str.val; + dba_user_name = Z_STRVAL_PP(args[1]); convert_to_string_ex(args[0]); - ib_server = (*args[0])->value.str.val; + ib_server = Z_STRVAL_PP(args[0]); /* zend_printf("server : %s
", ib_server); @@ -3092,13 +3069,10 @@ static void _php_ibase_user(INTERNAL_FUNCTION_PARAMETERS, int operation) /* Attach to the Service Manager */ sprintf(service_name, "%s:service_mgr", ib_server); - if (isc_service_attach(IB_STATUS, 0, service_name, - &service_handle, spb_length, spb_buffer)) { - + if (isc_service_attach(IB_STATUS, 0, service_name, &service_handle, spb_length, spb_buffer)) { _php_ibase_error(TSRMLS_C); RETURN_FALSE; - } - else { + } else { char request[128], *x, *p = request; /* Identify cluster (here, isc_action_svc_*_user) */ @@ -3107,50 +3081,46 @@ static void _php_ibase_user(INTERNAL_FUNCTION_PARAMETERS, int operation) /* Argument for username */ *p++ = isc_spb_sec_username; ADD_SPB_LENGTH(p, strlen(user_name)); - for (x = user_name ; *x; ) *p++ = *x++; + for (x = user_name ; *x;) *p++ = *x++; /* Argument for password */ if (user_password) { *p++ = isc_spb_sec_password; ADD_SPB_LENGTH(p, strlen(user_password)); - for (x = user_password ; *x; ) *p++ = *x++; + for (x = user_password ; *x;) *p++ = *x++; } /* Argument for first name */ if (first_name) { *p++ = isc_spb_sec_firstname; ADD_SPB_LENGTH(p, strlen(first_name)); - for (x = first_name ; *x; ) *p++ = *x++; + for (x = first_name ; *x;) *p++ = *x++; } /* Argument for middle name */ if (middle_name) { *p++ = isc_spb_sec_middlename; ADD_SPB_LENGTH(p, strlen(middle_name)); - for (x = middle_name ; *x; ) *p++ = *x++; + for (x = middle_name ; *x;) *p++ = *x++; } /* Argument for last name */ if (last_name) { *p++ = isc_spb_sec_lastname; ADD_SPB_LENGTH(p, strlen(last_name)); - for (x = last_name ; *x; ) *p++ = *x++; + for (x = last_name ; *x;) *p++ = *x++; } /* Let's go update: start Service Manager */ - if (isc_service_start(IB_STATUS, &service_handle, - NULL, (unsigned short) (p - request), request)) { - + if (isc_service_start(IB_STATUS, &service_handle, NULL, (unsigned short) (p - request), request)) { _php_ibase_error(TSRMLS_C); isc_service_detach(IB_STATUS, &service_handle); RETURN_FALSE; - } - else { + } else { /* Detach from Service Manager */ isc_service_detach(IB_STATUS, &service_handle); } } - RETURN_TRUE; } @@ -3179,7 +3149,6 @@ PHP_FUNCTION(ibase_delete_user) _php_ibase_user(INTERNAL_FUNCTION_PARAM_PASSTHRU, isc_action_svc_delete_user); } /* }}} */ - #endif /* SQL_DIALECT_V6 */ #endif /* HAVE_IBASE */ diff --git a/ext/interbase/php_interbase.h b/ext/interbase/php_interbase.h index 8dfbedd1f4..c7a49ae779 100644 --- a/ext/interbase/php_interbase.h +++ b/ext/interbase/php_interbase.h @@ -40,7 +40,6 @@ extern zend_module_entry ibase_module_entry; #endif #endif - PHP_MINIT_FUNCTION(ibase); PHP_RINIT_FUNCTION(ibase); PHP_MSHUTDOWN_FUNCTION(ibase); diff --git a/ext/interbase/tests/005.phpt b/ext/interbase/tests/005.phpt index 94b6521322..988b7536ed 100644 --- a/ext/interbase/tests/005.phpt +++ b/ext/interbase/tests/005.phpt @@ -108,8 +108,8 @@ three transaction on default link $tr_1 = ibase_trans(); /* this default transaction also */ $tr_2 = ibase_trans(IBASE_READ); - $tr_3 = ibase_trans(IBASE_READ+IBASE_COMMITTED+ IBASE_REC_VERSION+ IBASE_WAIT ); - $tr_4 = ibase_trans(IBASE_READ+IBASE_COMMITTED+ IBASE_REC_NO_VERSION + IBASE_NOWAIT); + $tr_3 = ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_VERSION+IBASE_WAIT); + $tr_4 = ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_NO_VERSION+IBASE_NOWAIT); $res = ibase_query("select * from test5"); @@ -141,7 +141,7 @@ three transaction on default link ibase_commit($tr_1); $tr_1 = ibase_trans(); - ibase_query($tr_1, "insert into test5 (i) values (5)"); + ibase_query($tr_1, "insert into test5 (i) values (5)"); /* tr_2 is IBASE_READ + IBASE_CONCURRENCY + IBASE_WAIT */ $res = ibase_query($tr_2, "select * from test5");