abies Mon Feb 2 08:49:49 2004 EDT
Modified files:
/php-src/ext/interbase interbase.c php_interbase.h ibase_service.c
Log:
Use php_ prefix for header files
Added nearly complete implementation of service API
http://cvs.php.net/diff.php/php-src/ext/interbase/interbase.c?r1=1.196&r2=1.197&ty=u
Index: php-src/ext/interbase/interbase.c
diff -u php-src/ext/interbase/interbase.c:1.196 php-src/ext/interbase/interbase.c:1.197
--- php-src/ext/interbase/interbase.c:1.196 Sun Feb 1 12:52:36 2004
+++ php-src/ext/interbase/interbase.c Mon Feb 2 08:49:48 2004
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interbase.c,v 1.196 2004/02/01 17:52:36 abies Exp $ */
+/* $Id: interbase.c,v 1.197 2004/02/02 13:49:48 abies Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -26,14 +26,14 @@
#include "php.h"
-#define FILE_REVISION "$Revision: 1.196 $"
+#define FILE_REVISION "$Revision: 1.197 $"
#if HAVE_IBASE
#include "php_ini.h"
#include "ext/standard/php_standard.h"
#include "php_interbase.h"
-#include "interbase.h"
+#include "php_ibase_includes.h"
#include <time.h>
@@ -118,6 +118,9 @@
PHP_FE(ibase_service_detach, NULL)
PHP_FE(ibase_backup, NULL)
PHP_FE(ibase_restore, NULL)
+ PHP_FE(ibase_maintain_db, NULL)
+ PHP_FE(ibase_db_info, NULL)
+ PHP_FE(ibase_server_info, NULL)
#endif
PHP_FE(ibase_wait_event, NULL)
PHP_FE(ibase_set_event_handler, NULL)
@@ -586,10 +589,67 @@
REGISTER_LONG_CONSTANT("IBASE_REC_NO_VERSION", PHP_IBASE_REC_NO_VERSION,
CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("IBASE_NOWAIT", PHP_IBASE_NOWAIT, CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("IBASE_WAIT", PHP_IBASE_WAIT, CONST_PERSISTENT);
-
- return SUCCESS;
-}
-
+#if HAVE_IBASE6_API
+ /* backup options */
+ REGISTER_LONG_CONSTANT("IBASE_BKP_IGNORE_CHECKSUMS",
isc_spb_bkp_ignore_checksums, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_BKP_IGNORE_LIMBO", isc_spb_bkp_ignore_limbo,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_BKP_METADATA_ONLY", isc_spb_bkp_metadata_only,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_BKP_NO_GARBAGE_COLLECT",
isc_spb_bkp_no_garbage_collect, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_BKP_OLD_DESCRIPTIONS",
isc_spb_bkp_old_descriptions, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_BKP_NON_TRANSPORTABLE",
isc_spb_bkp_non_transportable, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_BKP_CONVERT", isc_spb_bkp_convert,
CONST_PERSISTENT);
+ /* restore options */
+ REGISTER_LONG_CONSTANT("IBASE_RES_DEACTIVATE_IDX", isc_spb_res_deactivate_idx,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RES_NO_SHADOW", isc_spb_res_no_shadow,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RES_NO_VALIDITY", isc_spb_res_no_validity,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RES_ONE_AT_A_TIME", isc_spb_res_one_at_a_time,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RES_REPLACE", isc_spb_res_replace,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RES_CREATE", isc_spb_res_create,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RES_USE_ALL_SPACE", isc_spb_res_use_all_space,
CONST_PERSISTENT);
+ /* manage options */
+ REGISTER_LONG_CONSTANT("IBASE_PRP_PAGE_BUFFERS", isc_spb_prp_page_buffers,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_SWEEP_INTERVAL", isc_spb_prp_sweep_interval,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_SHUTDOWN_DB", isc_spb_prp_shutdown_db,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_DENY_NEW_TRANSACTIONS",
isc_spb_prp_deny_new_transactions, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_DENY_NEW_ATTACHMENTS",
isc_spb_prp_deny_new_attachments, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_RESERVE_SPACE", isc_spb_prp_reserve_space,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_RES_USE_FULL", isc_spb_prp_res_use_full,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_RES", isc_spb_prp_res, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_WRITE_MODE", isc_spb_prp_write_mode,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_WM_ASYNC", isc_spb_prp_wm_async,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_WM_SYNC", isc_spb_prp_wm_sync,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_ACCESS_MODE", isc_spb_prp_access_mode,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_AM_READONLY", isc_spb_prp_am_readonly,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_AM_READWRITE", isc_spb_prp_am_readwrite,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_SET_SQL_DIALECT",
isc_spb_prp_set_sql_dialect, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_ACTIVATE", isc_spb_prp_activate,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_PRP_DB_ONLINE", isc_spb_prp_db_online,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RPR_CHECK_DB", isc_spb_rpr_check_db,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RPR_IGNORE_CHECKSUM",
isc_spb_rpr_ignore_checksum, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RPR_KILL_SHADOWS", isc_spb_rpr_kill_shadows,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RPR_MEND_DB", isc_spb_rpr_mend_db,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RPR_VALIDATE_DB", isc_spb_rpr_validate_db,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RPR_FULL", isc_spb_rpr_full, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_RPR_SWEEP_DB", isc_spb_rpr_sweep_db,
CONST_PERSISTENT);
+ /* db info arguments */
+ REGISTER_LONG_CONSTANT("IBASE_STS_DATA_PAGES", isc_spb_sts_data_pages,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_STS_DB_LOG", isc_spb_sts_db_log,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_STS_HDR_PAGES", isc_spb_sts_hdr_pages,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_STS_IDX_PAGES", isc_spb_sts_idx_pages,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_STS_SYS_RELATIONS", isc_spb_sts_sys_relations,
CONST_PERSISTENT);
+ /* server info arguments */
+ REGISTER_LONG_CONSTANT("IBASE_SVC_SERVER_VERSION",
isc_info_svc_server_version, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_SVC_IMPLEMENTATION",
isc_info_svc_implementation, CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_SVC_GET_ENV", isc_info_svc_get_env,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_SVC_GET_ENV_LOCK", isc_info_svc_get_env_lock,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_SVC_GET_ENV_MSG", isc_info_svc_get_env_msg,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_SVC_USER_DBPATH", isc_info_svc_user_dbpath,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_SVC_SVR_DB_INFO", isc_info_svc_svr_db_info,
CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IBASE_SVC_GET_USERS", isc_info_svc_get_users,
CONST_PERSISTENT);
+#endif
+ return SUCCESS;
+}
+
PHP_RINIT_FUNCTION(ibase)
{
IBG(default_link)= -1;
http://cvs.php.net/diff.php/php-src/ext/interbase/php_interbase.h?r1=1.66&r2=1.67&ty=u
Index: php-src/ext/interbase/php_interbase.h
diff -u php-src/ext/interbase/php_interbase.h:1.66
php-src/ext/interbase/php_interbase.h:1.67
--- php-src/ext/interbase/php_interbase.h:1.66 Sun Feb 1 12:52:36 2004
+++ php-src/ext/interbase/php_interbase.h Mon Feb 2 08:49:48 2004
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_interbase.h,v 1.66 2004/02/01 17:52:36 abies Exp $ */
+/* $Id: php_interbase.h,v 1.67 2004/02/02 13:49:48 abies Exp $ */
#ifndef PHP_INTERBASE_H
#define PHP_INTERBASE_H
@@ -83,6 +83,9 @@
PHP_FUNCTION(ibase_service_detach);
PHP_FUNCTION(ibase_backup);
PHP_FUNCTION(ibase_restore);
+PHP_FUNCTION(ibase_maintain_db);
+PHP_FUNCTION(ibase_db_info);
+PHP_FUNCTION(ibase_server_info);
#endif
PHP_FUNCTION(ibase_errmsg);
PHP_FUNCTION(ibase_errcode);
http://cvs.php.net/diff.php/php-src/ext/interbase/ibase_service.c?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/interbase/ibase_service.c
diff -u php-src/ext/interbase/ibase_service.c:1.2
php-src/ext/interbase/ibase_service.c:1.3
--- php-src/ext/interbase/ibase_service.c:1.2 Sun Feb 1 12:52:36 2004
+++ php-src/ext/interbase/ibase_service.c Mon Feb 2 08:49:48 2004
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: ibase_service.c,v 1.2 2004/02/01 17:52:36 abies Exp $ */
+/* $Id: ibase_service.c,v 1.3 2004/02/02 13:49:48 abies Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -27,7 +27,7 @@
#if HAVE_IBASE6_API
#include "php_interbase.h"
-#include "interbase.h"
+#include "php_ibase_includes.h"
static void _php_ibase_user(INTERNAL_FUNCTION_PARAMETERS, int operation) /* {{{ */
{
@@ -255,6 +255,150 @@
}
/* }}} */
+static void _php_ibase_service_query(INTERNAL_FUNCTION_PARAMETERS,
+ ibase_service *svm, char info_action TSRMLS_DC) /* {{{ */
+{
+ static char spb[] = { isc_info_svc_timeout, 10, 0, 0, 0 };
+
+ char res_buf[400], *result, *heap_buf = NULL, *heap_p;
+ long heap_buf_size = 200, line_len;
+
+ /* info about users requires an action first */
+ if (info_action == isc_info_svc_get_users) {
+ static char action[] = { isc_action_svc_display_user };
+
+ if (isc_service_start(IB_STATUS, &svm->handle, NULL, sizeof(action),
action)) {
+ _php_ibase_error(TSRMLS_C);
+ RETURN_FALSE;
+ }
+ }
+
+query_loop:
+ result = res_buf;
+
+ if (isc_service_query(IB_STATUS, &svm->handle, NULL, sizeof(spb), spb,
+ 1, &info_action, sizeof(res_buf), res_buf)) {
+
+ _php_ibase_error(TSRMLS_C);
+ RETURN_FALSE;
+ }
+ while (*result != isc_info_end) {
+ switch (*result++) {
+ default:
+ RETURN_FALSE;
+
+ case isc_info_svc_line:
+ if (! (line_len = isc_vax_integer(result, 2))) {
+ /* done */
+ if (heap_buf) {
+ RETURN_STRING(heap_buf,0);
+ } else {
+ RETURN_TRUE;
+ }
+ }
+ if (!heap_buf || (heap_p - heap_buf + line_len +2) >
heap_buf_size) {
+ long res_size = heap_buf ? heap_p - heap_buf :
0;
+
+ while (heap_buf_size < (res_size + line_len
+2)) {
+ heap_buf_size *= 2;
+ }
+ heap_buf = (char*) erealloc(heap_buf,
heap_buf_size);
+ heap_p = heap_buf + res_size;
+ }
+ result += 2;
+ sprintf(heap_p, "%s\n", result);
+ heap_p += line_len +2;
+ goto query_loop; /* repeat until result is exhausted */
+
+ case isc_info_svc_server_version:
+ case isc_info_svc_implementation:
+ case isc_info_svc_get_env:
+ case isc_info_svc_get_env_lock:
+ case isc_info_svc_get_env_msg:
+ case isc_info_svc_user_dbpath:
+ RETURN_STRINGL(result + 2, isc_vax_integer(result, 2),
1);
+
+ case isc_info_svc_svr_db_info:
+ array_init(return_value);
+
+ do {
+ switch (*result++) {
+ int len;
+
+ case isc_spb_num_att:
+ add_assoc_long(return_value,
"attachments", isc_vax_integer(result,4));
+ result += 4;
+ break;
+
+ case isc_spb_num_db:
+ add_assoc_long(return_value,
"databases", isc_vax_integer(result,4));
+ result += 4;
+ break;
+
+ case isc_spb_dbname:
+ len =
isc_vax_integer(result,2);
+
add_next_index_stringl(return_value, result +2, len, 1);
+ result += len+2;
+ }
+ } while (*result != isc_info_flag_end);
+ return;
+
+ case isc_info_svc_get_users: {
+ zval *user;
+ array_init(return_value);
+
+ while (*result != isc_info_end) {
+
+ switch (*result++) {
+ int len;
+
+ case isc_spb_sec_username:
+ /* it appears that the
username is always first */
+ ALLOC_INIT_ZVAL(user);
+ array_init(user);
+
add_next_index_zval(return_value, user);
+
+ len =
isc_vax_integer(result,2);
+ add_assoc_stringl(user,
"user_name", result +2, len, 1);
+ result += len+2;
+ break;
+
+ case isc_spb_sec_firstname:
+ len =
isc_vax_integer(result,2);
+ add_assoc_stringl(user,
"first_name", result +2, len, 1);
+ result += len+2;
+ break;
+
+ case isc_spb_sec_middlename:
+ len =
isc_vax_integer(result,2);
+ add_assoc_stringl(user,
"middle_name", result +2, len, 1);
+ result += len+2;
+ break;
+
+ case isc_spb_sec_lastname:
+ len =
isc_vax_integer(result,2);
+ add_assoc_stringl(user,
"last_name", result +2, len, 1);
+ result += len+2;
+ break;
+
+ case isc_spb_sec_userid:
+ add_assoc_long(user,
"user_id", isc_vax_integer(result, 4));
+ result += 4;
+ break;
+
+ case isc_spb_sec_groupid:
+ add_assoc_long(user,
"group_id", isc_vax_integer(result, 4));
+ result += 4;
+ break;
+ }
+ }
+ return;
+ }
+ }
+ }
+}
+/* }}} */
+
static void _php_ibase_backup_restore(INTERNAL_FUNCTION_PARAMETERS, char operation)
/* {{{ */
{
/**
@@ -266,34 +410,30 @@
zval *res;
char *db, *bk, buf[200];
long dblen, bklen, spb_len, opts = 0;
- zend_bool replace = 0;
+ zend_bool verbose = 0;
ibase_service *svm;
RESET_ERRMSG;
- if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
- operation == isc_action_svc_backup ? "rss" : "rss|b",
- &res, &db, &dblen, &bk, &bklen, &replace)) {
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rss|lb",
+ &res, &db, &dblen, &bk, &bklen, &opts, &verbose)) {
RETURN_FALSE;
}
ZEND_FETCH_RESOURCE(svm, ibase_service *, &res, -1,
"Interbase service manager handle", le_service);
- switch (operation) {
- default:
- break;
- case isc_action_svc_restore:
- opts |= replace ? isc_spb_res_replace : isc_spb_res_create;
- }
-
/* fill the param buffer */
spb_len = snprintf(buf, sizeof(buf), "%c%c%c%c%s%c%c%c%s%c%c%c%c%c",
operation, isc_spb_dbname, (char)dblen, (char)(dblen >> 8), db,
isc_spb_bkp_file, (char)bklen, (char)(bklen >> 8), bk, isc_spb_options,
(char)opts,(char)(opts >> 8), (char)(opts >> 16), (char)(opts >> 24));
+
+ if (verbose) {
+ buf[spb_len++] = isc_spb_verbose;
+ }
- if (spb_len > sizeof(buf) || spb_len == -1) {
+ if (spb_len > sizeof(buf) || spb_len <= 0) {
_php_ibase_module_error("Internal error: insufficient buffer space for
SPB (%ld)"
TSRMLS_CC, spb_len);
RETURN_FALSE;
@@ -305,27 +445,161 @@
RETURN_FALSE;
}
- RETURN_TRUE;
+ if (!verbose) {
+ RETURN_TRUE;
+ } else {
+ _php_ibase_service_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, svm,
isc_info_svc_line);
+ }
}
/* }}} */
-/* {{{ proto bool ibase_backup(resource service_handle, string source_db, string
dest_file)
+/* {{{ proto mixed ibase_backup(resource service_handle, string source_db, string
dest_file [, int options [, bool verbose]])
Initiates a backup task in the service manager and returns immediately */
PHP_FUNCTION(ibase_backup)
{
_php_ibase_backup_restore(INTERNAL_FUNCTION_PARAM_PASSTHRU,
isc_action_svc_backup);
}
-/* {{{ proto bool ibase_restore(resource service_handle, string source_file, string
dest_db [, bool replace])
+/* {{{ proto mixed ibase_restore(resource service_handle, string source_file, string
dest_db [, int options [, bool verbose]])
Initiates a restore task in the service manager and returns immediately */
PHP_FUNCTION(ibase_restore)
{
_php_ibase_backup_restore(INTERNAL_FUNCTION_PARAM_PASSTHRU,
isc_action_svc_restore);
}
/* }}} */
-#endif /* HAVE_IBASE */
-/*
+static void _php_ibase_service_action(INTERNAL_FUNCTION_PARAMETERS, char svc_action)
/* {{{ */
+{
+ zval *res;
+ char buf[128], *db;
+ long action, spb_len, dblen, argument = 0;
+ ibase_service *svm;
+
+ RESET_ERRMSG;
+
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rsl|l",
+ &res, &db, &dblen, &action, &argument)) {
+ RETURN_FALSE;
+ }
+
+ ZEND_FETCH_RESOURCE(svm, ibase_service *, &res, -1,
+ "Interbase service manager handle", le_service);
+
+ if (svc_action == isc_action_svc_db_stats) {
+ switch (action) {
+ default:
+ goto unknown_option;
+
+ case isc_spb_sts_data_pages:
+ case isc_spb_sts_db_log:
+ case isc_spb_sts_hdr_pages:
+ case isc_spb_sts_idx_pages:
+ case isc_spb_sts_sys_relations:
+ goto options_argument;
+ }
+ } else if (svc_action == isc_action_svc_display_user) {
+ *buf = svc_action;
+ spb_len = 1;
+ } else {
+ /* these actions all expect different types of arguments */
+ switch (action) {
+ default:
+unknown_option:
+ _php_ibase_module_error("Unrecognised option (%ld)"
TSRMLS_CC, action);
+ RETURN_FALSE;
+
+ case isc_spb_prp_activate:
+ case isc_spb_prp_db_online:
+ case isc_spb_rpr_check_db:
+ case isc_spb_rpr_ignore_checksum:
+ case isc_spb_rpr_kill_shadows:
+ case isc_spb_rpr_mend_db:
+ case isc_spb_rpr_validate_db:
+ case isc_spb_rpr_full:
+ case isc_spb_rpr_sweep_db:
+options_argument:
+ argument |= action;
+ action = isc_spb_options;
+
+ case isc_spb_prp_page_buffers:
+ case isc_spb_prp_sweep_interval:
+ case isc_spb_prp_shutdown_db:
+ case isc_spb_prp_deny_new_transactions:
+ case isc_spb_prp_deny_new_attachments:
+ case isc_spb_prp_set_sql_dialect:
+ spb_len = snprintf(buf, sizeof(buf),
"%c%c%c%c%s%c%c%c%c%c",
+ svc_action, isc_spb_dbname, (char)dblen,
(char)(dblen >> 8), db,
+ (char)action, (char)argument, (char)(argument
>> 8), (char)(argument >> 16),
+ (char)(argument >> 24));
+ break;
+
+ case isc_spb_prp_reserve_space:
+ case isc_spb_prp_write_mode:
+ case isc_spb_prp_access_mode:
+ spb_len = snprintf(buf, sizeof(buf), "%c%c%c%c%s%c%c",
+ isc_action_svc_properties, isc_spb_dbname,
(char)dblen, (char)(dblen >> 8),
+ db, (char)action, (char)argument);
+ }
+ }
+
+ if (spb_len > sizeof(buf) || spb_len == -1) {
+ _php_ibase_module_error("Internal error: insufficient buffer space for
SPB (%ld)"
+ TSRMLS_CC, spb_len);
+ RETURN_FALSE;
+ }
+
+ if (isc_service_start(IB_STATUS, &svm->handle, NULL, (unsigned short)spb_len,
buf)) {
+ _php_ibase_error(TSRMLS_C);
+ RETURN_FALSE;
+ }
+
+ if (svc_action == isc_action_svc_db_stats) {
+ _php_ibase_service_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, svm,
isc_info_svc_line);
+ } else {
+ RETURN_TRUE;
+ }
+}
+/* }}} */
+
+/* {{{ proto bool ibase_maintain_db(resource service_handle, string db, int action [,
int argument])
+ Execute a maintenance command on the database server */
+PHP_FUNCTION(ibase_maintain_db)
+{
+ _php_ibase_service_action(INTERNAL_FUNCTION_PARAM_PASSTHRU,
isc_action_svc_properties);
+}
+/* }}} */
+
+/* {{{ proto string ibase_db_info(resource service_handle, string db, int action [,
int argument])
+ Request statistics about a database */
+PHP_FUNCTION(ibase_db_info)
+{
+ _php_ibase_service_action(INTERNAL_FUNCTION_PARAM_PASSTHRU,
isc_action_svc_db_stats);
+}
+/* }}} */
+
+/* {{{ proto string ibase_server_info(resource service_handle, int action)
+ Request information about a database */
+PHP_FUNCTION(ibase_server_info)
+{
+ zval *res;
+ long action;
+ ibase_service *svm;
+
+ RESET_ERRMSG;
+
+ if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &res,
&action)) {
+ RETURN_FALSE;
+ }
+
+ ZEND_FETCH_RESOURCE(svm, ibase_service *, &res, -1,
+ "Interbase service manager handle", le_service);
+
+ _php_ibase_service_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, svm, action);
+}
+/* }}} */
+#endif /* HAVE_IBASE6_API */
+
+/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php