diff options
author | Ard Biesheuvel <abies@php.net> | 2004-07-06 13:46:19 +0000 |
---|---|---|
committer | Ard Biesheuvel <abies@php.net> | 2004-07-06 13:46:19 +0000 |
commit | 1b4e0b81e3571fe7adae607a803b3f1ab90decc5 (patch) | |
tree | d29a8dfd143d38d630323ea6d41721be9c83c107 | |
parent | b5aa8db6a36447973ad9c023e182c263fd39eb29 (diff) | |
download | php-git-1b4e0b81e3571fe7adae607a803b3f1ab90decc5.tar.gz |
Don't copy ini items to module globals
(fixed unregistered bug with mangled default_db setting)
-rw-r--r-- | ext/interbase/ibase_query.c | 23 | ||||
-rw-r--r-- | ext/interbase/interbase.c | 54 | ||||
-rwxr-xr-x | ext/interbase/php_ibase_includes.h | 4 |
3 files changed, 40 insertions, 41 deletions
diff --git a/ext/interbase/ibase_query.c b/ext/interbase/ibase_query.c index d1e0ef85f4..c4cdbf2c56 100644 --- a/ext/interbase/ibase_query.c +++ b/ext/interbase/ibase_query.c @@ -23,6 +23,7 @@ #endif #include "php.h" +#include "php_ini.h" #if HAVE_IBASE @@ -553,7 +554,7 @@ static int _php_ibase_bind_array(zval *val, char *buf, unsigned long buf_size, / case SQL_TIMESTAMP: convert_to_string(val); #ifdef HAVE_STRPTIME - strptime(Z_STRVAL_P(val), IBG(timestampformat), &t); + strptime(Z_STRVAL_P(val), INI_STR("ibase.timestampformat"), &t); #else n = sscanf(Z_STRVAL_P(val), "%d%*[/]%d%*[/]%d %d%*[:]%d%*[:]%d", &t.tm_mon, &t.tm_mday, &t.tm_year, &t.tm_hour, &t.tm_min, &t.tm_sec); @@ -571,7 +572,7 @@ static int _php_ibase_bind_array(zval *val, char *buf, unsigned long buf_size, / case SQL_TYPE_DATE: convert_to_string(val); #ifdef HAVE_STRPTIME - strptime(Z_STRVAL_P(val), IBG(dateformat), &t); + strptime(Z_STRVAL_P(val), INI_STR("ibase.dateformat"), &t); #else n = sscanf(Z_STRVAL_P(val), "%d%*[/]%d%*[/]%d", &t.tm_mon, &t.tm_mday, &t.tm_year); @@ -588,7 +589,7 @@ static int _php_ibase_bind_array(zval *val, char *buf, unsigned long buf_size, / case SQL_TYPE_TIME: convert_to_string(val); #ifdef HAVE_STRPTIME - strptime(Z_STRVAL_P(val), IBG(timeformat), &t); + strptime(Z_STRVAL_P(val), INI_STR("ibase.timeformat"), &t); #else n = sscanf(Z_STRVAL_P(val), "%d%*[:]%d%*[:]%d", &t.tm_hour, &t.tm_min, &t.tm_sec); @@ -678,16 +679,16 @@ static int _php_ibase_bind(XSQLDA *sqlda, zval ***b_vars, BIND_BUF *buf, /* {{{ t = *gmtime(&Z_LVAL_P(b_var)); } else { #ifdef HAVE_STRPTIME - char *format = IBG(timestampformat); + char *format = INI_STR("ibase.timestampformat"); convert_to_string(b_var); switch (var->sqltype & ~1) { case SQL_TYPE_DATE: - format = IBG(dateformat); + format = INI_STR("ibase.dateformat"); break; case SQL_TYPE_TIME: - format = IBG(timeformat); + format = INI_STR("ibase.timeformat"); } if (! strptime(Z_STRVAL_P(b_var), format, &t)) { /* strptime() cannot handle it, so let IB have a try */ @@ -1083,9 +1084,9 @@ PHP_FUNCTION(ibase_query) _php_ibase_module_error("CREATE DATABASE is not allowed in SQL safe mode" TSRMLS_CC); - } else if ((IBG(max_links) != -1) && (IBG(num_links) >= IBG(max_links))) { + } else if (((l = INI_INT("ibase.max_links")) != -1) && (IBG(num_links) >= l)) { _php_ibase_module_error("CREATE DATABASE is not allowed: maximum link count " - "(%ld) reached" TSRMLS_CC, IBG(max_links)); + "(%ld) reached" TSRMLS_CC, l); } else if (isc_dsql_execute_immediate(IB_STATUS, &db, &trans, (short)query_len, query, SQL_DIALECT_CURRENT, NULL)) { @@ -1355,15 +1356,15 @@ static int _php_ibase_var_zval(zval *val, void *data, int type, int len, /* {{{ ZVAL_DOUBLE(val, *(double *) data); break; case SQL_DATE: /* == case SQL_TIMESTAMP: */ - format = IBG(timestampformat); + format = INI_STR("ibase.timestampformat"); isc_decode_timestamp((ISC_TIMESTAMP *) data, &t); goto format_date_time; case SQL_TYPE_DATE: - format = IBG(dateformat); + format = INI_STR("ibase.dateformat"); isc_decode_sql_date((ISC_DATE *) data, &t); goto format_date_time; case SQL_TYPE_TIME: - format = IBG(timeformat); + format = INI_STR("ibase.timeformat"); isc_decode_sql_time((ISC_TIME *) data, &t); format_date_time: diff --git a/ext/interbase/interbase.c b/ext/interbase/interbase.c index 06896af3e9..ecee39b09b 100644 --- a/ext/interbase/interbase.c +++ b/ext/interbase/interbase.c @@ -436,16 +436,16 @@ static PHP_INI_DISP(php_ibase_password_displayer_cb) /* {{{ startup, shutdown and info functions */ PHP_INI_BEGIN() - STD_PHP_INI_BOOLEAN("ibase.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateBool, 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_db", NULL, PHP_INI_SYSTEM, OnUpdateString, default_db, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY("ibase.default_user", NULL, PHP_INI_ALL, OnUpdateString, default_user, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY_EX("ibase.default_password", NULL, PHP_INI_ALL, OnUpdateString, default_password, zend_ibase_globals, ibase_globals,php_ibase_password_displayer_cb) - STD_PHP_INI_ENTRY("ibase.default_charset", NULL, PHP_INI_ALL, OnUpdateString, default_charset, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY("ibase.timestampformat", IB_DEF_DATE_FMT " " IB_DEF_TIME_FMT, PHP_INI_ALL, OnUpdateString, timestampformat, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY("ibase.dateformat", IB_DEF_DATE_FMT, PHP_INI_ALL, OnUpdateString, dateformat, zend_ibase_globals, ibase_globals) - STD_PHP_INI_ENTRY("ibase.timeformat", IB_DEF_TIME_FMT, PHP_INI_ALL, OnUpdateString, timeformat, zend_ibase_globals, ibase_globals) + PHP_INI_ENTRY_EX("ibase.allow_persistent", "1", PHP_INI_SYSTEM, NULL, zend_ini_boolean_displayer_cb) + PHP_INI_ENTRY_EX("ibase.max_persistent", "-1", PHP_INI_SYSTEM, NULL, display_link_numbers) + PHP_INI_ENTRY_EX("ibase.max_links", "-1", PHP_INI_SYSTEM, NULL, display_link_numbers) + PHP_INI_ENTRY("ibase.default_db", NULL, PHP_INI_SYSTEM, NULL) + PHP_INI_ENTRY("ibase.default_user", NULL, PHP_INI_ALL, NULL) + PHP_INI_ENTRY_EX("ibase.default_password", NULL, PHP_INI_ALL, NULL, php_ibase_password_displayer_cb) + PHP_INI_ENTRY("ibase.default_charset", NULL, PHP_INI_ALL, NULL) + PHP_INI_ENTRY("ibase.timestampformat", IB_DEF_DATE_FMT " " IB_DEF_TIME_FMT, PHP_INI_ALL, NULL) + PHP_INI_ENTRY("ibase.dateformat", IB_DEF_DATE_FMT, PHP_INI_ALL, NULL) + PHP_INI_ENTRY("ibase.timeformat", IB_DEF_TIME_FMT, PHP_INI_ALL, NULL) PHP_INI_END() static void php_ibase_init_globals(zend_ibase_globals *ibase_globals) @@ -612,7 +612,7 @@ int _php_ibase_attach_db(char **args, int *len, long *largs, isc_db_handle *db T static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* {{{ */ { - char hash[16], *args[] = { NULL, NULL, NULL, NULL, NULL }; + char *c, hash[16], *args[] = { NULL, NULL, NULL, NULL, NULL }; int i, len[] = { 0, 0, 0, 0, 0 }; long largs[] = { 0, 0, 0 }; PHP_MD5_CTX hash_context; @@ -630,21 +630,21 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* } /* restrict to the server/db in the .ini if in safe mode */ - if ((!len[DB] || PG(sql_safe_mode)) && IBG(default_db)) { - args[DB] = IBG(default_db); - len[DB] = strlen(IBG(default_db)); + if ((!len[DB] || PG(sql_safe_mode)) && (c = INI_STR("ibase.default_db"))) { + args[DB] = c; + len[DB] = strlen(c); } - if (!len[USER] && IBG(default_user)) { - args[USER] = IBG(default_user); - len[USER] = strlen(args[USER]); + if (!len[USER] && (c = INI_STR("ibase.default_user"))) { + args[USER] = c; + len[USER] = strlen(c); } - if (!len[PASS] && IBG(default_password)) { - args[PASS] = IBG(default_password); - len[PASS] = strlen(args[PASS]); + if (!len[PASS] && (c = INI_STR("ibase.default_password"))) { + args[PASS] = c; + len[PASS] = strlen(c); } - if (!len[CSET] && IBG(default_charset)) { - args[CSET] = IBG(default_charset); - len[CSET] = strlen(args[CSET]); + if (!len[CSET] && (c = INI_STR("ibase.default_charset"))) { + args[CSET] = c; + len[CSET] = strlen(c); } /* don't want usernames and passwords floating around */ @@ -677,6 +677,8 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* /* ... or a persistent one */ switch (zend_hash_find(&EG(persistent_list), hash, sizeof(hash), (void *) &le)) { + long l; + static char info[] = { isc_info_base_level, isc_info_end }; char result[8]; ISC_STATUS status[20]; @@ -698,7 +700,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* /* no link found, so we have to open one */ - if (IBG(max_links) != -1 && IBG(num_links) >= IBG(max_links)) { + if ((l = INI_INT("ibase.max_links")) != -1 && IBG(num_links) >= l) { _php_ibase_module_error("Too many open links (%ld)" TSRMLS_CC, IBG(num_links)); RETURN_FALSE; } @@ -709,7 +711,7 @@ static void _php_ibase_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* } /* use non-persistent if allowed number of persistent links is exceeded */ - if (!persistent || (IBG(max_persistent) != -1 && IBG(num_persistent) >= IBG(max_persistent))) { + if (!persistent || ((l = INI_INT("ibase.max_persistent") != -1) && IBG(num_persistent) >= l)) { ib_link = (ibase_db_link *) emalloc(sizeof(ibase_db_link)); ZEND_REGISTER_RESOURCE(return_value, ib_link, le_link); } else { @@ -759,7 +761,7 @@ PHP_FUNCTION(ibase_connect) Open a persistent connection to an InterBase database */ PHP_FUNCTION(ibase_pconnect) { - _php_ibase_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU, IBG(allow_persistent)); + _php_ibase_connect(INTERNAL_FUNCTION_PARAM_PASSTHRU, INI_INT("ibase.allow_persistent")); } /* }}} */ diff --git a/ext/interbase/php_ibase_includes.h b/ext/interbase/php_ibase_includes.h index 9ee53172fe..0c891be1e5 100755 --- a/ext/interbase/php_ibase_includes.h +++ b/ext/interbase/php_ibase_includes.h @@ -64,10 +64,6 @@ ZEND_BEGIN_MODULE_GLOBALS(ibase) ISC_STATUS status[20]; long default_link; long num_links, num_persistent; - long max_links, max_persistent; - long allow_persistent; - char *default_db, *default_user, *default_password, *default_charset; - char *timestampformat, *dateformat, *timeformat; char errmsg[MAX_ERRMSG]; long sql_code; ZEND_END_MODULE_GLOBALS(ibase) |