#endif
#include "php.h"
+#include "php_ini.h"
#if HAVE_IBASE
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);
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);
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);
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 */
_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)) {
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:
/* {{{ 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)
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;
}
/* 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 */
/* ... 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];
/* 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;
}
}
/* 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 {
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"));
}
/* }}} */