summaryrefslogtreecommitdiff
path: root/ext/sybase_ct/php_sybase_ct.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/sybase_ct/php_sybase_ct.c')
-rw-r--r--ext/sybase_ct/php_sybase_ct.c50
1 files changed, 30 insertions, 20 deletions
diff --git a/ext/sybase_ct/php_sybase_ct.c b/ext/sybase_ct/php_sybase_ct.c
index c6d260c5e..9b922129e 100644
--- a/ext/sybase_ct/php_sybase_ct.c
+++ b/ext/sybase_ct/php_sybase_ct.c
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sybase_ct.c,v 1.103.2.5 2006/01/01 12:50:16 sniper Exp $ */
+/* $Id: php_sybase_ct.c,v 1.103.2.5.2.6 2006/07/25 09:20:32 thetaphi Exp $ */
#ifdef HAVE_CONFIG_H
@@ -37,6 +37,10 @@ static int le_link, le_plink, le_result;
#if HAVE_SYBASE_CT
+ZEND_DECLARE_MODULE_GLOBALS(sybase)
+static PHP_GINIT_FUNCTION(sybase);
+static PHP_GSHUTDOWN_FUNCTION(sybase);
+
zend_function_entry sybase_functions[] = {
PHP_FE(sybase_connect, NULL)
PHP_FE(sybase_pconnect, NULL)
@@ -93,10 +97,21 @@ zend_function_entry sybase_functions[] = {
zend_module_entry sybase_module_entry = {
STANDARD_MODULE_HEADER,
- "sybase_ct", sybase_functions, PHP_MINIT(sybase), PHP_MSHUTDOWN(sybase), PHP_RINIT(sybase), PHP_RSHUTDOWN(sybase), PHP_MINFO(sybase), NO_VERSION_YET, STANDARD_MODULE_PROPERTIES
+ "sybase_ct",
+ sybase_functions,
+ PHP_MINIT(sybase),
+ PHP_MSHUTDOWN(sybase),
+ PHP_RINIT(sybase),
+ PHP_RSHUTDOWN(sybase),
+ PHP_MINFO(sybase),
+ NO_VERSION_YET,
+ PHP_MODULE_GLOBALS(sybase),
+ PHP_GINIT(sybase),
+ PHP_GSHUTDOWN(sybase),
+ NULL,
+ STANDARD_MODULE_PROPERTIES_EX
};
-ZEND_DECLARE_MODULE_GLOBALS(sybase)
/* static CS_CONTEXT *context; */
#ifdef COMPILE_DL_SYBASE_CT
@@ -146,7 +161,7 @@ static void _free_sybase_result(sybase_result *result)
}
/* Forward declaration */
-static int php_sybase_finish_results (sybase_result *result);
+static int php_sybase_finish_results (sybase_result *result TSRMLS_DC);
static void php_free_sybase_result(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
@@ -157,7 +172,7 @@ static void php_free_sybase_result(zend_rsrc_list_entry *rsrc TSRMLS_DC)
if (result->sybase_ptr->cmd) {
ct_cancel(NULL, result->sybase_ptr->cmd, CS_CANCEL_ALL);
}
- php_sybase_finish_results(result);
+ php_sybase_finish_results(result TSRMLS_CC);
}
_free_sybase_result(result);
@@ -356,10 +371,9 @@ PHP_INI_BEGIN()
PHP_INI_END()
-static void php_sybase_init_globals(zend_sybase_globals *sybase_globals)
+static PHP_GINIT_FUNCTION(sybase)
{
long opt;
- TSRMLS_FETCH();
if (cs_ctx_alloc(CTLIB_VERSION, &sybase_globals->context)!=CS_SUCCEED || ct_init(sybase_globals->context, CTLIB_VERSION)!=CS_SUCCEED) {
return;
@@ -407,7 +421,7 @@ static void php_sybase_init_globals(zend_sybase_globals *sybase_globals)
}
-static void php_sybase_destroy_globals(zend_sybase_globals *sybase_globals)
+static PHP_GSHUTDOWN_FUNCTION(sybase)
{
ct_exit(sybase_globals->context, CS_UNUSED);
cs_ctx_drop(sybase_globals->context);
@@ -415,8 +429,6 @@ static void php_sybase_destroy_globals(zend_sybase_globals *sybase_globals)
PHP_MINIT_FUNCTION(sybase)
{
- ZEND_INIT_MODULE_GLOBALS(sybase, php_sybase_init_globals, php_sybase_destroy_globals);
-
REGISTER_INI_ENTRIES();
le_link = zend_register_list_destructors_ex(_close_sybase_link, NULL, "sybase-ct link", module_number);
@@ -464,11 +476,10 @@ PHP_RSHUTDOWN_FUNCTION(sybase)
}
-static int php_sybase_do_connect_internal(sybase_link *sybase, char *host, char *user, char *passwd, char *charset, char *appname)
+static int php_sybase_do_connect_internal(sybase_link *sybase, char *host, char *user, char *passwd, char *charset, char *appname TSRMLS_DC)
{
CS_LOCALE *tmp_locale;
long packetsize;
- TSRMLS_FETCH();
/* set a CS_CONNECTION record */
if (ct_con_alloc(SybCtG(context), &sybase->connection)!=CS_SUCCEED) {
@@ -695,7 +706,7 @@ static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
}
sybase_ptr = (sybase_link *) malloc(sizeof(sybase_link));
- if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset, appname)) {
+ if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset, appname TSRMLS_CC)) {
free(sybase_ptr);
efree(hashed_details);
RETURN_FALSE;
@@ -749,7 +760,7 @@ static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
* NULL before trying to use it elsewhere . . .)
*/
memcpy(&sybase, sybase_ptr, sizeof(sybase_link));
- if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset, appname)) {
+ if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset, appname TSRMLS_CC)) {
memcpy(sybase_ptr, &sybase, sizeof(sybase_link));
efree(hashed_details);
RETURN_FALSE;
@@ -793,7 +804,7 @@ static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
}
sybase_ptr = (sybase_link *) emalloc(sizeof(sybase_link));
- if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset, appname)) {
+ if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset, appname TSRMLS_CC)) {
efree(sybase_ptr);
efree(hashed_details);
RETURN_FALSE;
@@ -1009,12 +1020,11 @@ PHP_FUNCTION(sybase_select_db)
/* }}} */
-static int php_sybase_finish_results (sybase_result *result)
+static int php_sybase_finish_results(sybase_result *result TSRMLS_DC)
{
int i, fail;
CS_RETCODE retcode;
CS_INT restype;
- TSRMLS_FETCH();
efree(result->datafmt);
efree(result->lengths);
@@ -1196,7 +1206,7 @@ static int php_sybase_fetch_result_row (sybase_result *result, int numrows)
result->last_retcode= retcode;
switch (retcode) {
case CS_END_DATA:
- retcode = php_sybase_finish_results(result);
+ retcode = php_sybase_finish_results(result TSRMLS_CC);
break;
case CS_ROW_FAIL:
@@ -1421,7 +1431,7 @@ static void php_sybase_query (INTERNAL_FUNCTION_PARAMETERS, int buffered)
*/
#if O_TIMM
if (result) {
- php_sybase_finish_results(result);
+ php_sybase_finish_results(result TSRMLS_CC);
}
#endif
@@ -1656,7 +1666,7 @@ PHP_FUNCTION(sybase_free_result)
if (result->last_retcode != CS_END_DATA && result->last_retcode != CS_END_RESULTS) {
/* php_error_docref(NULL TSRMLS_CC, E_WARNING, "Sybase: Cancelling the rest of the results"); */
ct_cancel(NULL, result->sybase_ptr->cmd, CS_CANCEL_ALL);
- php_sybase_finish_results(result);
+ php_sybase_finish_results(result TSRMLS_CC);
}
zend_list_delete(Z_LVAL_PP(sybase_result_index));