]> granicus.if.org Git - php/commitdiff
MFH: Version info
authorMarcus Boerger <helly@php.net>
Fri, 31 Jan 2003 20:10:11 +0000 (20:10 +0000)
committerMarcus Boerger <helly@php.net>
Fri, 31 Jan 2003 20:10:11 +0000 (20:10 +0000)
16 files changed:
ext/dba/dba.c
ext/dba/dba_cdb.c
ext/dba/dba_db2.c
ext/dba/dba_db3.c
ext/dba/dba_db4.c
ext/dba/dba_dbm.c
ext/dba/dba_flatfile.c
ext/dba/dba_gdbm.c
ext/dba/dba_ndbm.c
ext/dba/libcdb/cdb.c
ext/dba/libcdb/cdb.h
ext/dba/libcdb/cdb_make.c
ext/dba/libcdb/cdb_make.h
ext/dba/libflatfile/flatfile.c
ext/dba/libflatfile/flatfile.h
ext/dba/php_dba.h

index 82956294013e2d196c6d909cf525844f76c55b2a..e0c3cb7fa16d3217e50992e8f7fb73d72081d95e 100644 (file)
@@ -147,7 +147,7 @@ ZEND_GET_MODULE(dba)
 {\
        #alias, flags, dba_open_##name, dba_close_##name, dba_fetch_##name, dba_update_##name, \
        dba_exists_##name, dba_delete_##name, dba_firstkey_##name, dba_nextkey_##name, \
-       dba_optimize_##name, dba_sync_##name \
+       dba_optimize_##name, dba_sync_##name, dba_info_##name \
 },
 
 #define DBA_HND(name, flags) DBA_NAMED_HND(name, name, flags)
@@ -191,7 +191,7 @@ static dba_handler handler[] = {
 #if DBA_FLATFILE
        DBA_HND(flatfile, DBA_STREAM_OPEN|DBA_LOCK_ALL) /* No lock in lib */
 #endif
-       { NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
+       { NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
 };
 
 static int le_db;
@@ -750,23 +750,26 @@ PHP_FUNCTION(dba_sync)
 }
 /* }}} */
 
-/* {{{ proto array dba_handlers()
+/* {{{ proto array dba_handlers([bool full_info])
    List configured databases */
 PHP_FUNCTION(dba_handlers)
 {
        dba_handler *hptr;
+       zend_bool full_info = 0;
 
-       if (ZEND_NUM_ARGS()!=0) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &full_info) == FAILURE) {
                ZEND_WRONG_PARAM_COUNT();
                RETURN_FALSE;
        }
 
-       if (array_init(return_value) == FAILURE) {
-               php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unable to initialize array");
-               RETURN_FALSE;
-       }
+       array_init(return_value);
+
        for(hptr = handler; hptr->name; hptr++) {
-               add_next_index_string(return_value, hptr->name, 1);
+               if (full_info) {
+                       add_assoc_string(return_value, hptr->name, hptr->info(hptr, NULL TSRMLS_CC), 0);
+               } else {
+                       add_next_index_string(return_value, hptr->name, 1);
+               }
        }
 }
 /* }}} */
@@ -784,10 +787,8 @@ PHP_FUNCTION(dba_list)
                RETURN_FALSE;
        }
 
-       if (array_init(return_value) == FAILURE) {
-               php_error_docref(NULL TSRMLS_CC, E_ERROR, "Unable to initialize array");
-               RETURN_FALSE;
-       }
+       array_init(return_value);
+
        numitems = zend_hash_next_free_element(&EG(regular_list));
        for (i=1; i<numitems; i++) {
                if (zend_hash_index_find(&EG(regular_list), i, (void **) &le)==FAILURE) {
index 3f98eb6d5fe6c2b2967bfe3a9b21fd1ea0ac1677..fb1a3f3ba20a58e23d062d5ec10bc96d6ae219e9 100644 (file)
@@ -324,6 +324,19 @@ DBA_SYNC_FUNC(cdb)
        return SUCCESS;
 }
 
+DBA_INFO_FUNC(cdb)
+{
+#if DBA_CDB_BUILTIN
+       if (!strcmp(hnd->name, "cdb")) {
+               return estrdup(cdb_version());
+       } else {
+               return estrdup(cdb_make_version());
+       }
+#else
+       return estrdup("External");
+#endif
+}
+
 #endif
 
 /*
index 0227cc5e34c32392bc7c434d87c239a88d062edb..9ef28a7a66e2fc3e1a017de4aee9aadd4ec4a2e9 100644 (file)
@@ -188,6 +188,11 @@ DBA_SYNC_FUNC(db2)
        return dba->dbp->sync(dba->dbp, 0) ? FAILURE : SUCCESS;
 }
 
+DBA_INFO_FUNC(db2)
+{
+       return estrdup(DB_VERSION_STRING);
+}
+
 #endif
 
 /*
index 0bce28a72d64a7a83a644fed84c4d263aa4d8bae..3d0e892219c15d4b7554eb64060d9e71c19f2688 100644 (file)
@@ -217,6 +217,11 @@ DBA_SYNC_FUNC(db3)
        return dba->dbp->sync(dba->dbp, 0) ? FAILURE : SUCCESS;
 }
 
+DBA_INFO_FUNC(db3)
+{
+       return estrdup(DB_VERSION_STRING);
+}
+
 #endif
 
 /*
index bc5a1365b8919dae8b14158ad36ebb3c09805b8d..0195d61400648b9fc8c07d07ef4e54ff022c7199 100644 (file)
@@ -222,6 +222,11 @@ DBA_SYNC_FUNC(db4)
        return dba->dbp->sync(dba->dbp, 0) ? FAILURE : SUCCESS;
 }
 
+DBA_INFO_FUNC(db4)
+{
+       return estrdup(DB_VERSION_STRING);
+}
+
 #endif
 
 /*
index 5025e023a96112e957024909aef0e82a2b723508..f50d58a03fc06496000d16cc4e5e77e28a8aeeb7 100644 (file)
@@ -177,6 +177,11 @@ DBA_SYNC_FUNC(dbm)
        return SUCCESS;
 }
 
+DBA_INFO_FUNC(dbm)
+{
+       return estrdup("DBM");
+}
+
 #endif
 
 /*
index 30a6e9dea0729d45a56ae9e36ee2656c3e2909cd..3134603259dd1af4891a5cf9e0ca24a4df587ea4 100644 (file)
@@ -163,6 +163,11 @@ DBA_SYNC_FUNC(flatfile)
        return SUCCESS;
 }
 
+DBA_INFO_FUNC(flatfile)
+{
+       return estrdup(flatfile_version());
+}
+
 #endif
 
 /*
index 0dda322eca2eb1b844e4943765c38d6aa7e809fe..40332ad44ebf75201e25ac2769024f9964c0ef2c 100644 (file)
@@ -180,6 +180,12 @@ DBA_SYNC_FUNC(gdbm)
        gdbm_sync(dba->dbf);
        return SUCCESS;
 }
+
+DBA_INFO_FUNC(gdbm)
+{
+       return estrdup(gdbm_version);
+}
+
 #endif
 
 /*
index 7d2e5c3d3fcd72ba9d62678413ef2e989652a1dd..c8cf5409446b57e65a132dcc73786b2f9be1027f 100644 (file)
@@ -153,6 +153,12 @@ DBA_SYNC_FUNC(ndbm)
 {
        return SUCCESS;
 }
+
+DBA_INFO_FUNC(ndbm)
+{
+       return estrdup("NDBM" );
+}
+
 #endif
 
 /*
index 5e40f8660745daaed5eab138392bf85ff8e3693c..da3de2ff34f3b6f6997d101248d067292c16ddaa 100644 (file)
@@ -193,3 +193,10 @@ int cdb_find(struct cdb *c, char *key, unsigned int len TSRMLS_DC)
        return cdb_findnext(c, key, len TSRMLS_CC);
 }
 /* }}} */
+
+/* {{{ cdb_version */
+char *cdb_version() 
+{
+       return "0.75, $Revision$";
+}
+/* }}} */
index ca8cd23b7b94bd08cb8ce551fd719943b0ccd168..6a3b08db34ca8984a408f5d6273a37600b93c0ad 100644 (file)
@@ -52,4 +52,6 @@ int cdb_find(struct cdb *, char *, unsigned int TSRMLS_DC);
 #define cdb_datapos(c) ((c)->dpos)
 #define cdb_datalen(c) ((c)->dlen)
 
+char *cdb_version();
+
 #endif
index 65ef385d219818c2478aefa78c1c29ec52cb168b..1c3402e9081b057eef341c156ec7f02a181e8339 100644 (file)
@@ -238,3 +238,9 @@ int cdb_make_finish(struct cdb_make *c TSRMLS_DC)
        return php_stream_flush(c->fp);
 }
 /* }}} */
+
+/* {{{ cdb_make_version */
+char *cdb_make_version() 
+{
+       return "0.75, $Revision$";
+}
index 0a54befec31b038ad3b20460acfddb9c9ac88ba5..ea3f40d3145c86cc9469965b5a7cf8316567c6c4 100644 (file)
@@ -59,5 +59,6 @@ int cdb_make_addbegin(struct cdb_make *, unsigned int, unsigned int TSRMLS_DC);
 int cdb_make_addend(struct cdb_make *, unsigned int, unsigned int, uint32 TSRMLS_DC);
 int cdb_make_add(struct cdb_make *, char *, unsigned int, char *, unsigned int TSRMLS_DC);
 int cdb_make_finish(struct cdb_make * TSRMLS_DC);
+char *cdb_make_version();
 
 #endif
index 1cd13fceaa6755f23c5592cd0c83b364baae7b2e..055256144dc155e6e3f6a8c5c7222851bea929ea 100644 (file)
@@ -295,6 +295,13 @@ datum flatfile_nextkey(flatfile *dba TSRMLS_DC) {
 }      
 /* }}} */
 
+/* {{{ flatfile_version */
+char *flatfile_version() 
+{
+       return "1.0, $Revision$";
+}
+/* }}} */ 
+
 /*
  * Local variables:
  * tab-width: 4
index 8963f64f823782d459795ded91caf4aa32bec5c4..d4187d810a9d4c7b160dd064a5fac949df3b0c53 100644 (file)
@@ -43,5 +43,6 @@ int flatfile_delete(flatfile *dba, datum key_datum TSRMLS_DC);
 int flatfile_findkey(flatfile *dba, datum key_datum TSRMLS_DC);
 datum flatfile_firstkey(flatfile *dba TSRMLS_DC);
 datum flatfile_nextkey(flatfile *dba TSRMLS_DC);
+char *flatfile_version();
 
 #endif
index dc909020887ccd02041d8d72f2cfbc83d6aa5938..18ace81984bf280d49f21651f4799d7b40fb81cc 100644 (file)
@@ -81,6 +81,8 @@ typedef struct dba_handler {
        char* (*nextkey)(dba_info *, int * TSRMLS_DC);
        int (*optimize)(dba_info * TSRMLS_DC);
        int (*sync)(dba_info * TSRMLS_DC);
+       char* (*info)(struct dba_handler *hnd, dba_info * TSRMLS_DC);
+               /* dba_info==NULL: Handler info, dba_info!=NULL: Database info */
 } dba_handler;
 
 /* common prototypes which must be supplied by modules */
@@ -105,6 +107,8 @@ typedef struct dba_handler {
        int dba_optimize_##x(dba_info *info TSRMLS_DC)
 #define DBA_SYNC_FUNC(x) \
        int dba_sync_##x(dba_info *info TSRMLS_DC)
+#define DBA_INFO_FUNC(x) \
+       char *dba_info_##x(dba_handler *hnd, dba_info *info TSRMLS_DC)
 
 #define DBA_FUNCS(x) \
        DBA_OPEN_FUNC(x); \
@@ -116,7 +120,8 @@ typedef struct dba_handler {
        DBA_FIRSTKEY_FUNC(x); \
        DBA_NEXTKEY_FUNC(x); \
        DBA_OPTIMIZE_FUNC(x); \
-       DBA_SYNC_FUNC(x)
+       DBA_SYNC_FUNC(x); \
+       DBA_INFO_FUNC(x)
 
 #define VALLEN(p) Z_STRVAL_PP(p), Z_STRLEN_PP(p)