#endif
+/* True globals, no need for thread safety */
+static int le_blob, le_link, le_plink, le_result, le_query, le_trans;
+
ZEND_DECLARE_MODULE_GLOBALS(ibase)
/* }}} */
IBDEBUG("Transaction or database link?");
if ((resource = zend_list_find(Z_LVAL_PP(link_id), &type))) {
IBDEBUG("Found in list");
- if (type == IBG(le_trans)) {
+ if (type == le_trans) {
/* Transaction resource. Fetch it, database link resource
is stored in ib_trans->link_rsrc. */
IBDEBUG("Type is le_trans");
*trans_id = (Z_LVAL_PP(link_id));
- ZEND_FETCH_RESOURCE(ib_trans, ibase_tr_link *, link_id, -1, "InterBase transaction", IBG(le_trans));
+ ZEND_FETCH_RESOURCE(ib_trans, ibase_tr_link *, link_id, -1, "InterBase transaction", le_trans);
*trans_n = ib_trans->trans_num;
- ZEND_FETCH_RESOURCE2(resource, ibase_db_link *, link_id, ib_trans->link_rsrc, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(resource, ibase_db_link *, link_id, ib_trans->link_rsrc, "InterBase link", le_link, le_plink);
} else {
IBDEBUG("Type is le_[p]link");
/* Database link resource, use default transaction (=0). */
*trans_n = 0;
- ZEND_FETCH_RESOURCE2(resource, ibase_db_link *, link_id, -1, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(resource, ibase_db_link *, link_id, -1, "InterBase link", le_link, le_plink);
}
}
*ib_link = resource;
int type; \
convert_to_long(blob_arg); \
blob_ptr = (ibase_blob_handle *) zend_list_find(blob_arg->value.lval, &type); \
- if (type!=IBG(le_blob)) { \
+ if (type!=le_blob) { \
_php_ibase_module_error("%d is not blob handle",blob_arg->value.lval); \
RETURN_FALSE; \
} \
ibase_db_link *ib_link;
IBLS_FETCH();
- ib_link = (ibase_db_link *) zend_fetch_resource(NULL, ib_trans->link_rsrc, "InterBase link", NULL, 2, IBG(le_link), IBG(le_plink));
+ ib_link = (ibase_db_link *) zend_fetch_resource(NULL, ib_trans->link_rsrc, "InterBase link", NULL, 2, le_link, le_plink);
if (ib_link) {
if (ib_link->trans[ib_trans->trans_num] != NULL) {
REGISTER_INI_ENTRIES();
- IBG(le_result) = register_list_destructors(_php_ibase_free_result, NULL);
- IBG(le_query) = register_list_destructors(_php_ibase_free_query, NULL);
- IBG(le_blob) = register_list_destructors(_php_ibase_free_blob, NULL);
- IBG(le_link) = register_list_destructors(_php_ibase_close_link, NULL);
- IBG(le_plink) = register_list_destructors(_php_ibase_commit_link, _php_ibase_close_plink);
- IBG(le_trans) = register_list_destructors(_php_ibase_free_trans, NULL);
+ le_result = register_list_destructors(_php_ibase_free_result, NULL);
+ le_query = register_list_destructors(_php_ibase_free_query, NULL);
+ le_blob = register_list_destructors(_php_ibase_free_blob, NULL);
+ le_link = register_list_destructors(_php_ibase_close_link, NULL);
+ le_plink = register_list_destructors(_php_ibase_commit_link, _php_ibase_close_plink);
+ le_trans = register_list_destructors(_php_ibase_free_trans, NULL);
REGISTER_LONG_CONSTANT("IBASE_DEFAULT", PHP_IBASE_DEFAULT, CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("IBASE_TEXT", PHP_IBASE_TEXT, CONST_PERSISTENT);
char tmp_1[] = {isc_info_base_level, isc_info_end};
char tmp_2[8]; /* Enough? Hope so... */
- if (le->type != IBG(le_plink)) {
+ if (le->type != le_plink) {
RETURN_FALSE;
}
/* Check if connection has timed out */
ib_link->trans[i] = NULL;
/* hash it up */
- new_le.type = IBG(le_plink);
+ new_le.type = 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) {
efree(hashed_details);
IBG(num_persistent)++;
}
- ZEND_REGISTER_RESOURCE(return_value, ib_link, IBG(le_plink));
+ ZEND_REGISTER_RESOURCE(return_value, ib_link, le_plink);
} else {
list_entry *index_ptr, new_index_ptr;
}
xlink = (int) index_ptr->ptr;
ptr = zend_list_find(xlink, &type); /* check if the xlink is still there */
- if (ptr && (type==IBG(le_link) || type==IBG(le_plink))) {
+ if (ptr && (type==le_link || type==le_plink)) {
zend_list_addref(xlink);
return_value->value.lval = xlink;
return_value->type = IS_RESOURCE;
for (i = 0; i < IBASE_TRANS_ON_LINK; i++)
ib_link->trans[i] = NULL;
- ZEND_REGISTER_RESOURCE(return_value, ib_link, IBG(le_link));
+ ZEND_REGISTER_RESOURCE(return_value, ib_link, le_link);
/* add it to the hash */
new_index_ptr.ptr = (void *) return_value->value.lval;
break;
}
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_arg, link_id, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_arg, link_id, "InterBase link", le_link, le_plink);
zend_list_delete(link_id);
RETURN_TRUE;
}
/* Handle all database links, although we don't support multibase
transactions yet, so only the last one is will be used. */
for (i = argn-1; i > 0 && Z_TYPE_PP(args[i]) == IS_RESOURCE; i--) {
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, args[i], -1, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, args[i], -1, "InterBase link", le_link, le_plink);
link_id = Z_LVAL_PP(args[i]);
}
}
if (argn < 2) {
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, link_id, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, link_id, "InterBase link", le_link, le_plink);
}
if (trans_argl ) {
ib_trans = (ibase_tr_link *) emalloc(sizeof(ibase_tr_link));
ib_trans->trans_num = trans_n;
ib_trans->link_rsrc = link_id;
- ZEND_REGISTER_RESOURCE(return_value, ib_trans, IBG(le_trans));
+ ZEND_REGISTER_RESOURCE(return_value, ib_trans, le_trans);
}
/* }}} */
switch (ZEND_NUM_ARGS()) {
case 0:
link_id = IBG(default_link);
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_trans_arg, link_id, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_trans_arg, link_id, "InterBase link", le_link, le_plink);
break;
case 1:
if (zend_get_parameters_ex(1, &link_trans_arg) == FAILURE) {
i++; /* next arg */
} else {
link_id = IBG(default_link);
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, dummy, link_id, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, dummy, link_id, "InterBase link", le_link, le_plink);
}
if ((*args[i])->type == IS_STRING) { /* query argument */
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);
- ZEND_REGISTER_RESOURCE(return_value, ib_result, IBG(le_result));
+ ZEND_REGISTER_RESOURCE(return_value, ib_result, le_result);
} else {
_php_ibase_free_query(ib_query);
RETURN_TRUE;
break;
}
- ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase result", IBG(le_result));
+ ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase result", le_result);
if (ib_result->out_sqlda == NULL) {
_php_ibase_module_error("trying to fetch results from a non-select query");
WRONG_PARAM_COUNT;
}
- ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase result", IBG(le_result));
+ ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase result", le_result);
zend_list_delete((*result_arg)->value.lval);
RETURN_TRUE;
}
RETURN_FALSE;
}
link_id = IBG(default_link);
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, link_id, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, link_id, "InterBase link", le_link, le_plink);
break;
case 2:
if (zend_get_parameters_ex(2, &link_arg, &query_arg) == FAILURE) {
zend_list_addref(link_id);
- ZEND_REGISTER_RESOURCE(return_value, ib_query, IBG(le_query));
+ ZEND_REGISTER_RESOURCE(return_value, ib_query, le_query);
}
/* }}} */
RETURN_FALSE;
}
- ZEND_FETCH_RESOURCE(ib_query, ibase_query *, args[0], -1, "InterBase query", IBG(le_query));
+ ZEND_FETCH_RESOURCE(ib_query, ibase_query *, args[0], -1, "InterBase query", le_query);
if (ZEND_NUM_ARGS() > 1) { /* have variables to bind */
bind_args = args[1];
if (ib_result) { /* select statement */
ib_query->cursor_open = 1;
- ZEND_REGISTER_RESOURCE(return_value, ib_result, IBG(le_result));
+ ZEND_REGISTER_RESOURCE(return_value, ib_result, le_result);
} else {
ib_query->cursor_open = 0;
RETURN_TRUE;
WRONG_PARAM_COUNT;
}
- ZEND_FETCH_RESOURCE(ib_query, ibase_query *, query_arg, -1, "InterBase query", IBG(le_query));
+ ZEND_FETCH_RESOURCE(ib_query, ibase_query *, query_arg, -1, "InterBase query", le_query);
zend_list_delete((*query_arg)->value.lval);
RETURN_TRUE;
}
WRONG_PARAM_COUNT;
}
- ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result, -1, "InterBase result", IBG(le_result));
+ ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result, -1, "InterBase result", le_result);
if (ib_result->out_sqlda == NULL) {
_php_ibase_module_error("trying to get num fields from a non-select query");
WRONG_PARAM_COUNT;
}
- ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase result", IBG(le_result));
+ ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase result", le_result);
if (ib_result->out_sqlda == NULL) {
_php_ibase_module_error("trying to get field info from a non-select query");
switch (ZEND_NUM_ARGS()) {
case 0:
link_id = IBG(default_link);
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, link_id, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, link_id, "InterBase link", le_link, le_plink);
break;
case 1:
if (zend_get_parameters_ex(1, &link_arg) == FAILURE) {
RETURN_FALSE;
}
- RETURN_LONG(zend_list_insert(ib_blob, IBG(le_blob)));
+ RETURN_LONG(zend_list_insert(ib_blob, le_blob));
}
/* }}} */
RETURN_FALSE;
}
- RETURN_LONG(zend_list_insert(ib_blob, IBG(le_blob)));
+ RETURN_LONG(zend_list_insert(ib_blob, le_blob));
}
/* }}} */
RETURN_FALSE;
}
link_id = IBG(default_link);
- ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, link_id, "InterBase link", IBG(le_link), IBG(le_plink));
+ ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, link_id, "InterBase link", le_link, le_plink);
break;
case 2:
if (zend_get_parameters_ex(2, &link_arg, &file_arg) == FAILURE) {