sniper Wed Jul 23 22:47:11 2003 EDT
Modified files: (Branch: PHP_4_3)
/php-src/ext/interbase interbase.c php_interbase.h
/php-src/ext/interbase/tests 005.phpt
Log:
- MFH: Sync to HEAD (TSRMLS_FETCH() nukes, pval -> zval, php_error_docref)
Index: php-src/ext/interbase/interbase.c
diff -u php-src/ext/interbase/interbase.c:1.91.2.11
php-src/ext/interbase/interbase.c:1.91.2.12
--- php-src/ext/interbase/interbase.c:1.91.2.11 Wed Jul 9 20:17:40 2003
+++ php-src/ext/interbase/interbase.c Wed Jul 23 22:47:10 2003
@@ -17,8 +17,8 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interbase.c,v 1.91.2.11 2003/07/10 00:17:40 sniper Exp $ */
-
+/* $Id: interbase.c,v 1.91.2.12 2003/07/24 02:47:10 sniper Exp $ */
+
/* TODO: Arrays, roles?
A lot... */
@@ -115,8 +115,7 @@
{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 @@
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 @@
#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 @@
}
#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 @@
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 @@
}\
}
-
/* 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 @@
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 @@
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 @@
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 @@
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_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_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_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 @@
/* }}} */
/* {{{ _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 @@
}
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 @@
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 @@
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 @@
/* {{{ 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 @@
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, "Revision", "$Revision: 1.91.2.11 $");
+ php_info_print_table_row(2, "Interbase Support", "enabled");
+ php_info_print_table_row(2, "Revision", "$Revision: 1.91.2.12 $");
#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 @@
/* {{{ _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 @@
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 @@
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 @@
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 @@
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 @@
* 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 @@
}
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 @@
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 @@
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 @@
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_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 @@
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 @@
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 @@
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 @@
/* {{{ _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 @@
}
/* 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 @@
_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_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 @@
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 @@
_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 @@
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 @@
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 @@
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 @@
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 @@
#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 @@
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 @@
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 @@
_php_ibase_module_error("Binding arrays not supported
yet");
return FAILURE;
break;
- } /*switch*/
- } /*for*/
+ } /* switch */
+ } /* for */
+
return SUCCESS;
}
/* }}} */
@@ -1371,15 +1369,14 @@
{
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 @@
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 @@
_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 @@
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 @@
_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 @@
efree(IB_RESULT);
IB_RESULT = NULL;
}
- if (out_sqlda)
+ if (out_sqlda) {
_php_ibase_free_xsqlda(out_sqlda);
+ }
}
return rv;
@@ -1509,7 +1508,7 @@
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 @@
}
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 @@
} 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 @@
}
/* 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_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 @@
#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 @@
}
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 @@
}
/* }}} */
-/* {{{ proto bool ibase_commit(resource link_identifier)
+/* {{{ proto bool ibase_commit( resource link_identifier )
Commit transaction */
PHP_FUNCTION(ibase_commit)
{
@@ -1690,7 +1686,7 @@
}
/* }}} */
-/* {{{ proto bool ibase_rollback(resource link_identifier)
+/* {{{ proto bool ibase_rollback( resource link_identifier )
Rollback transaction */
PHP_FUNCTION(ibase_rollback)
{
@@ -1702,7 +1698,7 @@
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 @@
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 @@
}
/* 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 @@
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 @@
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 @@
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 @@
}
} 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 @@
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 @@
}
/* }}} */
-/* {{{ _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 @@
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 @@
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 @@
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 @@
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 @@
}
/* 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 @@
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 @@
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 @@
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 @@
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 @@
if ((var->sqltype & ~1) == SQL_ARRAY) {
arr_cnt++;
}
- } /*for field*/
+ } /* for field */
}
/* }}} */
@@ -2228,8 +2220,9 @@
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 @@
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 @@
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 @@
zend_list_addref(link_id);
ZEND_REGISTER_RESOURCE(return_value, ib_query, le_query);
-
}
/* }}} */
@@ -2308,7 +2300,7 @@
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 @@
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 @@
/* 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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
/* 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 @@
};
char bl_inf[sizeof(long)*8], *p;
- TSRMLS_FETCH();
bl_info->max_segment = 0;
bl_info->num_segments = 0;
@@ -2558,11 +2550,11 @@
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 @@
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 @@
}
/* 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 @@
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 @@
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 @@
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 @@
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 @@
/* 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 @@
}
}
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 @@
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 @@
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 @@
}
/* 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 @@
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 @@
}
/* }}} */
-/*
-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 @@
}
/* 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 @@
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 @@
}
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 @@
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<br>", ib_server);
@@ -3092,13 +3069,10 @@
/* 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 @@
/* 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_ibase_user(INTERNAL_FUNCTION_PARAM_PASSTHRU, isc_action_svc_delete_user);
}
/* }}} */
-
#endif /* SQL_DIALECT_V6 */
#endif /* HAVE_IBASE */
Index: php-src/ext/interbase/php_interbase.h
diff -u php-src/ext/interbase/php_interbase.h:1.28.2.5
php-src/ext/interbase/php_interbase.h:1.28.2.6
--- php-src/ext/interbase/php_interbase.h:1.28.2.5 Wed Jul 9 21:40:10 2003
+++ php-src/ext/interbase/php_interbase.h Wed Jul 23 22:47:10 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_interbase.h,v 1.28.2.5 2003/07/10 01:40:10 sniper Exp $ */
+/* $Id: php_interbase.h,v 1.28.2.6 2003/07/24 02:47:10 sniper Exp $ */
#ifndef PHP_INTERBASE_H
#define PHP_INTERBASE_H
@@ -39,7 +39,6 @@
#define ISC_INT64_FORMAT "ll"
#endif
#endif
-
PHP_MINIT_FUNCTION(ibase);
PHP_RINIT_FUNCTION(ibase);
Index: php-src/ext/interbase/tests/005.phpt
diff -u php-src/ext/interbase/tests/005.phpt:1.2.4.2
php-src/ext/interbase/tests/005.phpt:1.2.4.3
--- php-src/ext/interbase/tests/005.phpt:1.2.4.2 Sat Jun 14 13:46:33 2003
+++ php-src/ext/interbase/tests/005.phpt Wed Jul 23 22:47:11 2003
@@ -108,8 +108,8 @@
$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 @@
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");
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php