]> granicus.if.org Git - php/commitdiff
Use php_ prefix for header files
authorArd Biesheuvel <abies@php.net>
Mon, 2 Feb 2004 13:49:48 +0000 (13:49 +0000)
committerArd Biesheuvel <abies@php.net>
Mon, 2 Feb 2004 13:49:48 +0000 (13:49 +0000)
Added nearly complete implementation of service API

ext/interbase/ibase_service.c
ext/interbase/interbase.c
ext/interbase/php_interbase.h

index 4b793a0cbf4f3cafb68888685fe8e08c10e85656..abb722fc7e0b68b4e8d9efa41b347921769b2e7f 100644 (file)
@@ -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 @@ PHP_FUNCTION(ibase_service_detach)
 }
 /* }}} */
 
+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 @@ static void _php_ibase_backup_restore(INTERNAL_FUNCTION_PARAMETERS, char operati
        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 @@ static void _php_ibase_backup_restore(INTERNAL_FUNCTION_PARAMETERS, char operati
                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
index 498d270a28a3f62800a6a1bb5ac46b3979d20195..e753f83b389011139a117512de415cfbb3d5e118 100644 (file)
@@ -33,7 +33,7 @@
 #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 @@ function_entry ibase_functions[] = {
        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 @@ PHP_MINIT_FUNCTION(ibase)
        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;
index 8c4d8624139de0a834c70b6e56e36d551d0434d9..3cefb2a74423487998015d70ae30dbdc68707833 100644 (file)
@@ -83,6 +83,9 @@ PHP_FUNCTION(ibase_service_attach);
 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);