*/
/* $Id$ */
-
+
/* TODO: Arrays, roles?
A lot... */
{NULL, NULL, NULL}
};
-zend_module_entry ibase_module_entry =
-{
+zend_module_entry ibase_module_entry = {
STANDARD_MODULE_HEADER,
"interbase",
ibase_functions,
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 */
#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;
}
#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;
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 {\
}\
}
-
/* 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 */
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;
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;
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));
}
/* }}} */
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 */
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)--;
*/
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)--;
*/
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)...");
/* }}} */
/* {{{ _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) {
}
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);
}
}
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);
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) {
/* {{{ 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)
return SUCCESS;
}
-
PHP_RINIT_FUNCTION(ibase)
{
IBG(default_link)= -1;
IBG(num_links) = IBG(num_persistent);
- if (IBG(timestampformat))
- DL_FREE(IBG(timestampformat));
+ if (IBG(timestampformat)) {
+ DL_FREE(IBG(timestampformat));
+ }
IBG(timestampformat) = DL_STRDUP(IBG(cfg_timestampformat));
- if (IBG(dateformat))
- DL_FREE(IBG(dateformat));
+ if (IBG(dateformat)) {
+ DL_FREE(IBG(dateformat));
+ }
IBG(dateformat) = DL_STRDUP(IBG(cfg_dateformat));
- if (IBG(timeformat))
- DL_FREE(IBG(timeformat));
+ if (IBG(timeformat)) {
+ DL_FREE(IBG(timeformat));
+ }
IBG(timeformat) = DL_STRDUP(IBG(cfg_timeformat));
- if (IBG(errmsg))
- DL_FREE(IBG(errmsg));
+ if (IBG(errmsg)) {
+ DL_FREE(IBG(errmsg));
+ }
IBG(errmsg) = DL_MALLOC(sizeof(char)*MAX_ERRMSG+1);
return SUCCESS;
}
-
PHP_MSHUTDOWN_FUNCTION(ibase)
{
UNREGISTER_INI_ENTRIES();
return SUCCESS;
}
-
PHP_RSHUTDOWN_FUNCTION(ibase)
{
- if (IBG(timestampformat))
- DL_FREE(IBG(timestampformat));
+ if (IBG(timestampformat)) {
+ DL_FREE(IBG(timestampformat));
+ }
IBG(timestampformat) = NULL;
- if (IBG(dateformat))
- DL_FREE(IBG(dateformat));
+ if (IBG(dateformat)) {
+ DL_FREE(IBG(dateformat));
+ }
IBG(dateformat) = NULL;
- if (IBG(timeformat))
- DL_FREE(IBG(timeformat));
+ if (IBG(timeformat)) {
+ DL_FREE(IBG(timeformat));
+ }
IBG(timeformat) = NULL;
-
- if (IBG(errmsg))
- DL_FREE(IBG(errmsg));
+
+ if (IBG(errmsg)) {
+ DL_FREE(IBG(errmsg));
+ }
IBG(errmsg) = NULL;
- return SUCCESS;
+ return SUCCESS;
}
-
PHP_MINFO_FUNCTION(ibase)
{
char tmp[32];
php_info_print_table_start();
- php_info_print_table_row(2, "Interbase Support", "enabled");
+ php_info_print_table_row(2, "Interbase Support", "enabled");
php_info_print_table_row(2, "Revision", "$Revision$");
#ifdef COMPILE_DL_INTERBASE
php_info_print_table_row(2, "Dynamic Module", "yes");
#endif
- php_info_print_table_row(2, "Allow Persistent Links", (IBG(allow_persistent)?"Yes":"No") );
+ php_info_print_table_row(2, "Allow Persistent Links", (IBG(allow_persistent) ? "Yes" : "No"));
if (IBG(max_persistent) == -1) {
snprintf(tmp, 31, "%ld/unlimited", IBG(num_persistent));
} else {
snprintf(tmp, 31, "%ld/%ld", IBG(num_persistent), IBG(max_persistent));
}
- tmp[31]=0;
- php_info_print_table_row(2, "Persistent Links", tmp );
+ tmp[31] = 0;
+ php_info_print_table_row(2, "Persistent Links", tmp);
if (IBG(max_links) == -1) {
snprintf(tmp, 31, "%ld/unlimited", IBG(num_links));
} else {
snprintf(tmp, 31, "%ld/%ld", IBG(num_links), IBG(max_links));
}
- tmp[31]=0;
- php_info_print_table_row(2, "Total Links", tmp );
+ tmp[31] = 0;
+ php_info_print_table_row(2, "Total Links", tmp);
- php_info_print_table_row(2, "Timestamp Format", IBG(timestampformat) );
- php_info_print_table_row(2, "Date Format", IBG(dateformat) );
- php_info_print_table_row(2, "Time Format", IBG(timeformat) );
+ php_info_print_table_row(2, "Timestamp Format", IBG(timestampformat));
+ php_info_print_table_row(2, "Date Format", IBG(dateformat));
+ php_info_print_table_row(2, "Time Format", IBG(timeformat));
php_info_print_table_end();
}
/* }}} */
/* {{{ _php_ibase_attach_db() */
-static int _php_ibase_attach_db(char *server, char *uname, char *passwd, char *charset, int buffers, char *role, isc_db_handle *db)
+static int _php_ibase_attach_db(char *server, char *uname, char *passwd, char *charset, int buffers, char *role, isc_db_handle *db TSRMLS_DC)
{
char dpb_buffer[256], *dpb, *p;
int dpb_length, len;
- TSRMLS_FETCH();
dpb = dpb_buffer;
/* {{{ _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;
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]);
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... */
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;
}
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;
* 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) {
}
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;
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))) {
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;
}
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;
}
/* }}} */
/* {{{ _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;
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;
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;
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;
/* {{{ _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;
}
/* 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;
}
_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;
/* {{{ _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) {
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;
_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) {
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:
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;
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
/*
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
#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
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;
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;
_php_ibase_module_error("Binding arrays not supported yet");
return FAILURE;
break;
- } /*switch*/
- } /*for*/
+ } /* switch */
+ } /* for */
+
return SUCCESS;
}
/* }}} */
{
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));
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;
_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;
}
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;
}
_php_ibase_exec_error: /* I'm a bad boy... */
- if (in_sqlda){
+ if (in_sqlda) {
efree(in_sqlda);
}
if (bind_buf)
efree(IB_RESULT);
IB_RESULT = NULL;
}
- if (out_sqlda)
+ if (out_sqlda) {
_php_ibase_free_xsqlda(out_sqlda);
+ }
}
return rv;
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;
}
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;
} else {
tpb[tpb_len++] = isc_tpb_concurrency; /* default isolation level */
}
+
/* lock resolution */
if (trans_argl & PHP_IBASE_NOWAIT) {
tpb[tpb_len++] = isc_tpb_nowait;
}
/* 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;
/* {{{ _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;
#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;
}
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;
}
}
/* }}} */
-/* {{{ proto bool ibase_commit(resource link_identifier)
+/* {{{ proto bool ibase_commit( resource link_identifier )
Commit transaction */
PHP_FUNCTION(ibase_commit)
{
}
/* }}} */
-/* {{{ proto bool ibase_rollback(resource link_identifier)
+/* {{{ proto bool ibase_rollback( resource link_identifier )
Rollback transaction */
PHP_FUNCTION(ibase_rollback)
{
Execute a query */
PHP_FUNCTION(ibase_query)
{
- pval ***args, **bind_args = NULL, **dummy = NULL;
+ zval ***args, **bind_args = NULL, **dummy = NULL;
int i, link_id = 0, trans_n = 0, bind_n = 0, trans_id = 0;
char *query;
ibase_db_link *ib_link;
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;
}
/* 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;
}
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++) {
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
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 ){
}
} 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);
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;
}
}
}
/* }}} */
-/* {{{ _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");
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;
}
}
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);
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:
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 ? */
}
/* 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;
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;
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;
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);
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);
if ((var->sqltype & ~1) == SQL_ARRAY) {
arr_cnt++;
}
- } /*for field*/
+ } /* for field */
}
/* }}} */
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));
}
}
/* }}} */
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;
}
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;
zend_list_addref(link_id);
ZEND_REGISTER_RESOURCE(return_value, ib_query, le_query);
-
}
/* }}} */
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;
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;
/* 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;
}
Free memory used by a query */
PHP_FUNCTION(ibase_free_query)
{
- pval **query_arg;
+ zval **query_arg;
ibase_query *ib_query;
RESET_ERRMSG;
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;
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;
}
Get the number of fields in result */
PHP_FUNCTION(ibase_num_fields)
{
- pval **result;
+ zval **result;
ibase_result *ib_result;
RESET_ERRMSG;
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;
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);
/* 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,
};
char bl_inf[sizeof(long)*8], *p;
- TSRMLS_FETCH();
bl_info->max_segment = 0;
bl_info->num_segments = 0;
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:
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;
}
/* }}} */
}
/* 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;
}
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;
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;
}
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;
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!*/
/* 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;
}
}
}
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;
}
}
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)) {
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;
}
/* 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);
*/
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);
}
}
/* }}} */
-/*
-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;
}
/* 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;
}
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)) {
}
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;
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);
/* 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) */
/* 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;
}
_php_ibase_user(INTERNAL_FUNCTION_PARAM_PASSTHRU, isc_action_svc_delete_user);
}
/* }}} */
-
#endif /* SQL_DIALECT_V6 */
#endif /* HAVE_IBASE */