diff options
| author | Marcus Boerger <helly@php.net> | 2002-12-30 13:07:30 +0000 |
|---|---|---|
| committer | Marcus Boerger <helly@php.net> | 2002-12-30 13:07:30 +0000 |
| commit | 4d2f7207c04a6377699cb96a7946cde3662c51fe (patch) | |
| tree | 991d8a9236c178eeb497c2a58a56ff37c0cfcca8 /ext/dba/dba.c | |
| parent | 426cf8eb5712f10e84a16f1cbb127c1aaa045d9c (diff) | |
| download | php-git-4d2f7207c04a6377699cb96a7946cde3662c51fe.tar.gz | |
Add info function to handlers and return handler info when dba_handlers is
called with optional parameter full_info set true.
Diffstat (limited to 'ext/dba/dba.c')
| -rw-r--r-- | ext/dba/dba.c | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/ext/dba/dba.c b/ext/dba/dba.c index a6273e7f75..7441d7af8c 100644 --- a/ext/dba/dba.c +++ b/ext/dba/dba.c @@ -92,21 +92,6 @@ zend_module_entry dba_module_entry = { 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 @@ typedef struct dba_handler { {\ #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 @@ 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 } }; #if DBA_FLATFILE @@ -844,13 +829,14 @@ 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; } @@ -860,7 +846,11 @@ PHP_FUNCTION(dba_handlers) 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); + } } } /* }}} */ |
