helly Mon Dec 30 08:07:30 2002 EDT Modified files: /php4/ext/dba/libcdb cdb.c cdb.h cdb_make.c cdb_make.h /php4/ext/dba dba.c dba_cdb.c dba_db2.c dba_db3.c dba_db4.c dba_dbm.c dba_flatfile.c dba_gdbm.c dba_ndbm.c php_dba.h /php4/ext/dba/libflatfile flatfile.c flatfile.h Log: Add info function to handlers and return handler info when dba_handlers is called with optional parameter full_info set true.
Index: php4/ext/dba/libcdb/cdb.c diff -u php4/ext/dba/libcdb/cdb.c:1.4 php4/ext/dba/libcdb/cdb.c:1.5 --- php4/ext/dba/libcdb/cdb.c:1.4 Mon Nov 18 20:06:41 2002 +++ php4/ext/dba/libcdb/cdb.c Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cdb.c,v 1.4 2002/11/19 01:06:41 edink Exp $ */ +/* $Id: cdb.c,v 1.5 2002/12/30 13:07:29 helly Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ @@ -191,5 +191,12 @@ { cdb_findstart(c TSRMLS_CC); return cdb_findnext(c, key, len TSRMLS_CC); +} +/* }}} */ + +/* {{{ cdb_version */ +char *cdb_version() +{ + return "0.75, $Revision: 1.5 $"; } /* }}} */ Index: php4/ext/dba/libcdb/cdb.h diff -u php4/ext/dba/libcdb/cdb.h:1.2 php4/ext/dba/libcdb/cdb.h:1.3 --- php4/ext/dba/libcdb/cdb.h:1.2 Mon Nov 18 20:06:41 2002 +++ php4/ext/dba/libcdb/cdb.h Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cdb.h,v 1.2 2002/11/19 01:06:41 edink Exp $ */ +/* $Id: cdb.h,v 1.3 2002/12/30 13:07:29 helly Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ @@ -51,5 +51,7 @@ #define cdb_datapos(c) ((c)->dpos) #define cdb_datalen(c) ((c)->dlen) + +char *cdb_version(); #endif Index: php4/ext/dba/libcdb/cdb_make.c diff -u php4/ext/dba/libcdb/cdb_make.c:1.3 php4/ext/dba/libcdb/cdb_make.c:1.4 --- php4/ext/dba/libcdb/cdb_make.c:1.3 Mon Nov 18 20:06:41 2002 +++ php4/ext/dba/libcdb/cdb_make.c Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cdb_make.c,v 1.3 2002/11/19 01:06:41 edink Exp $ */ +/* $Id: cdb_make.c,v 1.4 2002/12/30 13:07:29 helly Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ @@ -238,3 +238,9 @@ return php_stream_flush(c->fp); } /* }}} */ + +/* {{{ cdb_make_version */ +char *cdb_make_version() +{ + return "0.75, $Revision: 1.4 $"; +} Index: php4/ext/dba/libcdb/cdb_make.h diff -u php4/ext/dba/libcdb/cdb_make.h:1.2 php4/ext/dba/libcdb/cdb_make.h:1.3 --- php4/ext/dba/libcdb/cdb_make.h:1.2 Mon Nov 18 20:06:41 2002 +++ php4/ext/dba/libcdb/cdb_make.h Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: cdb_make.h,v 1.2 2002/11/19 01:06:41 edink Exp $ */ +/* $Id: cdb_make.h,v 1.3 2002/12/30 13:07:29 helly Exp $ */ /* incorporated from D.J.Bernstein's cdb-0.75 (http://cr.yp.to/cdb.html)*/ @@ -59,5 +59,6 @@ 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: php4/ext/dba/dba.c diff -u php4/ext/dba/dba.c:1.77 php4/ext/dba/dba.c:1.78 --- php4/ext/dba/dba.c:1.77 Mon Dec 30 06:43:18 2002 +++ php4/ext/dba/dba.c Mon Dec 30 08:07:29 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba.c,v 1.77 2002/12/30 11:43:18 helly Exp $ */ +/* $Id: dba.c,v 1.78 2002/12/30 13:07:29 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -92,21 +92,6 @@ ZEND_GET_MODULE(dba) #endif -typedef struct dba_handler { - char *name; /* handler name */ - int flags; /* whether and how dba does locking and other flags*/ - int (*open)(dba_info *, char **error TSRMLS_DC); - void (*close)(dba_info * TSRMLS_DC); - char* (*fetch)(dba_info *, char *, int, int, int * TSRMLS_DC); - int (*update)(dba_info *, char *, int, char *, int, int TSRMLS_DC); - int (*exists)(dba_info *, char *, int TSRMLS_DC); - int (*delete)(dba_info *, char *, int TSRMLS_DC); - char* (*firstkey)(dba_info *, int * TSRMLS_DC); - char* (*nextkey)(dba_info *, int * TSRMLS_DC); - int (*optimize)(dba_info * TSRMLS_DC); - int (*sync)(dba_info * TSRMLS_DC); -} dba_handler; - /* {{{ macromania */ #define DBA_ID_PARS \ @@ -163,7 +148,7 @@ {\ #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) @@ -207,7 +192,7 @@ #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 } }; #if DBA_FLATFILE @@ -844,13 +829,14 @@ } /* }}} */ -/* {{{ 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; } @@ -860,7 +846,11 @@ RETURN_FALSE; } 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); + } } } /* }}} */ Index: php4/ext/dba/dba_cdb.c diff -u php4/ext/dba/dba_cdb.c:1.24 php4/ext/dba/dba_cdb.c:1.25 --- php4/ext/dba/dba_cdb.c:1.24 Fri Dec 20 12:47:58 2002 +++ php4/ext/dba/dba_cdb.c Mon Dec 30 08:07:29 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_cdb.c,v 1.24 2002/12/20 17:47:58 helly Exp $ */ +/* $Id: dba_cdb.c,v 1.25 2002/12/30 13:07:29 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -322,6 +322,19 @@ { /* this is read-only */ 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: php4/ext/dba/dba_db2.c diff -u php4/ext/dba/dba_db2.c:1.31 php4/ext/dba/dba_db2.c:1.32 --- php4/ext/dba/dba_db2.c:1.31 Fri Dec 20 12:47:58 2002 +++ php4/ext/dba/dba_db2.c Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_db2.c,v 1.31 2002/12/20 17:47:58 helly Exp $ */ +/* $Id: dba_db2.c,v 1.32 2002/12/30 13:07:29 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -186,6 +186,11 @@ DB2_DATA; return dba->dbp->sync(dba->dbp, 0) ? FAILURE : SUCCESS; +} + +DBA_INFO_FUNC(db2) +{ + return estrdup(DB_VERSION_STRING); } #endif Index: php4/ext/dba/dba_db3.c diff -u php4/ext/dba/dba_db3.c:1.24 php4/ext/dba/dba_db3.c:1.25 --- php4/ext/dba/dba_db3.c:1.24 Sun Dec 29 10:32:38 2002 +++ php4/ext/dba/dba_db3.c Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_db3.c,v 1.24 2002/12/29 15:32:38 helly Exp $ */ +/* $Id: dba_db3.c,v 1.25 2002/12/30 13:07:29 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -216,6 +216,11 @@ DB3_DATA; return dba->dbp->sync(dba->dbp, 0) ? FAILURE : SUCCESS; +} + +DBA_INFO_FUNC(db3) +{ + return estrdup(DB_VERSION_STRING); } #endif Index: php4/ext/dba/dba_db4.c diff -u php4/ext/dba/dba_db4.c:1.3 php4/ext/dba/dba_db4.c:1.4 --- php4/ext/dba/dba_db4.c:1.3 Sun Dec 29 10:32:38 2002 +++ php4/ext/dba/dba_db4.c Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_db4.c,v 1.3 2002/12/29 15:32:38 helly Exp $ */ +/* $Id: dba_db4.c,v 1.4 2002/12/30 13:07:29 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -215,6 +215,11 @@ DB4_DATA; return dba->dbp->sync(dba->dbp, 0) ? FAILURE : SUCCESS; +} + +DBA_INFO_FUNC(db4) +{ + return estrdup(DB_VERSION_STRING); } #endif Index: php4/ext/dba/dba_dbm.c diff -u php4/ext/dba/dba_dbm.c:1.23 php4/ext/dba/dba_dbm.c:1.24 --- php4/ext/dba/dba_dbm.c:1.23 Fri Dec 20 12:47:58 2002 +++ php4/ext/dba/dba_dbm.c Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_dbm.c,v 1.23 2002/12/20 17:47:58 helly Exp $ */ +/* $Id: dba_dbm.c,v 1.24 2002/12/30 13:07:29 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -175,6 +175,11 @@ DBA_SYNC_FUNC(dbm) { return SUCCESS; +} + +DBA_INFO_FUNC(dbm) +{ + return estrdup("DBM"); } #endif Index: php4/ext/dba/dba_flatfile.c diff -u php4/ext/dba/dba_flatfile.c:1.9 php4/ext/dba/dba_flatfile.c:1.10 --- php4/ext/dba/dba_flatfile.c:1.9 Fri Dec 20 12:47:58 2002 +++ php4/ext/dba/dba_flatfile.c Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_flatfile.c,v 1.9 2002/12/20 17:47:58 helly Exp $ */ +/* $Id: dba_flatfile.c,v 1.10 2002/12/30 13:07:29 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -161,6 +161,11 @@ { /* dummy */ return SUCCESS; +} + +DBA_INFO_FUNC(flatfile) +{ + return estrdup(flatfile_version()); } #endif Index: php4/ext/dba/dba_gdbm.c diff -u php4/ext/dba/dba_gdbm.c:1.17 php4/ext/dba/dba_gdbm.c:1.18 --- php4/ext/dba/dba_gdbm.c:1.17 Fri Dec 20 12:47:58 2002 +++ php4/ext/dba/dba_gdbm.c Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_gdbm.c,v 1.17 2002/12/20 17:47:58 helly Exp $ */ +/* $Id: dba_gdbm.c,v 1.18 2002/12/30 13:07:29 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -180,6 +180,12 @@ gdbm_sync(dba->dbf); return SUCCESS; } + +DBA_INFO_FUNC(gdbm) +{ + return estrdup(gdbm_version); +} + #endif /* Index: php4/ext/dba/dba_ndbm.c diff -u php4/ext/dba/dba_ndbm.c:1.14 php4/ext/dba/dba_ndbm.c:1.15 --- php4/ext/dba/dba_ndbm.c:1.14 Wed Nov 6 12:59:03 2002 +++ php4/ext/dba/dba_ndbm.c Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_ndbm.c,v 1.14 2002/11/06 17:59:03 sas Exp $ */ +/* $Id: dba_ndbm.c,v 1.15 2002/12/30 13:07:29 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -153,6 +153,12 @@ { return SUCCESS; } + +DBA_INFO_FUNC(ndbm) +{ + return estrdup("NDBM"); +} + #endif /* Index: php4/ext/dba/php_dba.h diff -u php4/ext/dba/php_dba.h:1.21 php4/ext/dba/php_dba.h:1.22 --- php4/ext/dba/php_dba.h:1.21 Fri Dec 20 12:47:58 2002 +++ php4/ext/dba/php_dba.h Mon Dec 30 08:07:29 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dba.h,v 1.21 2002/12/20 17:47:58 helly Exp $ */ +/* $Id: php_dba.h,v 1.22 2002/12/30 13:07:29 helly Exp $ */ #ifndef PHP_DBA_H #define PHP_DBA_H @@ -68,6 +68,23 @@ extern zend_module_entry dba_module_entry; #define dba_module_ptr &dba_module_entry +typedef struct dba_handler { + char *name; /* handler name */ + int flags; /* whether and how dba does locking and other flags*/ + int (*open)(dba_info *, char **error TSRMLS_DC); + void (*close)(dba_info * TSRMLS_DC); + char* (*fetch)(dba_info *, char *, int, int, int * TSRMLS_DC); + int (*update)(dba_info *, char *, int, char *, int, int TSRMLS_DC); + int (*exists)(dba_info *, char *, int TSRMLS_DC); + int (*delete)(dba_info *, char *, int TSRMLS_DC); + char* (*firstkey)(dba_info *, int * TSRMLS_DC); + 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 */ #define DBA_OPEN_FUNC(x) \ @@ -90,6 +107,8 @@ 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); \ @@ -101,7 +120,8 @@ 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) Index: php4/ext/dba/libflatfile/flatfile.c diff -u php4/ext/dba/libflatfile/flatfile.c:1.6 php4/ext/dba/libflatfile/flatfile.c:1.7 --- php4/ext/dba/libflatfile/flatfile.c:1.6 Mon Nov 18 20:06:42 2002 +++ php4/ext/dba/libflatfile/flatfile.c Mon Dec 30 08:07:30 2002 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: flatfile.c,v 1.6 2002/11/19 01:06:42 edink Exp $ */ +/* $Id: flatfile.c,v 1.7 2002/12/30 13:07:30 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -294,6 +294,13 @@ return(buf); } /* }}} */ + +/* {{{ flatfile_version */ +char *flatfile_version() +{ + return "1.0, $Revision: 1.7 $"; +} +/* }}} */ /* * Local variables: Index: php4/ext/dba/libflatfile/flatfile.h diff -u php4/ext/dba/libflatfile/flatfile.h:1.5 php4/ext/dba/libflatfile/flatfile.h:1.6 --- php4/ext/dba/libflatfile/flatfile.h:1.5 Mon Nov 18 20:06:42 2002 +++ php4/ext/dba/libflatfile/flatfile.h Mon Dec 30 08:07:30 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: flatfile.h,v 1.5 2002/11/19 01:06:42 edink Exp $ */ +/* $Id: flatfile.h,v 1.6 2002/12/30 13:07:30 helly Exp $ */ #ifndef PHP_LIBDBM_H #define PHP_LIBDBM_H @@ -43,5 +43,6 @@ 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
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php