helly Fri Dec 20 15:25:20 2002 EDT Modified files: (Branch: PHP_4_3) /php4/ext/dba dba.c dba_cdb.c dba_db2.c dba_db3.c dba_dbm.c dba_flatfile.c dba_gdbm.c php_dba.h /php4/ext/dba/tests dba_cdb.phpt dba_handler.inc Log: MFH: as discussed
Index: php4/ext/dba/dba.c diff -u php4/ext/dba/dba.c:1.61.2.7 php4/ext/dba/dba.c:1.61.2.8 --- php4/ext/dba/dba.c:1.61.2.7 Fri Dec 20 11:47:15 2002 +++ php4/ext/dba/dba.c Fri Dec 20 15:25:19 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba.c,v 1.61.2.7 2002/12/20 16:47:15 andrei Exp $ */ +/* $Id: dba.c,v 1.61.2.8 2002/12/20 20:25:19 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -211,7 +211,7 @@ static void dba_close(dba_info *info TSRMLS_DC) { if (info->hnd) info->hnd->close(info TSRMLS_CC); - if (info->path) efree(info->path); + if (info->path) pefree(info->path, info->flags&DBA_PERSISTENT); if (info->fp && info->fp!=info->lock.fp) php_stream_close(info->fp); if (info->lock.fd) { php_flock(info->lock.fd, LOCK_UN); @@ -219,8 +219,8 @@ info->lock.fd = 0; } if (info->lock.fp) php_stream_close(info->lock.fp); - if (info->lock.name) efree(info->lock.name); - efree(info); + if (info->lock.name) pefree(info->lock.name, info->flags&DBA_PERSISTENT); + pefree(info, info->flags&DBA_PERSISTENT); } /* }}} */ @@ -228,7 +228,7 @@ */ static void dba_close_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - dba_info *info = (dba_info *)rsrc->ptr; + dba_info *info = (dba_info *)rsrc->ptr; dba_close(info TSRMLS_CC); } @@ -510,7 +510,7 @@ info->mode = modenr; info->argc = ac - 3; info->argv = args + 3; - info->flags = (hptr->flags & ~DBA_LOCK_ALL) | (lock_flag & DBA_LOCK_ALL); + info->flags = (hptr->flags & ~DBA_LOCK_ALL) | (lock_flag & DBA_LOCK_ALL) | +(persistent ? DBA_PERSISTENT : 0); info->lock.mode = lock_mode; /* if any open call is a locking call: @@ -536,12 +536,12 @@ if (!strcmp(file_mode, "r")) { /* when in read only mode try to use existing .lck file first */ /* do not log errors for .lck file while in read ony mode on .lck file */ - lock_file_mode = "rb"; + lock_file_mode = "rb"; info->lock.fp = php_stream_open_wrapper(info->lock.name, lock_file_mode, STREAM_MUST_SEEK|IGNORE_PATH|ENFORCE_SAFE_MODE, NULL); - } + } if (!info->lock.fp) { /* when not in read mode or failed to open .lck file read only. now try again in create(write) mode and log errors */ - lock_file_mode = "a+b"; + lock_file_mode = "a+b"; } } if (!info->lock.fp) { Index: php4/ext/dba/dba_cdb.c diff -u php4/ext/dba/dba_cdb.c:1.23 php4/ext/dba/dba_cdb.c:1.23.2.1 --- php4/ext/dba/dba_cdb.c:1.23 Wed Nov 13 07:12:44 2002 +++ php4/ext/dba/dba_cdb.c Fri Dec 20 15:25:19 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_cdb.c,v 1.23 2002/11/13 12:12:44 edink Exp $ */ +/* $Id: dba_cdb.c,v 1.23.2.1 2002/12/20 20:25:19 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -98,7 +98,7 @@ return FAILURE; } - cdb = emalloc(sizeof(dba_cdb)); + cdb = pemalloc(sizeof(dba_cdb), info->flags&DBA_PERSISTENT); memset(cdb, 0, sizeof(dba_cdb)); #if DBA_CDB_BUILTIN @@ -132,7 +132,7 @@ cdb_free(&cdb->c); close(cdb->file); #endif - efree(cdb); + pefree(cdb, info->flags&DBA_PERSISTENT); } #if DBA_CDB_BUILTIN Index: php4/ext/dba/dba_db2.c diff -u php4/ext/dba/dba_db2.c:1.30 php4/ext/dba/dba_db2.c:1.30.2.1 --- php4/ext/dba/dba_db2.c:1.30 Wed Nov 6 12:59:03 2002 +++ php4/ext/dba/dba_db2.c Fri Dec 20 15:25:19 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_db2.c,v 1.30 2002/11/06 17:59:03 sas Exp $ */ +/* $Id: dba_db2.c,v 1.30.2.1 2002/12/20 20:25:19 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -76,7 +76,7 @@ return FAILURE; } - info->dbf = emalloc(sizeof(dba_db2_data)); + info->dbf = pemalloc(sizeof(dba_db2_data), info->flags&DBA_PERSISTENT); memset(info->dbf, 0, sizeof(dba_db2_data)); ((dba_db2_data *) info->dbf)->dbp = dbp; return SUCCESS; @@ -89,7 +89,7 @@ if (dba->cursor) dba->cursor->c_close(dba->cursor); dba->dbp->close(dba->dbp, 0); - efree(dba); + pefree(dba, info->flags&DBA_PERSISTENT); } DBA_FETCH_FUNC(db2) Index: php4/ext/dba/dba_db3.c diff -u php4/ext/dba/dba_db3.c:1.21.2.1 php4/ext/dba/dba_db3.c:1.21.2.2 --- php4/ext/dba/dba_db3.c:1.21.2.1 Sat Nov 23 16:12:31 2002 +++ php4/ext/dba/dba_db3.c Fri Dec 20 15:25:19 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_db3.c,v 1.21.2.1 2002/11/23 21:12:31 helly Exp $ */ +/* $Id: dba_db3.c,v 1.21.2.2 2002/12/20 20:25:19 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -80,8 +80,8 @@ dbp->open(dbp, info->path, NULL, type, gmode, filemode) == 0) { #endif dba_db3_data *data; - - data = emalloc(sizeof(*data)); + + data = pemalloc(sizeof(*data), info->flags&DBA_PERSISTENT); data->dbp = dbp; data->cursor = NULL; info->dbf = data; @@ -100,7 +100,7 @@ if (dba->cursor) dba->cursor->c_close(dba->cursor); dba->dbp->close(dba->dbp, 0); - efree(dba); + pefree(dba, info->flags&DBA_PERSISTENT); } DBA_FETCH_FUNC(db3) Index: php4/ext/dba/dba_dbm.c diff -u php4/ext/dba/dba_dbm.c:1.22 php4/ext/dba/dba_dbm.c:1.22.2.1 --- php4/ext/dba/dba_dbm.c:1.22 Wed Nov 6 12:59:03 2002 +++ php4/ext/dba/dba_dbm.c Fri Dec 20 15:25:19 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_dbm.c,v 1.22 2002/11/06 17:59:03 sas Exp $ */ +/* $Id: dba_dbm.c,v 1.22.2.1 2002/12/20 20:25:19 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -78,14 +78,14 @@ return FAILURE; } - info->dbf = emalloc(sizeof(dba_dbm_data)); + info->dbf = pemalloc(sizeof(dba_dbm_data), info->flags&DBA_PERSISTENT); memset(info->dbf, 0, sizeof(dba_dbm_data)); return SUCCESS; } DBA_CLOSE_FUNC(dbm) { - efree(info->dbf); + pefree(info->dbf, info->flags&DBA_PERSISTENT); dbmclose(); } Index: php4/ext/dba/dba_flatfile.c diff -u php4/ext/dba/dba_flatfile.c:1.8 php4/ext/dba/dba_flatfile.c:1.8.2.1 --- php4/ext/dba/dba_flatfile.c:1.8 Wed Nov 13 07:12:44 2002 +++ php4/ext/dba/dba_flatfile.c Fri Dec 20 15:25:19 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_flatfile.c,v 1.8 2002/11/13 12:12:44 edink Exp $ */ +/* $Id: dba_flatfile.c,v 1.8.2.1 2002/12/20 20:25:19 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -41,7 +41,7 @@ DBA_OPEN_FUNC(flatfile) { - info->dbf = emalloc(sizeof(flatfile)); + info->dbf = pemalloc(sizeof(flatfile), info->flags&DBA_PERSISTENT); memset(info->dbf, 0, sizeof(flatfile)); ((flatfile*)info->dbf)->fp = info->fp; @@ -55,7 +55,7 @@ if (dba->nextkey.dptr) efree(dba->nextkey.dptr); - efree(dba); + pefree(dba, info->flags&DBA_PERSISTENT); } DBA_FETCH_FUNC(flatfile) Index: php4/ext/dba/dba_gdbm.c diff -u php4/ext/dba/dba_gdbm.c:1.16 php4/ext/dba/dba_gdbm.c:1.16.2.1 --- php4/ext/dba/dba_gdbm.c:1.16 Thu Nov 7 08:00:37 2002 +++ php4/ext/dba/dba_gdbm.c Fri Dec 20 15:25:19 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_gdbm.c,v 1.16 2002/11/07 13:00:37 helly Exp $ */ +/* $Id: dba_gdbm.c,v 1.16.2.1 2002/12/20 20:25:19 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -59,7 +59,7 @@ dbf = gdbm_open(info->path, 0, gmode, filemode, NULL); if(dbf) { - info->dbf = emalloc(sizeof(dba_gdbm_data)); + info->dbf = pemalloc(sizeof(dba_gdbm_data), +info->flags&DBA_PERSISTENT); memset(info->dbf, 0, sizeof(dba_gdbm_data)); ((dba_gdbm_data *) info->dbf)->dbf = dbf; return SUCCESS; @@ -74,7 +74,7 @@ if(dba->nextkey.dptr) free(dba->nextkey.dptr); gdbm_close(dba->dbf); - efree(dba); + pefree(dba, info->flags&DBA_PERSISTENT); } DBA_FETCH_FUNC(gdbm) Index: php4/ext/dba/php_dba.h diff -u php4/ext/dba/php_dba.h:1.19.2.1 php4/ext/dba/php_dba.h:1.19.2.2 --- php4/ext/dba/php_dba.h:1.19.2.1 Thu Nov 14 09:40:42 2002 +++ php4/ext/dba/php_dba.h Fri Dec 20 15:25:19 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dba.h,v 1.19.2.1 2002/11/14 14:40:42 helly Exp $ */ +/* $Id: php_dba.h,v 1.19.2.2 2002/12/20 20:25:19 helly Exp $ */ #ifndef PHP_DBA_H #define PHP_DBA_H @@ -63,6 +63,7 @@ #define DBA_LOCK_WCT (DBA_LOCK_WRITER|DBA_LOCK_CREAT|DBA_LOCK_TRUNC) #define DBA_STREAM_OPEN (0x0010) +#define DBA_PERSISTENT (0x0020) extern zend_module_entry dba_module_entry; #define dba_module_ptr &dba_module_entry Index: php4/ext/dba/tests/dba_cdb.phpt diff -u php4/ext/dba/tests/dba_cdb.phpt:1.4.2.1 php4/ext/dba/tests/dba_cdb.phpt:1.4.2.2 --- php4/ext/dba/tests/dba_cdb.phpt:1.4.2.1 Thu Nov 14 09:40:43 2002 +++ php4/ext/dba/tests/dba_cdb.phpt Fri Dec 20 15:25:19 2002 @@ -4,7 +4,7 @@ <?php require_once('skipif.inc'); if (!in_array('cdb', dba_handlers())) die('skip CDB handler not available'); - die('skip CDB does not support replace or delete'); + die('info CDB does not support replace or delete'); ?> --FILE-- <?php @@ -14,17 +14,17 @@ ?> --EXPECT-- database handler: cdb -3NYNYY +5YYYYY Content String 2 -Content 2 replaced -Read during write: not allowed -Content 2 replaced 2nd time -The 6th value -array(3) { - ["key number 6"]=> - string(13) "The 6th value" +array(5) { + ["key1"]=> + string(16) "Content String 1" ["key2"]=> - string(27) "Content 2 replaced 2nd time" + string(16) "Content String 2" + ["key3"]=> + string(20) "Third Content String" + ["key4"]=> + string(22) "Another Content String" ["key5"]=> string(23) "The last content string" -} \ No newline at end of file +} Index: php4/ext/dba/tests/dba_handler.inc diff -u php4/ext/dba/tests/dba_handler.inc:1.7.2.1 php4/ext/dba/tests/dba_handler.inc:1.7.2.2 --- php4/ext/dba/tests/dba_handler.inc:1.7.2.1 Thu Nov 14 09:40:43 2002 +++ php4/ext/dba/tests/dba_handler.inc Fri Dec 20 15:25:19 2002 @@ -6,8 +6,15 @@ dba_insert("key3", "Third Content String", $db_file); dba_insert("key4", "Another Content String", $db_file); dba_insert("key5", "The last content string", $db_file); - dba_delete("key3", $db_file); - dba_delete("key1", $db_file); + if ($handler != 'cdb') { + dba_delete("key3", $db_file); + dba_delete("key1", $db_file); + } else { + dba_close($db_file); + if (($db_file = dba_open($db_filename, 'r'.$lock_flag, +$handler))===FALSE) { + echo "Error reopening database\n"; + } + } $a = dba_firstkey($db_file); $i=0; while($a) { @@ -20,28 +27,32 @@ } echo "\n"; echo dba_fetch("key2", $db_file)."\n"; - dba_replace("key2", "Content 2 replaced", $db_file); - echo dba_fetch("key2", $db_file)."\n"; + if ($handler != 'cdb') { + dba_replace("key2", "Content 2 replaced", $db_file); + echo dba_fetch("key2", $db_file)."\n"; + } dba_close($db_file); } else { echo "Error creating database\n"; } - $db_writer = dba_open($db_filename, 'w'.$lock_flag, $handler); - if (($dba_reader = @dba_open($db_filename, 'r'.$lock_flag.($lock_flag ? 't' : ''), $handler))===false) { - echo "Read during write: not allowed\n"; - } else { - echo "Read during write: allowed\n"; - } - if ($db_writer!==FALSE) { - dba_insert("key number 6", "The 6th value", $db_writer); - @dba_insert("key number 6", "The 6th value inserted again would be an error", $db_writer); - dba_replace("key2", "Content 2 replaced 2nd time", $db_writer); - dba_delete("key4", $db_writer); - echo dba_fetch("key2", $db_writer)."\n"; - echo dba_fetch("key number 6", $db_writer)."\n"; - dba_close($db_writer); // when the writer is open at least db3 would fail because of buffered io. - } else { - die("Error reopening database\n"); + if ($handler != 'cdb') { + $db_writer = dba_open($db_filename, 'w'.$lock_flag, $handler); + if (($dba_reader = @dba_open($db_filename, 'r'.$lock_flag.($lock_flag +? 't' : ''), $handler))===false) { + echo "Read during write: not allowed\n"; + } else { + echo "Read during write: allowed\n"; + } + if ($db_writer!==FALSE) { + dba_insert("key number 6", "The 6th value", $db_writer); + @dba_insert("key number 6", "The 6th value inserted again +would be an error", $db_writer); + dba_replace("key2", "Content 2 replaced 2nd time", $db_writer); + dba_delete("key4", $db_writer); + echo dba_fetch("key2", $db_writer)."\n"; + echo dba_fetch("key number 6", $db_writer)."\n"; + dba_close($db_writer); // when the writer is open at least db3 +would fail because of buffered io. + } else { + die("Error reopening database\n"); + } } if (($db_file = dba_open($db_filename, 'r'.$lock_flag, $handler))!==FALSE) { $key = dba_firstkey($db_file); @@ -59,4 +70,6 @@ if ($dba_reader) { dba_close($dba_reader); } + if (($db_file = dba_popen($db_filename, 'r'.($handler!='gdbm'?'-':''), +$handler))!==FALSE) { + } ?>
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php