nobbie Wed Feb 19 04:52:52 2003 EDT
Modified files:
/php4/ext/informix ifx.ec
Log:
- Revert latest commit
Index: php4/ext/informix/ifx.ec
diff -u php4/ext/informix/ifx.ec:1.79 php4/ext/informix/ifx.ec:1.80
--- php4/ext/informix/ifx.ec:1.79 Wed Feb 19 04:29:25 2003
+++ php4/ext/informix/ifx.ec Wed Feb 19 04:52:51 2003
@@ -20,7 +20,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ifx.ec,v 1.79 2003/02/19 09:29:25 nobbie Exp $ */
+/* $Id: ifx.ec,v 1.80 2003/02/19 09:52:51 nobbie Exp $ */
/* -------------------------------------------------------------------
* if you want a function reference : "grep '^\*\*' ifx.ec" will give
@@ -67,30 +67,24 @@
static void php_ifx_set_default_link(int id TSRMLS_DC);
static long php_intifx_getType(long id, HashTable *list TSRMLS_DC);
static long php_intifx_create_blob(long type, long mode, char* param, long len,
HashTable *list TSRMLS_DC);
-static long php_intifx_init_blob(loc_t *blob, long mode, long new TSRMLS_DC);
-static long php_intifx_init_blob_inmem(loc_t *blob, long new TSRMLS_DC);
-static long php_intifx_init_blob_infile(loc_t *blob, long new TSRMLS_DC);
-static void php_intifx_release_blob(loc_t *blob TSRMLS_DC);
static long php_intifx_free_blob(long id, HashTable *list TSRMLS_DC);
+static long php_intifx2_free_blob(long id, HashTable *list TSRMLS_DC);
static long php_intifx_get_blob(long bid, HashTable *list, char** content TSRMLS_DC);
static long php_intifx_update_blob(long bid, char* param, long len, HashTable *list
TSRMLS_DC);
static loc_t *php_intifx_get_blobloc(long bid, HashTable *list TSRMLS_DC);
-static char* php_intifx_create_tmpfile(TSRMLS_DC);
+static char* php_intifx_create_tmpfile(long bid TSRMLS_DC);
static long php_intifx_copy_blob(long bid, HashTable *list TSRMLS_DC);
-static long php_intifx_alloc_ibind(IFX_RES *Ifx_Result, int items TSRMLS_DC);
-static long php_intifx_preparse(char *statement TSRMLS_DC);
-static long php_intifx_count_descriptors(char *p_statemid TSRMLS_DC);
static char* php_intifx_null(TSRMLS_D);
static long php_intifx_create_char(char* param, long len, HashTable *list TSRMLS_DC);
static long php_intifx_free_char(long id, HashTable *list TSRMLS_DC);
static long php_intifx_update_char(long bid, char* param, long len, HashTable *list
TSRMLS_DC);
static long php_intifx_get_char(long bid, HashTable *list, char** content TSRMLS_DC);
#if HAVE_IFX_IUS
-static long php_intifxus_create_slob(long create_mode, HashTable *list);
+static long php_intifxus_create_slob(long create_mode, HashTable *list TSRMLS_DC);
static long php_intifxus_free_slob(long bid, HashTable *list TSRMLS_DC);
static long php_intifxus_close_slob(long bid, HashTable *list TSRMLS_DC);
static long php_intifxus_open_slob(long bid, long create_mode, HashTable *list
TSRMLS_DC);
-static long php_intifxus_new_slob(HashTable *list);
+static long php_intifxus_new_slob(HashTable *list TSRMLS_DC);
static ifx_lo_t *php_intifxus_get_slobloc(long bid, HashTable *list TSRMLS_DC);
#endif
@@ -122,7 +116,7 @@
{ \
if (ifx_check() < 0) { \
IFXG(sv_sqlcode) = SQLCODE; \
- php_error(E_WARNING, "%s(): Set connection %s fails (%s)",
get_active_function_name(TSRMLS_C), ifx, ifx_error(ifx)); \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Set connection %s fails
+(%s)", ifx, ifx_error(ifx)); \
RETURN_FALSE; \
} \
}
@@ -307,7 +301,7 @@
EXEC SQL close database;
EXEC SQL DISCONNECT CURRENT;
}
- efree(link);
+ free(link);
IFXG(num_persistent)--;
IFXG(num_links)--;
}
@@ -318,35 +312,6 @@
efree(Ifx_Result);
}
-static void ifx_free_blob(zend_rsrc_list_entry *rsrc TSRMLS_DC)
-{
- IFX_IDRES *Ifx_blob = (IFX_IDRES *)rsrc->ptr;
-
-
-#if IFX_VERSION < 724 /* this Informix memory leak is fixed from 7.24 on */
- /* according to the current PERL DBD::Informix */
- /* and otherwise I get segmenation violations with 7.30 */
-
- if(Ifx_blob->BLOB.mode==BLMODE_INMEM) {
- if(Ifx_blob->BLOB.blob_data.loc_buffer==NULL ||
Ifx_blob->BLOB.blob_data.loc_size<=0) {;} else {
- efree(Ifx_blob->BLOB.blob_data.loc_buffer);
- }
- } else {
- if(Ifx_blob->BLOB.blob_data.loc_fname!=NULL) {
- efree(Ifx_blob->BLOB.blob_data.loc_fname);
- }
- }
-
-#elif IFX_VERSION >= 952 /* This memory leak seems to be broken again */
- /* somewhere between 9.21 and 9.52 */
-
- php_intifx_release_blob(&Ifx_blob->BLOB.blob_data TSRMLS_C);
-
-#endif
-
- efree(Ifx_blob);
-}
-
PHP_INI_BEGIN()
STD_PHP_INI_BOOLEAN("ifx.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateInt,
allow_persistent, zend_ifx_globals, ifx_globals)
STD_PHP_INI_ENTRY_EX("ifx.max_persistent", "-1", PHP_INI_SYSTEM, OnUpdateInt,
max_persistent, zend_ifx_globals, ifx_globals, display_link_numbers)
@@ -377,7 +342,7 @@
REGISTER_INI_ENTRIES();
le_result = zend_register_list_destructors_ex(ifx_free_result,NULL,
"informix result", module_number);
- le_idresult = zend_register_list_destructors_ex(ifx_free_blob, NULL, "informix
id result", module_number);
+ le_idresult = zend_register_list_destructors_ex(NULL, NULL, "informix id
+result", module_number);
le_link = zend_register_list_destructors_ex(_close_ifx_link,NULL,
"informix link", module_number);
le_plink =
zend_register_list_destructors_ex(NULL,_close_ifx_plink,"informix persistent link",
module_number);
ifx_module_entry.type = type;
@@ -446,7 +411,6 @@
static void php_ifx_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)
{
- zval **yyhost, **yyuser, **yypasswd;
char *hashed_details;
int hashed_details_length;
@@ -457,7 +421,7 @@
if (PG(sql_safe_mode)) {
if (ZEND_NUM_ARGS()>0) {
- php_error(E_NOTICE, "%s(): SQL safe mode in effect - ignoring
host/user/password information", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "SQL safe mode in
+effect - ignoring host/user/password information");
}
host = passwd = NULL;
user = php_get_current_user();
@@ -465,55 +429,30 @@
hashed_details = (char *) emalloc(hashed_details_length+1);
sprintf(hashed_details,"ifx__%s_",user);
} else {
- host = IFXG(default_host);
- user = IFXG(default_user);
- passwd = IFXG(default_password);
+ int host_len = 0, user_len = 0, passwd_len = 0;
+ host = user = passwd = NULL;
- switch(ZEND_NUM_ARGS()) {
- case 0: /* defaults */
- break;
- case 1: {
- if (zend_get_parameters_ex(1,
&yyhost)==FAILURE) {
- RETURN_FALSE;
- }
- convert_to_string_ex(yyhost);
- host = Z_STRVAL_PP(yyhost);
- }
- break;
- case 2: {
- if (zend_get_parameters_ex(2, &yyhost,
&yyuser)==FAILURE) {
- RETURN_FALSE;
- }
- convert_to_string_ex(yyhost);
- convert_to_string_ex(yyuser);
- host = Z_STRVAL_PP(yyhost);
- user = Z_STRVAL_PP(yyuser);
- }
- break;
- case 3: {
- if (zend_get_parameters_ex(3, &yyhost,
&yyuser, &yypasswd)==FAILURE) {
- RETURN_FALSE;
- }
- convert_to_string_ex(yyhost);
- convert_to_string_ex(yyuser);
- convert_to_string_ex(yypasswd);
- host = Z_STRVAL_PP(yyhost);
- user = Z_STRVAL_PP(yyuser);
- passwd = Z_STRVAL_PP(yypasswd);
- }
- break;
- default:
- WRONG_PARAM_COUNT;
- break;
+ /* set default values if any are avaliable */
+ if (IFXG(default_host)) {
+ host = IFXG(default_host);
+ host_len = strlen(host);
+ }
+ if (IFXG(default_user)) {
+ user = IFXG(default_user);
+ user_len = strlen(IFXG(default_user));
+ }
+ if (IFXG(default_password)) {
+ passwd = IFXG(default_password);
+ passwd_len = strlen(IFXG(default_password));
+ }
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sss", &host,
+&host_len, &user, &user_len, &passwd, &passwd_len) == FAILURE) {
+ return;
}
- hashed_details_length = sizeof("ifx___")-1+
strlen(SAFE_STRING(host))+
-
strlen(SAFE_STRING(user))+
-
strlen(SAFE_STRING(passwd));
+ hashed_details_length = sizeof("ifx___") - 1 + host_len + user_len +
+passwd_len;
hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details,"ifx_%s_%s_%s", SAFE_STRING(host),
-
SAFE_STRING(user),
-
SAFE_STRING(passwd));
+ sprintf(hashed_details,"ifx_%s_%s_%s", SAFE_STRING(host),
+SAFE_STRING(user), SAFE_STRING(passwd));
}
IFXG(sv_sqlcode) = 0;
@@ -529,27 +468,27 @@
list_entry new_le;
if (IFXG(max_links)!=-1 && IFXG(num_links) >= IFXG(max_links))
{
- php_error(E_WARNING, "%s(): Too many open links (%d)",
get_active_function_name(TSRMLS_C), IFXG(num_links));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many
+open links (%d)", IFXG(num_links));
efree(hashed_details);
RETURN_FALSE;
}
if (IFXG(max_persistent)!=-1 && IFXG(num_persistent) >=
IFXG(max_persistent)) {
- php_error(E_WARNING, "%s(): Too many open persistent
links (%d)", get_active_function_name(TSRMLS_C), IFXG(num_persistent));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many
+open persistent links (%d)", IFXG(num_persistent));
efree(hashed_details);
RETURN_FALSE;
}
/* create the link */
- ifx = (char *) emalloc(sizeof(IFX));
+ ifx = (char *) malloc(sizeof(IFX));
IFXG(connectionid)++;
- sprintf(ifx,"%s%x", user, IFXG(connectionid));
+ sprintf(ifx,"%s%x", SAFE_STRING(user), IFXG(connectionid));
EXEC SQL CONNECT TO :host AS :ifx USER :user USING :passwd
WITH CONCURRENT TRANSACTION;
if (ifx_check() == IFX_ERROR) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): %s",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
- efree(ifx);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s",
+ifx_error(ifx));
+ free(ifx);
efree(hashed_details);
RETURN_FALSE;
}
@@ -559,7 +498,7 @@
new_le.ptr = ifx;
if (zend_hash_update(&EG(persistent_list), hashed_details,
hashed_details_length+1, (void *) &new_le, sizeof(list_entry), NULL)==FAILURE)
{
- efree(ifx);
+ free(ifx);
efree(hashed_details);
RETURN_FALSE;
}
@@ -578,7 +517,7 @@
if (ifx_check() == IFX_ERROR) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Link to server
lost, unable to reconnect (%s)", get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+"Link to server lost, unable to reconnect (%s)", ifx_error(ifx));
zend_hash_del(&EG(persistent_list),
hashed_details, hashed_details_length+1);
efree(hashed_details);
RETURN_FALSE;
@@ -616,7 +555,7 @@
if (ifx_check() == IFX_ERROR) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Unable to
connect (%s)", get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC,
+E_WARNING, "Unable to connect (%s)", ifx_error(ifx));
zend_hash_del(&EG(regular_list),
hashed_details, hashed_details_length+1);
efree(hashed_details);
RETURN_FALSE;
@@ -633,7 +572,7 @@
}
}
if (IFXG(max_links) != -1 && IFXG(num_links) >= IFXG(max_links)) {
- php_error(E_WARNING, "%s(): Too many open links (%d)",
get_active_function_name(TSRMLS_C), IFXG(num_links));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Too many open
+links (%d)", IFXG(num_links));
efree(hashed_details);
RETURN_FALSE;
}
@@ -646,7 +585,7 @@
if (ifx_check() == IFX_ERROR) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING,"%s(): %s",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s",
+ifx_error(ifx));
efree(hashed_details);
efree(ifx);
RETURN_FALSE;
@@ -771,7 +710,6 @@
char cursorid[32]; /* query cursor id */
char statemid[32]; /* statement id */
char descrpid[32]; /* descriptor id */
- char i_descrpid[32]; /* input descriptor binding */
char *statement; /* query text */
int fieldcount; /* field count */
int i; /* field index */
@@ -782,12 +720,12 @@
char *char_tmp;
long len;
int indicator;
- int desc_count;
$ifdef HAVE_IFX_IUS;
fixed binary 'blob' ifx_lo_t *slocator;
$endif;
EXEC SQL END DECLARE SECTION;
+ char *blobfilename;
int locind;
int ctype;
int affected_rows;
@@ -797,7 +735,6 @@
int cursoryproc;
int argc=ZEND_NUM_ARGS();
long ifx_type;
- int num_params;
if(argc < 2 || zend_get_parameters_ex(argc, &query, &ifx_link, &dummy,
&dummy)==FAILURE) {
WRONG_PARAM_COUNT;
@@ -815,7 +752,6 @@
sprintf(statemid, "statem%x", IFXG(cursorid));
sprintf(cursorid, "cursor%x", IFXG(cursorid));
sprintf(descrpid, "descrp%x", IFXG(cursorid));
- sprintf(i_descrpid, "i_descrp%x", IFXG(cursorid));
EXEC SQL set connection :ifx;
PHP_IFX_CHECK_CONNECTION(ifx);
@@ -823,69 +759,48 @@
EXEC SQL PREPARE :statemid FROM :statement;
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Prepare fails (%s)",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Prepare fails (%s)",
+ifx_error(ifx));
RETURN_FALSE;
}
affected_rows = sqlca.sqlerrd[0]; /* save estimated affected rows */
for (e = 0; e < 6; e++) sqlerrd[e] = sqlca.sqlerrd[e];
- num_params = php_intifx_preparse(statement);
-
- Ifx_Result = (IFX_RES *) emalloc(sizeof(IFX_RES));
- if (Ifx_Result == NULL) {
- php_error(E_WARNING, "%s(): Out of memory allocating IFX_RES",
get_active_function_name(TSRMLS_C));
- EXEC SQL free :statemid;
- RETURN_FALSE;
- }
-
- /* initialize result data structure */
-
- Ifx_Result->rowid = 0;
- strcpy(Ifx_Result->connecid, ifx);
- strcpy(Ifx_Result->cursorid, cursorid);
- strcpy(Ifx_Result->descrpid, descrpid);
- strcpy(Ifx_Result->i_descrpid, i_descrpid);
- strcpy(Ifx_Result->statemid, statemid);
- Ifx_Result->numcols = 0;
- Ifx_Result->numicols = 0;
-
- for (i = 0; i < MAX_RESID; ++i) {
- Ifx_Result->res_id[i] = -1;
- }
-
-
- if (!php_intifx_alloc_ibind(Ifx_Result, num_params)) {
+ EXEC SQL ALLOCATE DESCRIPTOR :descrpid WITH MAX 384;
+ if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Allocate desciptor <%s>
+fails (%s)", descrpid, ifx_error(ifx));
EXEC SQL free :statemid;
- efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Allocate i_desciptor <%s> fails (%s)",
get_active_function_name(TSRMLS_C), i_descrpid, ifx_error(ifx));
RETURN_FALSE;
}
-
- desc_count = php_intifx_count_descriptors(statemid);
- if (desc_count == 0)
- desc_count = 1;
-
- EXEC SQL ALLOCATE DESCRIPTOR :descrpid WITH MAX :desc_count;
+ EXEC SQL DESCRIBE :statemid USING SQL DESCRIPTOR :descrpid;
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Allocate desciptor <%s> fails (%s)",
get_active_function_name(TSRMLS_C), descrpid, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Describe fails (%s)",
+ifx_error(ifx));
+ EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
RETURN_FALSE;
}
- EXEC SQL DESCRIBE :statemid USING SQL DESCRIPTOR :descrpid;
- if (ifx_check() < 0) {
- IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Describe fails (%s)",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ query_type = sqlca.sqlcode;
+
+ Ifx_Result = (IFX_RES *) emalloc(sizeof(IFX_RES));
+ if (Ifx_Result == NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Out of memory allocating
+IFX_RES");
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
RETURN_FALSE;
}
- query_type = sqlca.sqlcode;
+ /* initialize result data structure */
+
+ Ifx_Result->rowid = 0;
+ strcpy(Ifx_Result->connecid, ifx);
+ strcpy(Ifx_Result->descrpid, descrpid);
+ for (i = 0; i < MAX_RESID; ++i) {
+ Ifx_Result->res_id[i] = -1;
+ }
cursoryproc = 0;
if (query_type == SQ_EXECPROC) {
@@ -905,9 +820,10 @@
*/
zval **pblobidarr, **tmp;
- EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
-
Ifx_Result->iscursory = 0;
+ strcpy(Ifx_Result->cursorid, "");
+ strcpy(Ifx_Result->descrpid, descrpid);
+ strcpy(Ifx_Result->statemid, statemid);
if(argc > 3) {
WRONG_PARAM_COUNT;
@@ -919,22 +835,25 @@
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Can't get blob array
param", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't get
+blob array param");
RETURN_FALSE;
}
-
if (Z_TYPE_PP(pblobidarr) != IS_ARRAY) {
IFXG(sv_sqlcode) = SQLCODE;
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Blob-parameter is not an
array", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+"Blob-parameter is not an array");
RETURN_FALSE;
}
zend_hash_internal_pointer_reset((*pblobidarr)->value.ht);
- for (i = 1; i <= num_params &&
(zend_hash_get_current_data((*pblobidarr)->value.ht, (void **) &tmp) == SUCCESS); ++i)
{
+ i=1;
+ while (zend_hash_get_current_data((*pblobidarr)->value.ht,
+(void **) &tmp) == SUCCESS) {
convert_to_long(*tmp);
+ if ((query_type == SQ_UPDATE) || (query_type ==
+SQ_UPDALL)) {
+ EXEC SQL SET DESCRIPTOR :descrpid COUNT = :i;
+ }
ifx_type=php_intifx_getType((int)(*tmp)->value.lval,&EG(regular_list) TSRMLS_CC);
switch(ifx_type) {
@@ -944,22 +863,21 @@
if(locator==NULL) {
IFXG(sv_sqlcode) = SQLCODE;
EXEC SQL DEALLOCATE DESCRIPTOR
:descrpid;
- EXEC SQL DEALLOCATE DESCRIPTOR
:i_descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING,"%s(): %d
is not an Informix blob-result index", get_active_function_name(TSRMLS_C),
(int)((*tmp)->value.lval));
+ php_error_docref(NULL
+TSRMLS_CC, E_WARNING, "%d is not an Informix blob-result index",
+(int)((*tmp)->value.lval));
RETURN_FALSE;
}
if(locator->loc_loctype==LOCFNAME) {
locator->loc_oflags=LOC_RONLY;
}
- EXEC SQL SET DESCRIPTOR :i_descrpid
VALUE :i DATA = :*locator, TYPE = :loc_t_type;
+ EXEC SQL SET DESCRIPTOR :descrpid
+VALUE :i DATA= :*locator, TYPE= :loc_t_type;
break;
case TYPE_CHAR:
len=php_intifx_get_char((int)((*tmp)->value.lval),&EG(regular_list),&char_tmp
TSRMLS_CC);
indicator=0;
- if(char_tmp==NULL || len < 0) {
+ if(char_tmp==NULL || len<0) {
indicator=-1;
}
len++;
@@ -971,33 +889,11 @@
TYPE= :sqlchar_type;
break;
}
-
- if (ifx_check() < 0) {
- IFXG(sv_sqlcode) = SQLCODE;
- EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
- EXEC SQL DEALLOCATE DESCRIPTOR :i_descrpid;
- EXEC SQL free :statemid;
- efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Execute immediate
fails : %s (%s)", get_active_function_name(TSRMLS_C), statement, ifx_error(ifx));
- RETURN_FALSE;
- }
-
+ i++;
zend_hash_move_forward((*pblobidarr)->value.ht);
}
Ifx_Result->paramquery=1;
-
- if (--i != num_params) {
- EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
- EXEC SQL DEALLOCATE DESCRIPTOR :i_descrpid;
- EXEC SQL free :statemid;
- efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Execute immediate fails :
number of created blobs doesn't match placeholders (?)",
get_active_function_name(TSRMLS_C), statement);
- RETURN_FALSE;
- }
-
-
- EXEC SQL EXECUTE :statemid USING SQL DESCRIPTOR :i_descrpid;
-
+ EXEC SQL EXECUTE :statemid USING SQL DESCRIPTOR :descrpid;
} else {
EXEC SQL EXECUTE :statemid;
}
@@ -1005,12 +901,9 @@
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
- if (Ifx_Result->numicols > 0) {
- EXEC SQL DEALLOCATE DESCRIPTOR :i_descrpid;
- }
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Execute immediate fails : %s
(%s)", get_active_function_name(TSRMLS_C), statement, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Execute immediate
+fails : %s (%s)", statement, ifx_error(ifx));
RETURN_FALSE;
}
Ifx_Result->affected_rows = sqlca.sqlerrd[2]; /* really affected */
@@ -1047,7 +940,7 @@
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Can not get descriptor %s (%s)",
get_active_function_name(TSRMLS_C), descrpid, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can not get
+descriptor %s (%s)", descrpid, ifx_error(ifx));
RETURN_FALSE;
}
@@ -1061,10 +954,6 @@
Ifx_Result->ishold = 1;
}
- /*
- * ifx_do part
- */
-
if (Ifx_Result->isscroll) {
if (Ifx_Result->ishold) {
EXEC SQL DECLARE :cursorid SCROLL CURSOR WITH HOLD FOR
:statemid;
@@ -1084,7 +973,7 @@
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Declare cursor fails (%s)",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Declare cursor
+fails (%s)", ifx_error(ifx));
RETURN_FALSE;
}
@@ -1095,9 +984,12 @@
EXEC SQL free :statemid;
EXEC SQL free :cursorid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Open cursor fails (%s)",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Open cursor fails
+(%s)", ifx_error(ifx));
RETURN_FALSE;
}
+ strcpy(Ifx_Result->cursorid, cursorid);
+ strcpy(Ifx_Result->descrpid, descrpid);
+ strcpy(Ifx_Result->statemid, statemid);
/* check for text/blob columns */
locind = 0;
@@ -1110,31 +1002,25 @@
) {
int bid = 0;
if(fieldtype==SQLTEXT) {
- if(IFXG(blobinfile)==0) {
-
bid=php_intifx_create_blob(TYPE_BLTEXT,BLMODE_INMEM,"",-1,&EG(regular_list) TSRMLS_CC);
-
locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
- } else {
-
bid=php_intifx_create_blob(TYPE_BLTEXT,BLMODE_INFILE, "",-1,&EG(regular_list)
TSRMLS_CC);
-
locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
- }
+
+bid=php_intifx_create_blob(TYPE_BLTEXT,BLMODE_INMEM,"",-1,&EG(regular_list)
+TSRMLS_CC);
+
+locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
EXEC SQL SET DESCRIPTOR :descrpid VALUE :i
DATA = :*locator;
}
- else if(fieldtype==SQLBYTES) {
+ if(fieldtype==SQLBYTES) {
if(IFXG(blobinfile)==0) {
bid=php_intifx_create_blob(TYPE_BLBYTE,BLMODE_INMEM,"",-1,&EG(regular_list) TSRMLS_CC);
locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
} else {
-
bid=php_intifx_create_blob(TYPE_BLBYTE,BLMODE_INFILE, "",-1,&EG(regular_list)
TSRMLS_CC);
+
+blobfilename=php_intifx_create_tmpfile(i TSRMLS_CC);
+
+bid=php_intifx_create_blob(TYPE_BLBYTE,BLMODE_INFILE,
+blobfilename,strlen(blobfilename),&EG(regular_list) TSRMLS_CC);
locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
+ locator->loc_oflags=LOC_WONLY;
}
EXEC SQL SET DESCRIPTOR :descrpid VALUE :i
DATA = :*locator;
}
-
- php_intifx_release_blob(locator TSRMLS_C);
-
$ifdef HAVE_IFX_IUS;
if(fieldtype==SQLUDTFIXED) {
- bid=php_intifxus_new_slob(&EG(regular_list));
+ bid = php_intifxus_new_slob(&EG(regular_list)
+TSRMLS_CC);
slocator=php_intifxus_get_slobloc(bid,&EG(regular_list) TSRMLS_CC);
EXEC SQL SET DESCRIPTOR :descrpid VALUE :i
DATA = :*slocator;
}
@@ -1180,7 +1066,6 @@
char cursorid[32]; /* query cursor id */
char statemid[32]; /* statement id */
char descrpid[32]; /* descriptor id */
- char i_descrpid[32]; /* input descriptor binding */
char *statement; /* query text */
int fieldcount; /* field count */
int i; /* field index */
@@ -1192,7 +1077,6 @@
int indicator;
long sqlerrd[6];
int e;
- int desc_count;
EXEC SQL END DECLARE SECTION;
int ctype;
@@ -1201,7 +1085,6 @@
int cursoryproc;
int argc=ZEND_NUM_ARGS();
long ifx_type;
- int num_params;
if(argc < 2 || zend_get_parameters_ex(argc, &query, &ifx_link, &dummy,
&dummy)==FAILURE) {
WRONG_PARAM_COUNT;
@@ -1219,7 +1102,6 @@
sprintf(statemid, "statem%x", IFXG(cursorid));
sprintf(cursorid, "cursor%x", IFXG(cursorid));
sprintf(descrpid, "descrp%x", IFXG(cursorid));
- sprintf(i_descrpid, "i_descrp%x", IFXG(cursorid));
EXEC SQL set connection :ifx;
PHP_IFX_CHECK_CONNECTION(ifx);
@@ -1227,69 +1109,49 @@
EXEC SQL PREPARE :statemid FROM :statement;
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Prepare fails (%s)",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Prepare fails (%s)",
+ifx_error(ifx));
RETURN_FALSE;
}
affected_rows = sqlca.sqlerrd[0]; /* save estimated affected rows */
for (e = 0; e < 6; e++) sqlerrd[e] = sqlca.sqlerrd[e];
- num_params = php_intifx_preparse(statement);
-
- Ifx_Result = (IFX_RES *) emalloc(sizeof(IFX_RES));
- if (Ifx_Result == NULL) {
- php_error(E_WARNING, "%s(): Out of memory allocating IFX_RES",
get_active_function_name(TSRMLS_C));
- EXEC SQL free :statemid;
- RETURN_FALSE;
- }
-
- /* initialize result data structure */
-
- Ifx_Result->rowid = 0;
- strcpy(Ifx_Result->connecid, ifx);
- strcpy(Ifx_Result->cursorid, cursorid);
- strcpy(Ifx_Result->descrpid, descrpid);
- strcpy(Ifx_Result->i_descrpid, i_descrpid);
- strcpy(Ifx_Result->statemid, statemid);
- Ifx_Result->numcols = 0;
- Ifx_Result->numicols = 0;
-
- for (i = 0; i < MAX_RESID; ++i) {
- Ifx_Result->res_id[i] = -1;
- }
-
-
- if (!php_intifx_alloc_ibind(Ifx_Result, num_params)) {
+ EXEC SQL ALLOCATE DESCRIPTOR :descrpid WITH MAX 384;
+ if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Allocate desciptor <%s>
+fails (%s)", descrpid, ifx_error(ifx));
EXEC SQL free :statemid;
- efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Allocate i_desciptor <%s> fails (%s)",
get_active_function_name(TSRMLS_C), i_descrpid, ifx_error(ifx));
RETURN_FALSE;
}
-
- desc_count = php_intifx_count_descriptors(statemid);
- if (desc_count == 0)
- desc_count = 1;
-
- EXEC SQL ALLOCATE DESCRIPTOR :descrpid WITH MAX :desc_count;
+ EXEC SQL DESCRIBE :statemid USING SQL DESCRIPTOR :descrpid;
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Allocate desciptor <%s> fails (%s)",
get_active_function_name(TSRMLS_C), descrpid, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Describe fails (%s)",
+ifx_error(ifx));
+ EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
RETURN_FALSE;
}
-
- EXEC SQL DESCRIBE :statemid USING SQL DESCRIPTOR :descrpid;
- if (ifx_check() < 0) {
+
+ query_type = sqlca.sqlcode;
+
+ Ifx_Result = (IFX_RES *) emalloc(sizeof(IFX_RES));
+ if (Ifx_Result == NULL) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Describe fails (%s)",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Out of memory allocating
+IFX_RES");
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
RETURN_FALSE;
}
- query_type = sqlca.sqlcode;
+ /* initialize result data structure */
+ Ifx_Result->rowid = 0;
+ strcpy(Ifx_Result->connecid, ifx);
+ strcpy(Ifx_Result->descrpid, descrpid);
+ strcpy(Ifx_Result->statemid, statemid);
+ for (i = 0; i < MAX_RESID; ++i) {
+ Ifx_Result->res_id[i] = -1;
+ }
cursoryproc = 0;
if (query_type == SQ_EXECPROC) {
@@ -1309,9 +1171,10 @@
*/
zval **pblobidarr, **tmp;
- EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
-
Ifx_Result->iscursory = 0;
+ strcpy(Ifx_Result->cursorid, cursorid);
+ strcpy(Ifx_Result->cursorid, "");
+ strcpy(Ifx_Result->descrpid, descrpid);
if(argc > 3) {
WRONG_PARAM_COUNT;
@@ -1319,28 +1182,32 @@
if(argc == 3) {
Ifx_Result->paramquery=1;
- if (zend_get_parameters_ex(3, &dummy, &dummy, &pblobidarr) ==
FAILURE) {
+ if (zend_get_parameters_ex(3, &dummy, &dummy,&pblobidarr) ==
+FAILURE) {
IFXG(sv_sqlcode) = SQLCODE;
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Can't get blob array
param", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't get
+blob array param");
RETURN_FALSE;
}
- if (Z_TYPE_PP(pblobidarr) != IS_ARRAY) {
+ if((*pblobidarr)->type != IS_ARRAY) {
IFXG(sv_sqlcode) = SQLCODE;
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Blob-parameter not an
array", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+"Blob-parameter not an array");
RETURN_FALSE;
}
zend_hash_internal_pointer_reset((*pblobidarr)->value.ht);
- for (i = 1; i <= num_params &&
(zend_hash_get_current_data((*pblobidarr)->value.ht, (void **) &tmp) == SUCCESS); ++i)
{
+ i=1;
+ while (zend_hash_get_current_data((*pblobidarr)->value.ht,
+(void **) &tmp) == SUCCESS) {
convert_to_long(*tmp);
-
+ if ((query_type == SQ_UPDATE) || (query_type ==
+SQ_UPDALL)) {
+ EXEC SQL SET DESCRIPTOR :descrpid COUNT = :i;
+ }
+
ifx_type=php_intifx_getType((int)(*tmp)->value.lval,&EG(regular_list) TSRMLS_CC);
switch(ifx_type) {
case TYPE_BLTEXT:
@@ -1349,20 +1216,19 @@
if(locator==NULL) {
IFXG(sv_sqlcode) = SQLCODE;
EXEC SQL DEALLOCATE DESCRIPTOR
:descrpid;
- EXEC SQL DEALLOCATE DESCRIPTOR
:i_descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): %d
is not a Informix blob-result index", get_active_function_name(TSRMLS_C),
(int)((*tmp)->value.lval));
+ php_error_docref(NULL
+TSRMLS_CC, E_WARNING, "%d is not a Informix blob-result index",
+(int)((*tmp)->value.lval));
RETURN_FALSE;
}
if(locator->loc_loctype==LOCFNAME) {
locator->loc_oflags=LOC_RONLY;
}
- EXEC SQL SET DESCRIPTOR :i_descrpid
VALUE :i DATA = :*locator, TYPE = :loc_t_type;
+ EXEC SQL SET DESCRIPTOR :descrpid
+VALUE :i DATA= :*locator, TYPE=:loc_t_type;
break;
-
case TYPE_CHAR:
len=php_intifx_get_char((int)((*tmp)->value.lval),&EG(regular_list),&char_tmp
TSRMLS_CC);
+
indicator=0;
if(char_tmp==NULL || len < 0) {
indicator=-1;
@@ -1376,30 +1242,9 @@
TYPE= :sqlchar_type;
break;
}
-
- if (ifx_check() < 0) {
- IFXG(sv_sqlcode) = SQLCODE;
- EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
- EXEC SQL DEALLOCATE DESCRIPTOR :i_descrpid;
- EXEC SQL free :statemid;
- efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Execute immediate
fails : %s (%s)", get_active_function_name(TSRMLS_C), statement, ifx_error(ifx));
- RETURN_FALSE;
- }
-
+ i++;
zend_hash_move_forward((*pblobidarr)->value.ht);
-
}
-
- if (--i != num_params) {
- EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
- EXEC SQL DEALLOCATE DESCRIPTOR :i_descrpid;
- EXEC SQL free :statemid;
- efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Execute immediate fails :
number of created blobs doesn't match placeholders (?)",
get_active_function_name(TSRMLS_C), statement);
- RETURN_FALSE;
- }
-
}
Ifx_Result->affected_rows = affected_rows; /* saved estimated from
prepare */
@@ -1410,7 +1255,6 @@
## SELECT-STATEMENT
##
*/
-
ctype = 0; /* preset */
switch(argc) {
@@ -1428,6 +1272,7 @@
break;
}
+ strcpy(Ifx_Result->cursorid, cursorid);
Ifx_Result->iscursory = 1;
Ifx_Result->affected_rows = affected_rows; /* saved estimated from
prepare */
@@ -1439,10 +1284,9 @@
EXEC SQL DEALLOCATE DESCRIPTOR :descrpid;
EXEC SQL free :statemid;
efree(Ifx_Result);
- php_error(E_WARNING, "%s(): Can not get descriptor %s (%s)",
get_active_function_name(TSRMLS_C), descrpid, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can not get
+descriptor %s (%s)", descrpid, ifx_error(ifx));
RETURN_FALSE;
}
-
Ifx_Result->numcols = fieldcount;
Ifx_Result->isscroll = Ifx_Result->ishold = 0;
@@ -1482,7 +1326,6 @@
char *cursorid; /* query cursor id */
char *statemid; /* statement id */
char *descrpid; /* descriptor id */
- char *i_descrpid; /* descriptor id */
int fieldcount; /* field count */
int i; /* field index */
short fieldtype;
@@ -1494,6 +1337,7 @@
EXEC SQL END DECLARE SECTION;
int locind;
+ char *blobfilename;
if(ZEND_NUM_ARGS() != 1 || (zend_get_parameters_ex(1, &result)==FAILURE)) {
WRONG_PARAM_COUNT;
@@ -1507,26 +1351,25 @@
cursorid = Ifx_Result->cursorid;
statemid = Ifx_Result->statemid;
descrpid = Ifx_Result->descrpid;
- i_descrpid = Ifx_Result->i_descrpid;
fieldcount = Ifx_Result->numcols;
EXEC SQL set connection :ifx;
PHP_IFX_CHECK_CONNECTION(ifx);
if (Ifx_Result->iscursory < 0) {
- php_error(E_WARNING, "%s(): Resultindex %d is not a prepared query",
get_active_function_name(TSRMLS_C), Z_LVAL_PP(result));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Resultindex %d is not a
+prepared query", Z_LVAL_PP(result));
RETURN_FALSE;
}
if (Ifx_Result->iscursory==0) { /* execute immediate */
if(Ifx_Result->paramquery!=0) {
- EXEC SQL EXECUTE :statemid USING SQL DESCRIPTOR :i_descrpid;
+ EXEC SQL EXECUTE :statemid USING SQL DESCRIPTOR :descrpid;
} else {
EXEC SQL EXECUTE :statemid;
}
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Execute immediate fails: %s",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Execute immediate
+fails: %s", ifx_error(ifx));
RETURN_FALSE;
}
Ifx_Result->affected_rows = sqlca.sqlerrd[2]; /* really affected */
@@ -1548,14 +1391,14 @@
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Declare cursor fails (%s)",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Declare cursor
+fails (%s)", ifx_error(ifx));
RETURN_FALSE;
}
EXEC SQL OPEN :cursorid;
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Open cursor fails (%s)",
get_active_function_name(TSRMLS_C), ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Open cursor fails
+(%s)", ifx_error(ifx));
RETURN_FALSE;
}
@@ -1571,28 +1414,25 @@
int bid = 0;
if(fieldtype==SQLTEXT) {
- if(IFXG(blobinfile)==0) {
-
bid=php_intifx_create_blob(TYPE_BLTEXT,BLMODE_INMEM,"",-1,&EG(regular_list) TSRMLS_CC);
-
locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
- } else {
-
bid=php_intifx_create_blob(TYPE_BLTEXT,BLMODE_INFILE,"", -1,&EG(regular_list)
TSRMLS_CC);
-
locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
- }
+
+bid=php_intifx_create_blob(TYPE_BLTEXT,BLMODE_INMEM,"",-1,&EG(regular_list)
+TSRMLS_CC);
+
+locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
EXEC SQL SET DESCRIPTOR :descrpid VALUE :i
DATA = :*locator;
}
- else if(fieldtype==SQLBYTES) {
+ if(fieldtype==SQLBYTES) {
if(IFXG(blobinfile)==0) {
bid=php_intifx_create_blob(TYPE_BLBYTE,BLMODE_INMEM,"",-1,&EG(regular_list) TSRMLS_CC);
locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
} else {
-
bid=php_intifx_create_blob(TYPE_BLBYTE,BLMODE_INFILE,"", -1,&EG(regular_list)
TSRMLS_CC);
+
+blobfilename=php_intifx_create_tmpfile(i TSRMLS_CC);
+
+bid=php_intifx_create_blob(TYPE_BLBYTE,BLMODE_INFILE,blobfilename,strlen(blobfilename),&EG(regular_list)
+ TSRMLS_CC);
locator=php_intifx_get_blobloc(bid,&EG(regular_list) TSRMLS_CC);
+ locator->loc_oflags=LOC_WONLY;
}
EXEC SQL SET DESCRIPTOR :descrpid VALUE :i
DATA = :*locator;
}
$ifdef HAVE_IFX_IUS;
if(fieldtype==SQLUDTFIXED) {
- bid=php_intifxus_new_slob(&EG(regular_list));
+ bid=php_intifxus_new_slob(&EG(regular_list)
+TSRMLS_CC);
slocator=php_intifxus_get_slobloc(bid,&EG(regular_list) TSRMLS_CC);
EXEC SQL SET DESCRIPTOR :descrpid VALUE :i
DATA = :*slocator;
}
@@ -1686,7 +1526,7 @@
rgetlmsg(ifx_errorcode, ifx_errmsg, maxmsglen, &msglen);
if (msglen > maxmsglen) {
maxmsglen = msglen + 1;
- efree(ifx_errmsg);
+ free(ifx_errmsg);
ifx_errmsg = (char *)malloc(maxmsglen + 1);
rgetlmsg(ifx_errorcode, ifx_errmsg, maxmsglen, &msglen);
}
@@ -1696,7 +1536,7 @@
returnmsg = (char *) emalloc(strlen(ifx_errmsg) + 128);
sprintf(returnmsg,ifx_errmsg, sqlca.sqlerrm);
- efree(ifx_errmsg);
+ free(ifx_errmsg);
RETURN_STRING(returnmsg,0);
}
/* }}} */
@@ -1785,6 +1625,7 @@
char string_data[256];
long long_data;
char *p;
+ char *blobfilename;
char *fetch_pos;
char *nullstr;
@@ -1819,7 +1660,7 @@
IFXG(sv_sqlcode) = 0;
if (strcmp(Ifx_Result->cursorid,"") == 0) {
- php_error(E_WARNING, "%s(): Not a select cursor!",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a select cursor!");
RETURN_FALSE;
}
@@ -1832,27 +1673,6 @@
EXEC SQL set connection :ifx;
PHP_IFX_CHECK_CONNECTION(ifx);
- locind = 0;
- for (i = 1; i <= Ifx_Result->numcols; i++) {
-
- EXEC SQL GET DESCRIPTOR :descrpid VALUE :i :fieldtype = TYPE;
- if (fieldtype == SQLBYTES || fieldtype == SQLTEXT) {
- bid_b = Ifx_Result->res_id[locind];
- if ((locator_b = php_intifx_get_blobloc(bid_b,
&EG(regular_list) TSRMLS_C)) == NULL) {
- php_error(E_WARNING, "%s(): Cant get BLOB from Result
Set!", get_active_function_name(TSRMLS_C));
- RETURN_FALSE;
- }
- locind++;
-
- if(IFXG(blobinfile)==0) {
- php_intifx_init_blob(locator_b, BLMODE_INMEM, 1);
- } else {
- php_intifx_init_blob(locator_b, BLMODE_INFILE, 1);
- }
- EXEC SQL SET DESCRIPTOR :descrpid VALUE :i DATA = :*locator_b;
- }
- }
-
if (!Ifx_Result->isscroll) {
EXEC SQL FETCH :cursorid USING SQL DESCRIPTOR :descrpid;
} else {
@@ -1874,7 +1694,7 @@
} else if (!strcasecmp(fetch_pos,"CURRENT")) {
EXEC SQL FETCH CURRENT :cursorid USING SQL DESCRIPTOR
:descrpid;
} else {
- php_error(E_WARNING, "%s(): Invalid positioning arg on
fetch", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid
+positioning arg on fetch");
}
}
}
@@ -1883,7 +1703,7 @@
switch (ifx_check()) {
case IFX_ERROR:
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Can not fetch row on
cursor %s (%s)", get_active_function_name(TSRMLS_C), ifx_error(ifx), cursorid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can not
+fetch row on cursor %s (%s)", ifx_error(ifx), cursorid);
RETURN_FALSE;
break;
case IFX_NODATA:
@@ -1895,9 +1715,7 @@
}
Ifx_Result->rowid++;
- if (array_init(return_value)==FAILURE) {
- RETURN_FALSE;
- }
+ array_init(return_value);
num_fields = fieldcount;
locind = 0;
@@ -1910,7 +1728,7 @@
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Get descriptor (field # %d) fails
(%s)", get_active_function_name(TSRMLS_C), i, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Get descriptor
+(field # %d) fails (%s)", i, ifx_error(ifx));
RETURN_FALSE;
}
@@ -1925,12 +1743,10 @@
if( (IFXG(textasvarchar)==0 && fieldtype==SQLTEXT) ||
(IFXG(byteasvarchar)==0 && fieldtype==SQLBYTES)) {
bid_b=Ifx_Result->res_id[locind];
-
locator_b=php_intifx_get_blobloc(bid_b,&EG(regular_list) TSRMLS_CC);
bid=php_intifx_copy_blob(bid_b, &EG(regular_list)
TSRMLS_CC);
php_intifx_update_blob(bid,nullstr,strlen(nullstr),&EG(regular_list) TSRMLS_CC);
add_assoc_long(return_value,fieldname,bid);
++locind;
- php_intifx_release_blob(locator_b TSRMLS_C);
continue;
}
if ((fieldtype==SQLTEXT) || (fieldtype==SQLBYTES)
@@ -1938,10 +1754,7 @@
|| (fieldtype==SQLUDTFIXED)
$endif;
) {
- bid_b=Ifx_Result->res_id[locind];
-
locator_b=php_intifx_get_blobloc(bid_b,&EG(regular_list) TSRMLS_CC);
++locind;
- php_intifx_release_blob(locator_b TSRMLS_C);
}
add_assoc_string(return_value, fieldname, nullstr, DUP);
continue;
@@ -2013,7 +1826,7 @@
fieldleng=ifx_var_getlen(&lvar_tmp);
if (fieldleng > 2) fieldleng -= 2; /* fix by Alex
Shepherd */
if ((char_data = (char *)emalloc(fieldleng + 1)) ==
NULL) {
- php_error(E_WARNING, "%s(): Out of memory",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+"Out of memory");
RETURN_FALSE;
}
memcpy(char_data,ifx_var_getdata(&lvar_tmp),fieldleng);
@@ -2027,7 +1840,7 @@
case SQLCHAR :
case SQLNCHAR :
if ((char_data = (char *)emalloc(fieldleng + 1)) ==
NULL) {
- php_error(E_WARNING, "%s(): Out of memory",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+"Out of memory");
RETURN_FALSE;
}
EXEC SQL GET DESCRIPTOR :descrpid VALUE :i :char_data
= DATA;
@@ -2042,7 +1855,7 @@
case SQLUDTFIXED :
bid_b=Ifx_Result->res_id[locind];
add_assoc_long(return_value,fieldname,bid_b);
- bid=php_intifxus_new_slob(&EG(regular_list));
+ bid=php_intifxus_new_slob(&EG(regular_list) TSRMLS_CC);
slocator=php_intifxus_get_slobloc(bid,&EG(regular_list) TSRMLS_CC);
EXEC SQL SET DESCRIPTOR :descrpid VALUE :i DATA =
:*slocator;
Ifx_Result->res_id[locind]=bid;
@@ -2054,14 +1867,6 @@
bid_b=Ifx_Result->res_id[locind];
locator_b=php_intifx_get_blobloc(bid_b,&EG(regular_list) TSRMLS_CC);
++locind;
-
- if(IFXG(blobinfile)==0) {
- php_intifx_init_blob(locator_b, BLMODE_INMEM,
0);
- }
- else {
- php_intifx_init_blob(locator_b, BLMODE_INFILE,
0);
- }
-
EXEC SQL GET DESCRIPTOR :descrpid VALUE :i :*locator_b
= DATA;
/* work around for ESQL/C bug with NULL values and
BLOBS */
@@ -2073,10 +1878,10 @@
if (locator_b->loc_indicator == -1) {
if((IFXG(textasvarchar)==0 &&
fieldtype==SQLTEXT)
|| (IFXG(byteasvarchar)==0 &&
fieldtype==SQLBYTES)) {
+ bid_b=Ifx_Result->res_id[locind];
bid=php_intifx_copy_blob(bid_b,
&EG(regular_list) TSRMLS_CC);
php_intifx_update_blob(bid,nullstr,strlen(nullstr),&EG(regular_list) TSRMLS_CC);
add_assoc_long(return_value,fieldname,bid);
- php_intifx_release_blob(locator_b
TSRMLS_C);
break;
}
if ((fieldtype==SQLTEXT) ||
(fieldtype==SQLBYTES)
@@ -2085,16 +1890,26 @@
$endif;
) {
add_assoc_string(return_value,
fieldname, nullstr, DUP);
- php_intifx_release_blob(locator_b
TSRMLS_C);
break;
}
}
if (locator_b->loc_status < 0) { /* blob too large */
- php_error(E_WARNING, "%s(): No memory (%d
bytes) for blob", get_active_function_name(TSRMLS_C), locator_b->loc_bufsize);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING,
+"No memory (%d bytes) for blob", locator_b->loc_bufsize);
RETURN_FALSE;
}
+ /* copy blob */
+ bid=php_intifx_copy_blob(bid_b, &EG(regular_list)
+TSRMLS_CC);
+
+ /* and generate new tempfile for next row */
+ if(locator_b->loc_loctype==LOCFNAME) {
+ blobfilename=php_intifx_create_tmpfile(bid_b
+TSRMLS_CC);
+
+php_intifx_update_blob(bid_b,blobfilename,strlen(blobfilename),&EG(regular_list)
+TSRMLS_CC);
+ efree(blobfilename);
+ EXEC SQL SET DESCRIPTOR :descrpid VALUE :i
+DATA= :*locator_b;
+ }
+
/* return blob as VARCHAR ? */
/* note that in case of "blobinfile" */
/* you get the file name */
@@ -2107,32 +1922,18 @@
char *content;
long lg;
- lg=php_intifx_get_blob(bid_b,
&EG(regular_list), &content TSRMLS_CC);
+ lg=php_intifx_get_blob(bid, &EG(regular_list),
+&content TSRMLS_CC);
if(content == NULL || lg < 0) {
add_assoc_string(return_value,fieldname,nullstr,DUP);
} else {
add_assoc_stringl(return_value,fieldname,content,lg,DUP);
}
-
- if (locator_b->loc_loctype == LOCMEMORY) {
- locator_b->loc_buffer = NULL;
- }
- php_intifx_release_blob(locator_b TSRMLS_C);
+ php_intifx_free_blob(bid, &EG(regular_list)
+TSRMLS_CC);
break;
}
- /* copy blob */
- bid=php_intifx_copy_blob(bid_b, &EG(regular_list)
TSRMLS_CC);
-
/* no, return as blob id */
add_assoc_long(return_value,fieldname,bid);
-
- if (locator_b->loc_loctype == LOCMEMORY) {
- locator_b->loc_buffer = NULL;
- }
-
- php_intifx_release_blob(locator_b TSRMLS_C);
-
break;
default :
sprintf(string_data,"ESQL/C : %s : unsupported field
type[%d]", fieldname, fieldleng);
@@ -2223,7 +2024,7 @@
ZEND_FETCH_RESOURCE(Ifx_Result, IFX_RES *, result, -1, "Informix Result",
le_result);
if (strcmp(Ifx_Result->cursorid,"") == 0) {
- php_error(E_WARNING, "%s(): Not a select cursor!",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a select cursor!");
RETURN_FALSE;
}
@@ -2241,7 +2042,7 @@
switch (ifx_check()) {
case IFX_ERROR:
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Can not fetch next row on cursor
%s (%s)", get_active_function_name(TSRMLS_C), ifx_error(ifx), cursorid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can not fetch
+next row on cursor %s (%s)", ifx_error(ifx), cursorid);
RETURN_FALSE;
break;
case IFX_NODATA:
@@ -2271,7 +2072,7 @@
EXEC SQL GET DESCRIPTOR :descrpid VALUE :i :fieldname = NAME;
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Get descriptor (field # %d) fails
(%s)", get_active_function_name(TSRMLS_C), i, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Get descriptor
+(field # %d) fails (%s)", i, ifx_error(ifx));
RETURN_FALSE;
}
@@ -2298,7 +2099,7 @@
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Get descriptor (field #
%d) fails (%s)", get_active_function_name(TSRMLS_C), i, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Get
+descriptor (field # %d) fails (%s)", i, ifx_error(ifx));
RETURN_FALSE;
}
@@ -2377,7 +2178,7 @@
if (fieldleng > 2) fieldleng -= 2; /* fix by
Alex Shepherd */
if ((char_data = (char *)emalloc(fieldleng +
1)) == NULL) {
- php_error(E_WARNING, "%s(): Out of
memory", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
+E_WARNING, "Out of memory");
RETURN_FALSE;
}
memcpy(char_data,ifx_var_getdata(&lvar_tmp),fieldleng);
@@ -2391,7 +2192,7 @@
case SQLNCHAR :
case SQLNVCHAR :
if ((char_data = (char *)emalloc(fieldleng +
1)) == NULL) {
- php_error(E_WARNING, "%s(): Out of
memory", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC,
+E_WARNING, "Out of memory");
RETURN_FALSE;
}
EXEC SQL GET DESCRIPTOR :descrpid VALUE :i
:char_data = DATA;
@@ -2427,7 +2228,7 @@
}
}
if (locator_b->loc_status < 0) { /* blob too
large */
- php_error(E_WARNING, "%s(): Not enough
memory (%d bytes) for blob", get_active_function_name(TSRMLS_C),
locator_b->loc_bufsize);
+ php_error_docref(NULL TSRMLS_CC,
+E_WARNING, "Not enough memory (%d bytes) for blob", locator_b->loc_bufsize);
RETURN_FALSE;
}
@@ -2438,15 +2239,15 @@
php_printf("<td>%s</td>", nullstr);
} else {
/* need an extra byte for string
terminator */
- copy_content = emalloc(lg + 1);
+ copy_content = malloc(lg + 1);
if (copy_content == NULL) {
- php_error(E_WARNING, "%s():
Not enough memory for TEXT column", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL
+TSRMLS_CC, E_WARNING, "Not enough memory for TEXT column");
RETURN_FALSE;
}
memcpy(copy_content, content, lg);
copy_content[lg]=0;
php_printf("<td>%s</td>",
copy_content);
- efree(copy_content);
+ free(copy_content);
}
break;
@@ -2467,7 +2268,7 @@
switch (ifx_check()) {
case IFX_ERROR:
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Can not fetch next row on
cursor %s (%s)", get_active_function_name(TSRMLS_C), ifx_error(ifx), cursorid);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can not
+fetch next row on cursor %s (%s)", ifx_error(ifx), cursorid);
RETURN_FALSE;
break;
case IFX_NODATA:
@@ -2523,7 +2324,7 @@
ZEND_FETCH_RESOURCE(Ifx_Result, IFX_RES *, result, -1, "Informix Result",
le_result);
if (strcmp(Ifx_Result->cursorid,"") == 0) {
- php_error(E_WARNING, "%s(): Not a select cursor!",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a select cursor!");
RETURN_FALSE;
}
@@ -2536,15 +2337,13 @@
EXEC SQL set connection :ifx;
PHP_IFX_CHECK_CONNECTION(ifx);
- if (array_init(return_value)==FAILURE) {
- RETURN_FALSE;
- }
+ array_init(return_value);
num_fields = fieldcount;
for (i = 1; i <= num_fields; i++) {
EXEC SQL GET DESCRIPTOR :descrpid VALUE :i :fieldname = NAME,
:fieldtype = TYPE;
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Get descriptor (field # %d) fails
(%s)", get_active_function_name(TSRMLS_C), i, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Get descriptor
+(field # %d) fails (%s)", i, ifx_error(ifx));
RETURN_FALSE;
}
@@ -2681,7 +2480,7 @@
ZEND_FETCH_RESOURCE(Ifx_Result, IFX_RES *, result, -1, "Informix Result",
le_result);
if (strcmp(Ifx_Result->cursorid,"") == 0) {
- php_error(E_WARNING, "%s(): Not a select cursor!",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a select cursor!");
RETURN_FALSE;
}
@@ -2694,9 +2493,7 @@
EXEC SQL set connection :ifx;
PHP_IFX_CHECK_CONNECTION(ifx);
- if (array_init(return_value)==FAILURE) {
- RETURN_FALSE;
- }
+ array_init(return_value);
num_fields = fieldcount;
for (i = 1; i <= num_fields; i++) {
@@ -2709,7 +2506,7 @@
if (ifx_check() < 0) {
IFXG(sv_sqlcode) = SQLCODE;
- php_error(E_WARNING, "%s(): Get descriptor (field # %d) fails
(%s)", get_active_function_name(TSRMLS_C), i, ifx_error(ifx));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Get descriptor
+(field # %d) fails (%s)", i, ifx_error(ifx));
RETURN_FALSE;
}
@@ -2852,9 +2649,7 @@
ZEND_FETCH_RESOURCE(Ifx_Result, IFX_RES *, result, -1, "Informix Result",
le_result);
/* create pseudo-row array to return */
- if (array_init(return_value)==FAILURE) {
- RETURN_FALSE;
- }
+ array_init(return_value);
/* fill array with 6 fields sqlerrd0 .. sqlerrd5 */
/* each ESQLC call saves these sqlca values */
@@ -2927,7 +2722,7 @@
for (i = 0; i < MAX_RESID; ++i) {
if (Ifx_Result->res_id[i]>0) {
- zend_list_delete(Ifx_Result->res_id[i]);
+ php_intifx2_free_blob(Ifx_Result->res_id[i],&EG(regular_list)
+TSRMLS_CC);
Ifx_Result->res_id[i]=-1;
}
}
@@ -2937,7 +2732,7 @@
statemid = Ifx_Result->statemid;
descrpid = Ifx_Result->descrpid;
- EXEC SQL set connection :ifx;
+ EXEC SQL set connection :ifx;
PHP_IFX_CHECK_CONNECTION(ifx);
EXEC SQL free :statemid;
@@ -2972,7 +2767,7 @@
Ifx_res = (IFX_IDRES *) zend_list_find(id,&type);
if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix id-result index",
get_active_function_name(TSRMLS_C), id);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+id-result index", id);
return -1;
}
return Ifx_res->type;
@@ -2994,29 +2789,29 @@
Creates a blob-object */
PHP_FUNCTION(ifx_create_blob)
{
- zval *pmode, *pparam,*ptype;
+ zval **pmode, **pparam,**ptype;
long id;
long mode,type;
- if (ZEND_NUM_ARGS()!=3 || getParameters(ht, 3,
&ptype,&pmode,&pparam)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=3 || zend_get_parameters_ex(3, &ptype,&pmode,&pparam) ==
+FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pmode);
- convert_to_string(pparam);
- convert_to_long(ptype);
+ convert_to_long_ex(pmode);
+ convert_to_string_ex(pparam);
+ convert_to_long_ex(ptype);
- type=Z_LVAL_P(ptype);
+ type = Z_LVAL_PP(ptype);
if(type != 0) {
- type=TYPE_BLTEXT;
+ type = TYPE_BLTEXT;
}
- mode=Z_LVAL_P(pmode);
+ mode = Z_LVAL_PP(pmode);
if(mode != 0) {
mode=BLMODE_INFILE;
}
-
id=php_intifx_create_blob(type,mode,Z_STRVAL_P(pparam),Z_STRLEN_P(pparam),&EG(regular_list)
TSRMLS_CC);
+
+id=php_intifx_create_blob(type,mode,Z_STRVAL_PP(pparam),Z_STRLEN_PP(pparam),&EG(regular_list)
+ TSRMLS_CC);
if(id < 0) {
RETURN_FALSE;
@@ -3029,7 +2824,7 @@
* internal function
* long php_intifx_create_blob(long type, long mode, char* param, long len, HashTable
*list TSRMLS_DC)
*
- * creates an blob-object for the PHP Resource list
+ * creates an blob-object
* type: 1=TEXT, 0=BYTE
* mode: blob-object holds 0=the content in momory, 1=content in file
* param: if mode=0: pointer to the content
@@ -3045,7 +2840,7 @@
Ifx_blob=emalloc(sizeof(IFX_IDRES));
if(Ifx_blob==NULL) {
- php_error(E_WARNING, "%s(): Can't create blob-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+blob-resource");
return -1;
}
@@ -3058,121 +2853,42 @@
}
Ifx_blob->BLOB.mode=(int)mode;
- if (php_intifx_init_blob(&Ifx_blob->BLOB.blob_data, mode, 1) < 0) {
- php_error(E_WARNING, "%s(): Can't create blob-resource",
get_active_function_name(TSRMLS_C));
- return -1;
- }
-
if(mode==BLMODE_INMEM) {
if(len>=0) {
char *content=emalloc(len);
if(content==NULL) {
- php_error(E_WARNING, "%s(): Can't create
blob-resource", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't
+create blob-resource");
return -1;
}
memcpy(content,param,len);
+ Ifx_blob->BLOB.blob_data.loc_loctype=LOCMEMORY;
Ifx_blob->BLOB.blob_data.loc_buffer=content;
Ifx_blob->BLOB.blob_data.loc_bufsize=len;
Ifx_blob->BLOB.blob_data.loc_size=len;
+ Ifx_blob->BLOB.blob_data.loc_mflags=0;
+ Ifx_blob->BLOB.blob_data.loc_oflags=0;
+ } else {
+ Ifx_blob->BLOB.blob_data.loc_loctype=LOCMEMORY;
+ Ifx_blob->BLOB.blob_data.loc_buffer=NULL;
+ Ifx_blob->BLOB.blob_data.loc_bufsize=-1;
+ Ifx_blob->BLOB.blob_data.loc_size=-1;
+ Ifx_blob->BLOB.blob_data.loc_mflags=0;
Ifx_blob->BLOB.blob_data.loc_oflags=0;
}
- }
-
- return zend_list_insert(Ifx_blob,le_idresult);
-}
-
-static long php_intifx_init_blob(loc_t *blob, long mode, long new TSRMLS_DC) {
-
- if (new) {
- memset(blob, 0, sizeof(loc_t));
- }
-
- blob->loc_status = 0;
- blob->loc_type = SQLTEXT;
- blob->loc_xfercount = 0;
- blob->loc_indicator = 0;
-
- if (mode == BLMODE_INMEM) {
- return php_intifx_init_blob_inmem(blob, new);
- }
- else {
- return php_intifx_init_blob_infile(blob, new);
- }
-
- return 1;
-}
-
-static long php_intifx_init_blob_inmem(loc_t *blob, long new TSRMLS_DC) {
-
- blob->loc_loctype=LOCMEMORY;
-
- if (new) {
- blob->loc_buffer=NULL;
- blob->loc_bufsize=-1;
- blob->loc_size=0;
- }
- blob->loc_mflags=0;
- blob->loc_oflags=0;
-
- return 1;
-}
-
-static long php_intifx_init_blob_infile(loc_t *blob, long new TSRMLS_DC) {
-
- char *filename;
-
- if (new) {
- filename = php_intifx_create_tmpfile(TSRMLS_C);
+ } else { /* mode = BLMODE_INFILE */
+ char *filename=emalloc(len+1);
if(filename==NULL) {
- php_error(E_WARNING, "%s(): Can't create blob-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+blob-resource");
return -1;
}
- blob->loc_fname = filename;
- blob->loc_size = 0;
- blob->loc_fd = -1;
- }
-
- blob->loc_loctype = LOCFNAME;
- blob->lc_union.lc_file.lc_mode = 0666;
- blob->loc_oflags = LOC_WONLY | LOC_RONLY;
-
- return 1;
-}
-
-static void php_intifx_release_blob(loc_t *blob TSRMLS_DC) {
-
- switch (blob->loc_loctype) {
-
- case LOCMEMORY:
-
- if (blob->loc_buffer != NULL) {
- efree(blob->loc_buffer);
- blob->loc_buffer = NULL;
- }
- break;
-
- case LOCFNAME:
-
- if (blob->loc_fd >= 0) {
- close(blob->loc_fd);
- }
- blob->loc_fd = -1;
-
- if (blob->loc_fname != NULL) {
- unlink(blob->loc_fname);
- efree(blob->loc_fname);
- blob->loc_fname = NULL;
- }
-
- break;
-
- case LOCFILE:
- case LOCUSER:
- default:
- break;
-
+ memcpy(filename,param,len);
+ filename[len]=0;
+ Ifx_blob->BLOB.blob_data.loc_loctype=LOCFNAME;
+ Ifx_blob->BLOB.blob_data.loc_fname=filename;
+ Ifx_blob->BLOB.blob_data.loc_oflags=LOC_WONLY;
+ Ifx_blob->BLOB.blob_data.loc_size=-1;
}
-
+ return zend_list_insert(Ifx_blob,le_idresult);
}
/* ----------------------------------------------------------------------
@@ -3189,15 +2905,15 @@
Duplicates the given blob-object */
PHP_FUNCTION(ifx_copy_blob)
{
- zval *pbid;
+ zval **pbid;
long newid;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pbid)==FAILURE) {
+ if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &pbid)==FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pbid);
+ convert_to_long_ex(pbid);
- newid=php_intifx_copy_blob(Z_LVAL_P(pbid),&EG(regular_list) TSRMLS_CC);
+ newid=php_intifx_copy_blob(Z_LVAL_PP(pbid),&EG(regular_list) TSRMLS_CC);
if(newid<0) {
RETURN_FALSE;
}
@@ -3209,7 +2925,7 @@
* internal function
* long php_intifx_copy_blob(long bid, HashTable *list)
*
- * duplicates the given blob-object in the PHP resource list
+ * duplicates the given blob-object
* bid: Id of Blobobject
* list: internal hashlist of php
*
@@ -3223,19 +2939,14 @@
int type;
Ifx_blob_orig = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING,"%s(): %d is not a Informix blob-result index",
get_active_function_name(TSRMLS_C), bid);
- return -1;
- }
-
- if (!(Ifx_blob_orig->type==TYPE_BLBYTE || Ifx_blob_orig->type==TYPE_BLTEXT)) {
- php_error(E_WARNING, "%s(): %d is not a Informix BYTE or TEXT type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult || !(Ifx_blob_orig->type==TYPE_BLBYTE ||
+Ifx_blob_orig->type==TYPE_BLTEXT)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+blob-result index", bid);
return -1;
}
Ifx_blob=emalloc(sizeof(IFX_IDRES));
if(Ifx_blob==NULL) {
- php_error(E_WARNING,"%s(): Can't create blob-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+blob-resource");
return -1;
}
@@ -3247,33 +2958,39 @@
locator=&(Ifx_blob->BLOB.blob_data);
locator_orig=&(Ifx_blob_orig->BLOB.blob_data);
- if (php_intifx_init_blob(locator, Ifx_blob->BLOB.mode, 1) < 0) {
- php_error(E_WARNING, "%s(): Can't create blob-resource",
get_active_function_name(TSRMLS_C));
- return -1;
- }
-
if(Ifx_blob->BLOB.mode==BLMODE_INMEM) {
char *content;
-
- if(locator_orig->loc_bufsize>=0 && locator_orig->loc_buffer!=NULL) {
+ if(locator_orig->loc_size>=0 && locator_orig->loc_buffer!=NULL) {
if((content=emalloc(locator_orig->loc_size))==NULL) {
- php_error(E_WARNING,"%s(): Can't create
blob-resource", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't
+create blob-resource");
return -1;
}
- memcpy(content,locator_orig->loc_buffer,
locator_orig->loc_bufsize);
+ memcpy(content,locator_orig->loc_buffer,
+locator_orig->loc_size);
locator->loc_buffer=content;
- locator->loc_bufsize=locator_orig->loc_bufsize;
+ locator->loc_bufsize=locator_orig->loc_size;
locator->loc_size=locator_orig->loc_size;
- }
- }
- else { /* BLMODE_INFILE */
+ } else {
+ locator->loc_buffer=NULL;
+ locator->loc_bufsize=-1;
+ locator->loc_size=-1;
+ }
+ locator->loc_loctype=LOCMEMORY;
+ locator->loc_mflags=0;
+ locator->loc_oflags=0;
+ } else { /* BLMODE_INFILE */
+ char *filename;
- if (locator_orig->loc_size) {
- php_copy_file(locator_orig->loc_fname, locator->loc_fname
TSRMLS_C);
+ if((filename=emalloc(strlen(locator_orig->loc_fname)+1))==NULL) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+blob-resource");
+ return -1;
}
+ strcpy(filename,locator_orig->loc_fname);
+ locator->loc_loctype=LOCFNAME;
+ locator->loc_fname=filename;
+ locator->loc_size=-1;
+ locator->loc_oflags=locator_orig->loc_oflags;
}
-
return zend_list_insert(Ifx_blob,le_idresult);
}
@@ -3290,15 +3007,15 @@
Deletes the blob-object */
PHP_FUNCTION(ifx_free_blob)
{
- zval *pid;
+ zval **pid;
long ret;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pid)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pid) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pid);
+ convert_to_long_ex(pid);
- ret=php_intifx_free_blob(pid->value.lval,&EG(regular_list) TSRMLS_CC);
+ ret=php_intifx_free_blob(Z_LVAL_PP(pid),&EG(regular_list) TSRMLS_CC);
if(ret<0) {
RETURN_FALSE;
}
@@ -3310,7 +3027,7 @@
* internal function
* long php_intifx_free_blob(long bid, HashTable *list)
*
- * deletes the blob-object from the PHP Resource List
+ * deletes the blob-object
* bid: Id of Blobobject
* list: internal hashlist of php
*
@@ -3324,22 +3041,69 @@
int type;
Ifx_blob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix blob-result index",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult && !(Ifx_blob->type==TYPE_BLTEXT ||
+Ifx_blob->type==TYPE_BLBYTE)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+blob-result index", bid);
return -1;
}
- if (!(Ifx_blob->type==TYPE_BLTEXT || Ifx_blob->type==TYPE_BLBYTE)) {
- php_error(E_WARNING, "%s(): %d is not a Informix BYTE or TEXT type",
get_active_function_name(TSRMLS_C), bid);
+ if(Ifx_blob->BLOB.mode==BLMODE_INMEM) {
+ if(Ifx_blob->BLOB.blob_data.loc_buffer==NULL ||
+Ifx_blob->BLOB.blob_data.loc_size<=0) {;} else {
+ efree(Ifx_blob->BLOB.blob_data.loc_buffer);
+ }
+ } else { /* BLMODE_INFILE */
+ if(Ifx_blob->BLOB.blob_data.loc_fname!=NULL) {
+ efree(Ifx_blob->BLOB.blob_data.loc_fname);
+ }
+ }
+ zend_list_delete(bid);
+ efree(Ifx_blob);
+ return 0;
+}
+
+/* ----------------------------------------------------------------------
+ * internal function
+ * long php_intifx2_free_blob(long bid, HashTable *list)
+ *
+ * deletes the blob-object
+ * bid: Id of Blobobject
+ * list: internal hashlist of php
+ *
+ * return -1 on error otherwise 0
+ * FREES BYTE-MEMORY WITH FREE(), for blob memory allocated by ESQL/C
+ * use this for freeing blob-source after select (in ifx_free_result)
+ * ----------------------------------------------------------------------
+*/
+static long php_intifx2_free_blob(long bid, HashTable *list TSRMLS_DC)
+{
+ IFX_IDRES *Ifx_blob;
+ int type;
+
+ Ifx_blob = (IFX_IDRES *) zend_list_find(bid,&type);
+ if (type!=le_idresult && !(Ifx_blob->type==TYPE_BLTEXT ||
+Ifx_blob->type==TYPE_BLBYTE)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+blob-result index", bid);
return -1;
}
- zend_list_delete(bid);
+#if IFX_VERSION < 724 /* this Informix memory leak is fixed from 7.24 on */
+ /* according to the current PERL DBD::Informix */
+ /* and otherwise I get segmenation violations with 7.30 */
+ if(Ifx_blob->BLOB.mode==BLMODE_INMEM) {
+ if(Ifx_blob->BLOB.blob_data.loc_buffer==NULL ||
+Ifx_blob->BLOB.blob_data.loc_size<=0) {;} else {
+ free(Ifx_blob->BLOB.blob_data.loc_buffer);
+ }
+ } else {
+ if(Ifx_blob->BLOB.blob_data.loc_fname!=NULL) {
+ efree(Ifx_blob->BLOB.blob_data.loc_fname);
+ }
+ }
+#endif
+
+ zend_list_delete(bid);
+ efree(Ifx_blob);
return 0;
}
-
/* ----------------------------------------------------------------------
** string ifx_get_blob(int bid)
**
@@ -3353,16 +3117,16 @@
Returns the content of the blob-object */
PHP_FUNCTION(ifx_get_blob)
{
- zval *pbid;
+ zval **pbid;
char *content;
long len;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pbid)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pbid) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pbid);
+ convert_to_long_ex(pbid);
- len=php_intifx_get_blob(pbid->value.lval,&EG(regular_list),&content
TSRMLS_CC);
+ len=php_intifx_get_blob(Z_LVAL_PP(pbid),&EG(regular_list),&content TSRMLS_CC);
if(content==NULL || len<0) {
RETURN_STRING(php_intifx_null(TSRMLS_C),1);
}
@@ -3388,13 +3152,8 @@
int type;
Ifx_blob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix blob-result index",
get_active_function_name(TSRMLS_C), bid);
- return -1;
- }
-
- if (!(Ifx_blob->type==TYPE_BLTEXT || Ifx_blob->type==TYPE_BLBYTE)) {
- php_error(E_WARNING, "%s(): %d is not a Informix BYTE or TEXT type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult && !(Ifx_blob->type==TYPE_BLTEXT ||
+Ifx_blob->type==TYPE_BLBYTE)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+blob-result index", bid);
return -1;
}
@@ -3422,16 +3181,10 @@
int type;
Ifx_blob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix blob-result index",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult && !(Ifx_blob->type==TYPE_BLTEXT ||
+Ifx_blob->type==TYPE_BLBYTE)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+blob-result index", bid);
return NULL;
}
-
- if (!(Ifx_blob->type==TYPE_BLTEXT || Ifx_blob->type==TYPE_BLBYTE)) {
- php_error(E_WARNING, "%s(): %d is not a Informix BYTE or TEXT type",
get_active_function_name(TSRMLS_C), bid);
- return NULL;
- }
-
return &(Ifx_blob->BLOB.blob_data);
}
@@ -3451,15 +3204,15 @@
Updates the content of the blob-object */
PHP_FUNCTION(ifx_update_blob)
{
- zval *pbid, *pparam;
+ zval **pbid, **pparam;
- if (ZEND_NUM_ARGS()!=2 || getParameters(ht, 2, &pbid,&pparam)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=2 || zend_get_parameters_ex(2, &pbid,&pparam) ==
+FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pbid);
- convert_to_string(pparam);
+ convert_to_long_ex(pbid);
+ convert_to_string_ex(pparam);
-
if(php_intifx_update_blob(Z_LVAL_P(pbid),Z_STRVAL_P(pparam),Z_STRLEN_P(pparam),
&EG(regular_list) TSRMLS_CC) < 0) {
+
+if(php_intifx_update_blob(Z_LVAL_PP(pbid),Z_STRVAL_PP(pparam),Z_STRLEN_PP(pparam),
+&EG(regular_list) TSRMLS_CC) < 0) {
RETURN_FALSE;
}
RETURN_TRUE;
@@ -3484,13 +3237,8 @@
int type;
Ifx_blob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING,"%s(): %d is not a Informix blob-result index",
get_active_function_name(TSRMLS_C), bid);
- return -1;
- }
-
- if (!(Ifx_blob->type==TYPE_BLTEXT || Ifx_blob->type==TYPE_BLBYTE)) {
- php_error(E_WARNING, "%s(): %d is not a Informix BYTE or TEXT type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult && !(Ifx_blob->type==TYPE_BLTEXT ||
+Ifx_blob->type==TYPE_BLBYTE)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+blob-result index", bid);
return -1;
}
@@ -3502,7 +3250,7 @@
}
if(len >= 0) {
if((content=emalloc(len))==NULL) {
- php_error(E_WARNING, "%s(): Can't create
blob-resource", get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't
+create blob-resource");
return -1;
}
memcpy(content,param, len);
@@ -3523,7 +3271,7 @@
efree(Ifx_blob->BLOB.blob_data.loc_fname);
}
if((filename=emalloc(len+1))==NULL) {
- php_error(E_WARNING, "%s(): Can't create blob-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+blob-resource");
return -1;
}
memcpy(filename,param, len);
@@ -3537,11 +3285,11 @@
/*-------------------------------------------------
* internal function
*
- * php_intifx_create_tmpfile(TSRMLS_DC)
+ * php_intifx_create_tmpfile(long bid TSRMLS_DC)
* creates a temporary file to store a blob in
*-------------------------------------------------
*/
-static char* php_intifx_create_tmpfile(TSRMLS_DC)
+static char* php_intifx_create_tmpfile(long bid TSRMLS_DC)
{
char filename[10];
char *blobdir;
@@ -3552,12 +3300,11 @@
if ((blobdir = getenv("php_blobdir")) == NULL) {
blobdir=".";
}
- sprintf(filename,"blb");
+ sprintf(filename,"blb%d",(int)bid);
if ((fp = php_open_temporary_file(blobdir, filename, &opened_path TSRMLS_CC)))
{
fclose(fp);
retval=estrndup(opened_path, strlen(opened_path));
- efree(opened_path);
} else {
retval=NULL;
}
@@ -3578,14 +3325,14 @@
Sets the default blob-mode for all select-queries */
PHP_FUNCTION(ifx_blobinfile_mode)
{
- zval *pmode;
+ zval **pmode;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pmode)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pmode) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pmode);
+ convert_to_long_ex(pmode);
- IFXG(blobinfile)=Z_LVAL_P(pmode);
+ IFXG(blobinfile)=Z_LVAL_PP(pmode);
RETURN_TRUE;
}
/* }}} */
@@ -3604,14 +3351,14 @@
Sets the default text-mode for all select-queries */
PHP_FUNCTION(ifx_textasvarchar)
{
- zval *pmode;
+ zval **pmode;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pmode)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pmode) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pmode);
+ convert_to_long_ex(pmode);
- IFXG(textasvarchar)=Z_LVAL_P(pmode);
+ IFXG(textasvarchar)=Z_LVAL_PP(pmode);
RETURN_TRUE;
}
/* }}} */
@@ -3630,14 +3377,14 @@
Sets the default byte-mode for all select-queries */
PHP_FUNCTION(ifx_byteasvarchar)
{
- zval *pmode;
+ zval **pmode;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pmode)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pmode) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pmode);
+ convert_to_long_ex(pmode);
- IFXG(byteasvarchar)=Z_LVAL_P(pmode);
+ IFXG(byteasvarchar)=Z_LVAL_PP(pmode);
RETURN_TRUE;
}
@@ -3655,155 +3402,20 @@
Sets the default return value of a NULL-value on a fetch-row */
PHP_FUNCTION(ifx_nullformat)
{
- zval *pmode;
+ zval **pmode;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pmode)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pmode) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pmode);
+ convert_to_long_ex(pmode);
- IFXG(nullformat)=Z_LVAL_P(pmode);
+ IFXG(nullformat)=Z_LVAL_PP(pmode);
RETURN_TRUE;
}
/* }}} */
/* ----------------------------------------------------------------------
- * int php_intifx_alloc_ibind(IFX_RES *Ifx_Result, int items TSRMLS_DC)
- *
- * Allocates descriptors for input parameters
- * return 0 for error. 1 for ok
- * ----------------------------------------------------------------------
-*/
-static long php_intifx_alloc_ibind(IFX_RES *Ifx_Result, int items TSRMLS_DC) {
-
- EXEC SQL BEGIN DECLARE SECTION;
- char *i_bind = Ifx_Result->i_descrpid;
- int bind_size = items;
- EXEC SQL END DECLARE SECTION;
-
- if (items > Ifx_Result->numicols) {
-
- if (Ifx_Result->numicols > 0) {
- EXEC SQL DEALLOCATE DESCRIPTOR :i_bind;
- if (ifx_check() < 0) {
- return 0;
- }
- }
-
- EXEC SQL ALLOCATE DESCRIPTOR :i_bind WITH MAX :bind_size;
- if (ifx_check() < 0) {
- return 0;
- }
-
- Ifx_Result->numicols = items;
- }
-
- return 1;
-
-}
-
-/* ----------------------------------------------------------------------
- * int php_intifx_preparse(char *statement TSRMLS_DC)
- *
- * Count the placeholders (?) parameters in the statement
- * return -1 for error. 0 or number of question marks
- * ----------------------------------------------------------------------
-*/
-static long php_intifx_preparse(char *statement TSRMLS_DC) {
-
-
- char end_quote = '\0';
- char *src;
- char *dst;
- int idx = 0;
- int style = 0;
- int laststyle = 0;
- char ch;
-
- src = statement;
- dst = statement;
- while ((ch = *src++) != '\0')
- {
- if (ch == end_quote)
- end_quote = '\0';
- else if (end_quote != '\0')
- {
- *dst++ = ch;
- continue;
- }
- else if (ch == '\'' || ch == '\"')
- end_quote = ch;
- else if (ch == '{')
- end_quote = '}';
- else if (ch == '-' && *src == '-')
- {
- end_quote = '\n';
- }
- if (ch == '?')
- {
- /* X/Open standard */
- *dst++ = '?';
- idx++;
- style = 3;
- }
- else
- {
- /* Perhaps ':=' PL/SQL construct or dbase:table in Informix */
- /* Or it could be :2 or :22 as part of a DATETIME/INTERVAL */
- *dst++ = ch;
- continue;
- }
- if (laststyle && style != laststyle)
- return -1;
-
- laststyle = style;
- }
-
- *dst = '\0';
- return(idx);
-
-}
-
-
-/* ----------------------------------------------------------------------
- * int php_intifx_count_descriptors(char *p_statemid TSRMLS_DC)
- *
- * count the number of descriptors allocated for a certain statement
- * return 384 or number of descriptors
- * ----------------------------------------------------------------------
-*/
-static long php_intifx_count_descriptors(char *p_statemid TSRMLS_DC) {
-
- EXEC SQL BEGIN DECLARE SECTION;
- char *statemid = p_statemid;
- EXEC SQL END DECLARE SECTION;
-
- struct sqlda *s_da;
- int ret = 384;
-
- EXEC SQL DESCRIBE :statemid INTO s_da;
-
- if (ifx_check() >= 0) {
-
- ret = s_da->sqld;
-
-/*
- * Thanks to DBD-Informix
- */
-
-#if (ESQLC_VERSION >= 720 || (ESQLC_VERSION >= 501 && ESQLC_VERSION < 600))
- SqlFreeMem(s_da, SQLDA_FREE);
-#else
- free(s_da);
-#endif
- }
-
- return ret;
-
-}
-
-/* ----------------------------------------------------------------------
* void php_intifx_null()
*
* return the NULL-string depending on .nullformat
@@ -3835,15 +3447,15 @@
Creates a char-object */
PHP_FUNCTION(ifx_create_char)
{
- zval *pparam;
+ zval **pparam;
long id;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pparam)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pparam) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_string(pparam);
+ convert_to_string_ex(pparam);
-
id=php_intifx_create_char(Z_STRVAL_P(pparam),Z_STRLEN_P(pparam),&EG(regular_list)
TSRMLS_CC);
+
+id=php_intifx_create_char(Z_STRVAL_PP(pparam),Z_STRLEN_PP(pparam),&EG(regular_list)
+TSRMLS_CC);
if(id < 0) {
RETURN_FALSE;
@@ -3869,7 +3481,7 @@
Ifx_char=emalloc(sizeof(IFX_IDRES));
if(Ifx_char==NULL) {
- php_error(E_WARNING, "%s(): Can't create char-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+char-resource");
return -1;
}
@@ -3882,7 +3494,7 @@
Ifx_char->CHAR.char_data=emalloc(len+1);
if(Ifx_char->CHAR.char_data==NULL) {
efree(Ifx_char);
- php_error(E_WARNING, "%s(): Can't create char-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+char-resource");
return -1;
}
memcpy(Ifx_char->CHAR.char_data,param,len);
@@ -3905,16 +3517,16 @@
Returns the content of the char-object */
PHP_FUNCTION(ifx_get_char)
{
- zval *pbid;
+ zval **pbid;
char *content;
long len;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pbid)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pbid) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pbid);
+ convert_to_long_ex(pbid);
- len=php_intifx_get_char(Z_LVAL_P(pbid),&EG(regular_list),&content TSRMLS_CC);
+ len=php_intifx_get_char(Z_LVAL_PP(pbid),&EG(regular_list),&content TSRMLS_CC);
if(content==NULL || len < 0) {
RETURN_STRING("",1);
}
@@ -3940,17 +3552,11 @@
int type;
Ifx_char = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix char-result index",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult && !(Ifx_char->type==TYPE_CHAR)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+char-result index", bid);
return -1;
}
- if (!Ifx_char->type==TYPE_CHAR) {
- php_error(E_WARNING, "%s(): %d is not a Informix CHAR type",
get_active_function_name(TSRMLS_C), bid);
- return -1;
- }
-
-
*content=Ifx_char->CHAR.char_data;
return Ifx_char->CHAR.len;
}
@@ -3968,14 +3574,14 @@
Deletes the char-object */
PHP_FUNCTION(ifx_free_char)
{
- zval *pid;
+ zval **pid;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pid)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pid) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pid);
+ convert_to_long_ex(pid);
- if(php_intifx_free_char(Z_LVAL_P(pid),&EG(regular_list) TSRMLS_CC) < 0) {
+ if(php_intifx_free_char(Z_LVAL_PP(pid),&EG(regular_list) TSRMLS_CC) < 0) {
RETURN_FALSE;
}
RETURN_TRUE;
@@ -3999,13 +3605,8 @@
int type;
Ifx_char = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix char-result index",
get_active_function_name(TSRMLS_C), bid);
- return -1;
- }
-
- if (!Ifx_char->type==TYPE_CHAR) {
- php_error(E_WARNING, "%s(): %d is not a Informix CHAR type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult && !(Ifx_char->type==TYPE_CHAR)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+char-result index", bid);
return -1;
}
@@ -4031,15 +3632,15 @@
Updates the content of the char-object */
PHP_FUNCTION(ifx_update_char)
{
- zval *pbid,*pparam;
+ zval **pbid, **pparam;
- if (ZEND_NUM_ARGS()!=2 || getParameters(ht, 2, &pbid,&pparam)==FAILURE) {
+ if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2, &pbid,&pparam) == FAILURE)
+{
WRONG_PARAM_COUNT;
}
- convert_to_long(pbid);
- convert_to_string(pparam);
+ convert_to_long_ex(pbid);
+ convert_to_string_ex(pparam);
-
if(php_intifx_update_char(Z_LVAL_P(pbid),Z_STRVAL_P(pparam),Z_STRLEN_P(pparam),&EG(regular_list)
TSRMLS_CC) < 0) {
+
+if(php_intifx_update_char(Z_LVAL_PP(pbid),Z_STRVAL_PP(pparam),Z_STRLEN_PP(pparam),&EG(regular_list)
+ TSRMLS_CC) < 0) {
RETURN_FALSE;
}
RETURN_TRUE;
@@ -4064,13 +3665,8 @@
int type;
Ifx_char = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix char-result index",
get_active_function_name(TSRMLS_C), bid);
- return -1;
- }
-
- if (!Ifx_char->type==TYPE_CHAR) {
- php_error(E_WARNING, "%s(): %d is not a Informix CHAR type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult && !(Ifx_char->type==TYPE_CHAR)) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+char-result index", bid);
return -1;
}
@@ -4086,7 +3682,7 @@
} else {
Ifx_char->CHAR.char_data=emalloc(len+1);
if(Ifx_char->CHAR.char_data==NULL) {
- php_error(E_WARNING, "%s(): Can't create char-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+char-resource");
return -1;
}
memcpy(Ifx_char->CHAR.char_data,param,len);
@@ -4096,7 +3692,6 @@
return 0;
}
-
$ifdef HAVE_IFX_IUS;
/* ----------------------------------------------------------------------
@@ -4112,15 +3707,15 @@
Creates a slob-object and opens it */
PHP_FUNCTION(ifxus_create_slob)
{
- zval *pmode;
+ zval **pmode;
long id;
long mode,create_mode;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pmode)==FAILURE) {
+ if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &pmode)==FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pmode);
- mode=Z_LVAL_P(pmode);
+ convert_to_long_ex(pmode);
+ mode=Z_LVAL_PP(pmode);
create_mode=0;
if((mode&1) !=0)
@@ -4136,7 +3731,7 @@
if((mode&32) !=0)
create_mode|=LO_NOBUFFER;
- id=php_intifxus_create_slob(create_mode,&EG(regular_list));
+ id = php_intifxus_create_slob(create_mode, &EG(regular_list) TSRMLS_CC);
if(id < 0) {
RETURN_FALSE;
@@ -4162,20 +3757,20 @@
Ifx_slob=emalloc(sizeof(IFX_IDRES));
if(Ifx_slob==NULL) {
- php_error(E_WARNING, "%s(): Can't create slob-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+slob-resource");
return -1;
}
errcode=ifx_lo_def_create_spec(&(Ifx_slob->SLOB.createspec));
if(errcode<0) {
- php_error(E_WARNING, "%s(): Can't create slob-resource: %d",
get_active_function_name(TSRMLS_C), errcode);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+slob-resource: %d", errcode);
return -1;
}
Ifx_slob->type=TYPE_SLOB;
Ifx_slob->SLOB.lofd=ifx_lo_create(Ifx_slob->SLOB.createspec,create_mode,&(Ifx_slob->SLOB.slob_data),&errcode);
if(errcode<0 || Ifx_slob->SLOB.lofd<0) {
- php_error(E_WARNING, "%s(): Can't create slob-resource: %d",
get_active_function_name(TSRMLS_C), errcode);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+slob-resource: %d", errcode);
return -1;
}
return zend_list_insert(Ifx_slob,le_idresult);
@@ -4194,14 +3789,14 @@
Deletes the slob-object */
PHP_FUNCTION(ifxus_free_slob)
{
- zval *pid;
+ zval **pid;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pid)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=1 || zend_get_parameters_ex(1, &pid) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pid);
+ convert_to_long_ex(pid);
- if(php_intifxus_free_slob(Z_LVAL_P(pid),&EG(regular_list) TSRMLS_CC) < 0) {
+ if(php_intifxus_free_slob(Z_LVAL_PP(pid),&EG(regular_list) TSRMLS_CC) < 0) {
RETURN_FALSE;
}
RETURN_TRUE;
@@ -4225,16 +3820,11 @@
int type;
Ifx_slob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix slob-result index",
get_active_function_name(TSRMLS_C), bid);
- return -1;
- }
-
- if (Ifx_slob->type!=TYPE_SLOB) {
- php_error(E_WARNING, "%s(): %d is not a Informix SLOB type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult || Ifx_slob->type!=TYPE_SLOB) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+slob-result index", bid);
return -1;
}
-
+
if(php_intifxus_close_slob(bid, &EG(regular_list) TSRMLS_CC) < 0) {
return -1;
}
@@ -4261,13 +3851,13 @@
Deletes the slob-object */
PHP_FUNCTION(ifxus_close_slob)
{
- zval *pid;
+ zval **pid;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pid)==FAILURE) {
+ if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &pid) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pid);
- if(php_intifxus_close_slob(Z_LVAL_P(pid),&EG(regular_list) TSRMLS_CC) < 0) {
+ convert_to_long_ex(pid);
+ if(php_intifxus_close_slob(Z_LVAL_PP(pid),&EG(regular_list) TSRMLS_CC) < 0) {
RETURN_FALSE;
}
RETURN_TRUE;
@@ -4291,23 +3881,18 @@
int type;
Ifx_slob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix slob-result index",
get_active_function_name(TSRMLS_C), bid);
- return -1;
- }
-
- if (Ifx_slob->type!=TYPE_SLOB) {
- php_error(E_WARNING, "%s(): %d is not a Informix SLOB type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult || Ifx_slob->type!=TYPE_SLOB) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+slob-result index", bid);
return -1;
}
-
+
if(Ifx_slob->SLOB.lofd<0) {
- php_error(E_WARNING, "%s(): Slob-resource already closed",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Slob-resource already
+closed");
return -1;
}
if(ifx_lo_close(Ifx_slob->SLOB.lofd)<0) {
- php_error(E_WARNING, "%s(): Can't close slob-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't close
+slob-resource");
return -1;
}
Ifx_slob->SLOB.lofd=-1;
@@ -4328,15 +3913,15 @@
Opens an slob-object */
PHP_FUNCTION(ifxus_open_slob)
{
- zval *pbid,*pmode;
+ zval **pbid, **pmode;
long mode,create_mode;
- if (ZEND_NUM_ARGS()!=2 || getParameters(ht, 1, &pbid,&pmode)==FAILURE) {
+ if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(1, &pbid, &pmode) == FAILURE)
+{
WRONG_PARAM_COUNT;
}
- convert_to_long(pmode);
- convert_to_long(pbid);
- mode=Z_LVAL_P(pmode);
+ convert_to_long_ex(pmode);
+ convert_to_long_ex(pbid);
+ mode=Z_LVAL_PP(pmode);
create_mode=0;
if((mode&1) !=0)
@@ -4352,7 +3937,7 @@
if((mode&32) !=0)
create_mode|=LO_NOBUFFER;
-
RETURN_LONG(php_intifxus_open_slob(Z_LVAL_P(pbid),create_mode,&EG(regular_list)
TSRMLS_CC));
+
+RETURN_LONG(php_intifxus_open_slob(Z_LVAL_PP(pbid),create_mode,&EG(regular_list)
+TSRMLS_CC));
}
/* }}} */
@@ -4374,24 +3959,19 @@
int type;
Ifx_slob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix slob-result index",
get_active_function_name(TSRMLS_C), bid);
- return -1;
- }
-
- if (Ifx_slob->type!=TYPE_SLOB) {
- php_error(E_WARNING, "%s(): %d is not a Informix SLOB type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult || Ifx_slob->type!=TYPE_SLOB) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+slob-result index", bid);
return -1;
}
if(Ifx_slob->SLOB.lofd>0) {
- php_error(E_WARNING, "%s(): Slob-resource already open",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Slob-resource already
+open");
return -1;
}
Ifx_slob->SLOB.lofd=ifx_lo_open(&(Ifx_slob->SLOB.slob_data),create_mode,&errcode);
if(errcode < 0 || Ifx_slob->SLOB.lofd < 0) {
- php_error(E_WARNING, "%s(): Can't open slob-resource: %d",
get_active_function_name(TSRMLS_C), errcode);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't open slob-resource:
+%d", errcode);
return -1;
}
return 0;
@@ -4399,20 +3979,20 @@
/* ----------------------------------------------------------------------
* internal function
- * long php_intifxus_new_slob(HashTable *list)
+ * long php_intifxus_new_slob(HashTable *list TSRMLS_DC)
*
* creates an slob-object but don't open it
* list: internal hashlist of php
* return -1 on error otherwise the new slob-Object-id
* ----------------------------------------------------------------------
*/
-static long php_intifxus_new_slob(HashTable *list)
+static long php_intifxus_new_slob(HashTable *list TSRMLS_DC)
{
IFX_IDRES *Ifx_slob;
Ifx_slob=emalloc(sizeof(IFX_IDRES));
if(Ifx_slob==NULL) {
- php_error(E_WARNING, "%s(): Can't create slob-resource",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't create
+slob-resource");
return -1;
}
@@ -4437,16 +4017,10 @@
int type;
Ifx_slob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix slob-result index",
get_active_function_name(TSRMLS_C), bid);
- return NULL;
- }
-
- if (Ifx_slob->type!=TYPE_SLOB) {
- php_error(E_WARNING, "%s(): %d is not a Informix SLOB type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult || Ifx_slob->type!=TYPE_SLOB) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+slob-result index", bid);
return NULL;
}
-
return &(Ifx_slob->SLOB.slob_data);
}
@@ -4463,37 +4037,32 @@
Returns the current file or seek position of an open slob-object */
PHP_FUNCTION(ifxus_tell_slob)
{
- zval *pbid;
+ zval **pbid;
long bid;
IFX_IDRES *Ifx_slob;
ifx_int8_t akt_seek_pos;
int type;
long lakt_seek_pos;
- if (ZEND_NUM_ARGS()!=1 || getParameters(ht, 1, &pbid)==FAILURE) {
+ if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &pbid) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pbid);
- bid=Z_LVAL_P(pbid);
+ convert_to_long_ex(pbid);
+ bid=Z_LVAL_PP(pbid);
Ifx_slob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING,"%s(): %d is not a Informix slob-result index",
get_active_function_name(TSRMLS_C), bid);
- RETURN_FALSE;
- }
-
- if (Ifx_slob->type!=TYPE_SLOB) {
- php_error(E_WARNING, "%s(): %d is not a Informix SLOB type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult || Ifx_slob->type!=TYPE_SLOB) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+slob-result index", bid);
RETURN_FALSE;
}
if(ifx_lo_tell(Ifx_slob->SLOB.lofd,&akt_seek_pos)<0) {
- php_error(E_WARNING,"%s(): Can't perform tell-operation",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't perform
+tell-operation");
RETURN_FALSE;
}
if(ifx_int8tolong(&akt_seek_pos,&lakt_seek_pos)<0) {
- php_error(E_WARNING, "%s(): Seek-position to large for long",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Seek-position to large
+for long");
RETURN_FALSE;
}
RETURN_LONG(lakt_seek_pos);
@@ -4515,47 +4084,42 @@
Sets the current file or seek position of an open slob-object */
PHP_FUNCTION(ifxus_seek_slob)
{
- zval *pbid, *pmode, *poffset;
+ zval **pbid, **pmode, **poffset;
long bid,lakt_seek_pos;
IFX_IDRES *Ifx_slob;
ifx_int8_t akt_seek_pos,offset;
int type,mode;
- if (ZEND_NUM_ARGS()!=3 || getParameters(ht, 3, &pbid, &pmode,
&poffset)==FAILURE) {
+ if (ZEND_NUM_ARGS() !=3 || zend_get_parameters_ex(3, &pbid, &pmode, &poffset)
+== FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pbid);
- convert_to_long(pmode);
- convert_to_long(poffset);
+ convert_to_long_ex(pbid);
+ convert_to_long_ex(pmode);
+ convert_to_long_ex(poffset);
- bid=Z_LVAL_P(pbid);
+ bid=Z_LVAL_PP(pbid);
Ifx_slob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix slob-result index",
get_active_function_name(TSRMLS_C), bid);
- RETURN_FALSE;
- }
-
- if (Ifx_slob->type!=TYPE_SLOB) {
- php_error(E_WARNING, "%s(): %d is not a Informix SLOB type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult || Ifx_slob->type!=TYPE_SLOB) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+slob-result index", bid);
RETURN_FALSE;
}
mode=LO_SEEK_SET;
- if(Z_LVAL_P(pmode)==1) {
+ if(Z_LVAL_PP(pmode)==1) {
mode=LO_SEEK_CUR;
}
- if(Z_LVAL_P(pmode)==2) {
+ if(Z_LVAL_PP(pmode)==2) {
mode=LO_SEEK_END;
}
- ifx_int8cvlong(Z_LVAL_P(poffset),&offset);
+ ifx_int8cvlong(Z_LVAL_PP(poffset),&offset);
if(ifx_lo_seek(Ifx_slob->SLOB.lofd,&offset,mode,&akt_seek_pos)<0) {
- php_error(E_WARNING, "%s(): Can't perform seek-operation",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can't perform
+seek-operation");
RETURN_FALSE;
}
if(ifx_int8tolong(&akt_seek_pos,&lakt_seek_pos)<0) {
- php_error(E_WARNING, "%s(): Seek-position to large for long",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Seek-position to large
+for long");
RETURN_FALSE;
}
RETURN_LONG(lakt_seek_pos);
@@ -4576,35 +4140,30 @@
Reads nbytes of the slob-object */
PHP_FUNCTION(ifxus_read_slob)
{
- zval *pbid, *pnbytes;
+ zval **pbid, **pnbytes;
long bid, nbytes;
IFX_IDRES *Ifx_slob;
int errcode,type;
char *buffer;
- if (ZEND_NUM_ARGS()!=2 || getParameters(ht, 2, &pbid, &pnbytes)==FAILURE) {
+ if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2, &pbid, &pnbytes) ==
+FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pbid);
- convert_to_long(pnbytes);
+ convert_to_long_ex(pbid);
+ convert_to_long_ex(pnbytes);
- bid=Z_LVAL_P(pbid);
+ bid=Z_LVAL_PP(pbid);
Ifx_slob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix slob-result index",
get_active_function_name(TSRMLS_C), bid);
- RETURN_FALSE;
- }
-
- if (Ifx_slob->type!=TYPE_SLOB) {
- php_error(E_WARNING, "%s(): %d is not a Informix SLOB type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult || Ifx_slob->type!=TYPE_SLOB) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+slob-result index", bid);
RETURN_FALSE;
}
- nbytes=Z_LVAL_P(pnbytes);
+ nbytes=Z_LVAL_PP(pnbytes);
buffer=emalloc(nbytes);
if(ifx_lo_read(Ifx_slob->SLOB.lofd,buffer,nbytes,&errcode)<0) {
efree(buffer);
- php_error(E_WARNING, "%s(): Error reading slob: %d",
get_active_function_name(TSRMLS_C), errcode);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error reading slob: %d",
+errcode);
RETURN_FALSE;
}
RETURN_STRINGL(buffer,nbytes,0);
@@ -4625,40 +4184,35 @@
Writes a string into the slob-object */
PHP_FUNCTION(ifxus_write_slob)
{
- zval *pbid, *pcontent;
+ zval **pbid, **pcontent;
long bid, nbytes;
IFX_IDRES *Ifx_slob;
int errcode,type;
char *buffer;
- if (ZEND_NUM_ARGS()!=2 || getParameters(ht, 2, &pbid, &pcontent)==FAILURE) {
+ if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2, &pbid, &pcontent) ==
+FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long(pbid);
- convert_to_string(pcontent);
+ convert_to_long_ex(pbid);
+ convert_to_string_ex(pcontent);
- bid=Z_LVAL_P(pbid);
+ bid=Z_LVAL_PP(pbid);
Ifx_slob = (IFX_IDRES *) zend_list_find(bid,&type);
- if (type!=le_idresult) {
- php_error(E_WARNING, "%s(): %d is not a Informix slob-result index",
get_active_function_name(TSRMLS_C), bid);
- RETURN_FALSE;
- }
-
- if (Ifx_slob->type!=TYPE_SLOB) {
- php_error(E_WARNING, "%s(): %d is not a Informix SLOB type",
get_active_function_name(TSRMLS_C), bid);
+ if (type!=le_idresult || Ifx_slob->type!=TYPE_SLOB) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%d is not a Informix
+slob-result index", bid);
RETURN_FALSE;
}
- buffer=Z_STRVAL_P(pcontent);
- nbytes=Z_STRLEN_P(pcontent);
+ buffer=Z_STRVAL_PP(pcontent);
+ nbytes=Z_STRLEN_PP(pcontent);
if(nbytes<=0) {
- php_error(E_WARNING, "%s(): String has no content",
get_active_function_name(TSRMLS_C));
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "String has no content");
RETURN_FALSE;
}
if((nbytes=ifx_lo_write(Ifx_slob->SLOB.lofd,buffer,nbytes,&errcode))<0) {
- php_error(E_WARNING, "%s(): Error writing slob: %d",
get_active_function_name(TSRMLS_C), errcode);
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error writing slob: %d",
+errcode);
RETURN_FALSE;
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php