helly Wed Nov 6 04:17:51 2002 EDT Added files: /php4/ext/dba dba_flatfile.c
Removed files: /php4/ext/dba dba_flatile.c Modified files: /php4/ext/dba config.m4 dba.c /php4/ext/dba/libflatfile flatfile.c flatfile.h Log: Use the the name 'flatfile' correctly so the handler support can be built now. #I do not like the lock solution since a crashed php would leave the *lck #file locked now.
Index: php4/ext/dba/config.m4 diff -u php4/ext/dba/config.m4:1.26 php4/ext/dba/config.m4:1.27 --- php4/ext/dba/config.m4:1.26 Tue Nov 5 23:16:17 2002 +++ php4/ext/dba/config.m4 Wed Nov 6 04:17:50 2002 @@ -1,5 +1,5 @@ dnl -dnl $Id: config.m4,v 1.26 2002/11/06 04:16:17 helly Exp $ +dnl $Id: config.m4,v 1.27 2002/11/06 09:17:50 helly Exp $ dnl AC_DEFUN(PHP_TEMP_LDFLAGS,[ @@ -246,7 +246,7 @@ if test "$withval" = "yes"; then PHP_ADD_BUILD_DIR($ext_builddir/libflatfile) AC_DEFINE(DBA_FLATFILE, 1, [ ]) - flat_sources="php_flatfile.c libflatfile/flatfile.c" + flat_sources="dba_flatfile.c libflatfile/flatfile.c" THIS_RESULT="builtin" fi ]) Index: php4/ext/dba/dba.c diff -u php4/ext/dba/dba.c:1.53 php4/ext/dba/dba.c:1.54 --- php4/ext/dba/dba.c:1.53 Tue Nov 5 23:16:17 2002 +++ php4/ext/dba/dba.c Wed Nov 6 04:17:50 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba.c,v 1.53 2002/11/06 04:16:17 helly Exp $ */ +/* $Id: dba.c,v 1.54 2002/11/06 09:17:50 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -35,6 +35,7 @@ #include "php_cdb.h" #include "php_db2.h" #include "php_db3.h" +#include "php_flatfile.h" /* {{{ dba_functions[] */ Index: php4/ext/dba/libflatfile/flatfile.c diff -u php4/ext/dba/libflatfile/flatfile.c:1.1 php4/ext/dba/libflatfile/flatfile.c:1.2 --- php4/ext/dba/libflatfile/flatfile.c:1.1 Tue Nov 5 23:16:18 2002 +++ php4/ext/dba/libflatfile/flatfile.c Wed Nov 6 04:17:51 2002 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: flatfile.c,v 1.1 2002/11/06 04:16:18 helly Exp $ */ +/* $Id: flatfile.c,v 1.2 2002/11/06 09:17:51 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -36,7 +36,7 @@ #include <unistd.h> #endif -#include "dbm.h" +#include "flatfile.h" /* * ret = -1 means that database was opened for read-only @@ -46,7 +46,7 @@ /* {{{ dbm_file_store */ -PHPAPI int dbm_file_store(dba_dbm_data *dba, datum key_datum, datum value_datum, int mode TSRMLS_DC) { +PHPAPI int dbm_file_store(flatfile *dba, datum key_datum, datum value_datum, int mode +TSRMLS_DC) { if (mode == DBM_INSERT) { if (dbm_file_findkey(dba, key_datum TSRMLS_CC)) { return 1; @@ -77,7 +77,7 @@ /* {{{ dbm_file_fetch */ -PHPAPI datum dbm_file_fetch(dba_dbm_data *dba, datum key_datum TSRMLS_DC) { +PHPAPI datum dbm_file_fetch(flatfile *dba, datum key_datum TSRMLS_DC) { datum value_datum = {NULL, 0}; int num=0, buf_size=1024; char *buf; @@ -105,7 +105,7 @@ /* {{{ dbm_file_delete */ -PHPAPI int dbm_file_delete(dba_dbm_data *dba, datum key_datum TSRMLS_DC) { +PHPAPI int dbm_file_delete(flatfile *dba, datum key_datum TSRMLS_DC) { char *key = key_datum.dptr; int size = key_datum.dsize; @@ -164,7 +164,7 @@ /* {{{ dbm_file_findkey */ -PHPAPI int dbm_file_findkey(dba_dbm_data *dba, datum key_datum TSRMLS_DC) { +PHPAPI int dbm_file_findkey(flatfile *dba, datum key_datum TSRMLS_DC) { char *buf = NULL; int num; int buf_size=1024; @@ -211,7 +211,7 @@ /* {{{ dbm_file_firstkey */ -PHPAPI datum dbm_file_firstkey(dba_dbm_data *dba TSRMLS_DC) { +PHPAPI datum dbm_file_firstkey(flatfile *dba TSRMLS_DC) { datum buf; int num; int buf_size=1024; @@ -252,7 +252,7 @@ /* {{{ latfile_nextkey */ -PHPAPI datum dbm_file_nextkey(dba_dbm_data *dba TSRMLS_DC) { +PHPAPI datum dbm_file_nextkey(flatfile *dba TSRMLS_DC) { datum buf; int num; int buf_size=1024; Index: php4/ext/dba/libflatfile/flatfile.h diff -u php4/ext/dba/libflatfile/flatfile.h:1.1 php4/ext/dba/libflatfile/flatfile.h:1.2 --- php4/ext/dba/libflatfile/flatfile.h:1.1 Tue Nov 5 23:16:18 2002 +++ php4/ext/dba/libflatfile/flatfile.h Wed Nov 6 04:17:51 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: flatfile.h,v 1.1 2002/11/06 04:16:18 helly Exp $ */ +/* $Id: flatfile.h,v 1.2 2002/11/06 09:17:51 helly Exp $ */ #ifndef PHP_LIBDBM_H #define PHP_LIBDBM_H @@ -32,16 +32,16 @@ php_stream *fp; long CurrentFlatFilePos; datum nextkey; -} dba_dbm_data; +} flatfile; #define DBM_INSERT 0 #define DBM_REPLACE 1 -PHPAPI int dbm_file_store(dba_dbm_data *dba, datum key_datum, datum value_datum, int mode TSRMLS_DC); -PHPAPI datum dbm_file_fetch(dba_dbm_data *dba, datum key_datum TSRMLS_DC); -PHPAPI int dbm_file_delete(dba_dbm_data *dba, datum key_datum TSRMLS_DC); -PHPAPI int dbm_file_findkey(dba_dbm_data *dba, datum key_datum TSRMLS_DC); -PHPAPI datum dbm_file_firstkey(dba_dbm_data *dba TSRMLS_DC); -PHPAPI datum dbm_file_nextkey(dba_dbm_data *dba TSRMLS_DC); +PHPAPI int dbm_file_store(flatfile *dba, datum key_datum, datum value_datum, int mode +TSRMLS_DC); +PHPAPI datum dbm_file_fetch(flatfile *dba, datum key_datum TSRMLS_DC); +PHPAPI int dbm_file_delete(flatfile *dba, datum key_datum TSRMLS_DC); +PHPAPI int dbm_file_findkey(flatfile *dba, datum key_datum TSRMLS_DC); +PHPAPI datum dbm_file_firstkey(flatfile *dba TSRMLS_DC); +PHPAPI datum dbm_file_nextkey(flatfile *dba TSRMLS_DC); #endif Index: php4/ext/dba/dba_flatfile.c +++ php4/ext/dba/dba_flatfile.c /* +----------------------------------------------------------------------+ | PHP Version 4 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2002 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 2.02 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available at through the world-wide-web at | | http://www.php.net/license/2_02.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Author: Marcus Boerger <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ /* $Id: dba_flatfile.c,v 1.1 2002/11/06 09:17:50 helly Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php.h" #if DBA_FLATFILE #include "php_flatfile.h" #include "libflatfile/flatfile.h" #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #ifdef PHP_31 #include "os/nt/flock.h" #else #ifdef PHP_WIN32 #include "win32/flock.h" #else #include <sys/file.h> #endif #endif #define DBM_DATA flatfile *dba = info->dbf #define DBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = keylen #define TRUNC_IT(extension, mode) \ snprintf(buf, MAXPATHLEN, "%s" extension, info->path); \ buf[MAXPATHLEN-1] = '\0'; \ if((fd = VCWD_OPEN_MODE(buf, O_CREAT | mode | O_WRONLY, filemode)) == -1) \ return FAILURE; \ close(fd); DBA_OPEN_FUNC(flatfile) { char *fmode; php_stream *fp; int lock; char *lockfn = NULL; int lockfd = 0; #if NFS_HACK int last_try = 0; struct stat sb; int retries = 0; #endif info->dbf = ecalloc(sizeof(flatfile), 1); if (!info->dbf) { *error = "Out of memory"; return FAILURE; } switch(info->mode) { case DBA_READER: fmode = "r"; lock = 0; break; case DBA_WRITER: fmode = "r+b"; lock = 1; break; case DBA_CREAT: fmode = "a+b"; lock = 1; break; case DBA_TRUNC: fmode = "w+b"; lock = 1; break; default: efree(info->dbf); return FAILURE; /* not possible */ } if (lock) { spprintf(&lockfn, 0, "%s.lck", info->path); #if NFS_HACK while((last_try = VCWD_STAT(lockfn, &sb))==0) { retries++; php_sleep(1); if (retries>30) break; } if (last_try!=0) { lockfd = open(lockfn, O_RDWR|O_CREAT, 0644); close(lockfd); } else { *error = "File appears to be locked"; efree(lockfn); efree(info->dbf); return FAILURE; } #else /* NFS_HACK */ lockfd = VCWD_OPEN_MODE(lockfn, O_RDWR|O_CREAT, 0644); if (!lockfd || flock(lockfd, LOCK_EX)) { if (lockfd) close(lockfd); efree(lockfn); efree(info->dbf); *error = "Unable to establish lock"; return FAILURE; } #endif /* else NFS_HACK */ } fp = php_stream_open_wrapper(info->path, fmode, STREAM_MUST_SEEK|IGNORE_PATH|ENFORCE_SAFE_MODE, NULL); if (!fp) { *error = "Unable to open file"; #if NFS_HACK VCWD_UNLINK(lockfn); #else if (lockfn) { lockfd = VCWD_OPEN_MODE(lockfn, O_RDWR, 0644); flock(lockfd, LOCK_UN); close(lockfd); } #endif efree(lockfn); efree(info->dbf); return FAILURE; } ((flatfile*)info->dbf)->fp = fp; ((flatfile*)info->dbf)->lockfn = lockfn; ((flatfile*)info->dbf)->lockfd = lockfd; return SUCCESS; } DBA_CLOSE_FUNC(flatfile) { DBM_DATA; #if NFS_HACK VCWD_UNLINK(dba->lockfn); #else if (dba->lockfn) { /*dba->lockfd = VCWD_OPEN_MODE(dba->lockfn, O_RDWR, 0644);*/ flock(dba->lockfd, LOCK_UN); close(dba->lockfd); } #endif efree(dba->lockfn); php_stream_close(dba->fp); if (dba->nextkey.dptr) efree(dba->nextkey.dptr); efree(dba); } #define DBM_FETCH(gkey) dbm_file_fetch((flatfile*)info->dbf, gkey TSRMLS_CC) #define DBM_STORE(gkey, gval) dbm_file_store((flatfile*)info->dbf, gkey, gval, DBM_REPLACE TSRMLS_CC) #define DBM_DELETE(gkey) dbm_file_delete((flatfile*)info->dbf, gkey TSRMLS_CC) #define DBM_FIRSTKEY() dbm_file_firstkey((flatfile*)info->dbf TSRMLS_CC) #define DBM_NEXTKEY(gkey) dbm_file_nextkey((flatfile*)info->dbf TSRMLS_CC) DBA_FETCH_FUNC(flatfile) { datum gval; char *new = NULL; DBM_GKEY; gval = DBM_FETCH(gkey); if(gval.dptr) { if(newlen) *newlen = gval.dsize; new = estrndup(gval.dptr, gval.dsize); efree(gval.dptr); } return new; } DBA_UPDATE_FUNC(flatfile) { datum gval; DBM_GKEY; gval.dptr = (char *) val; gval.dsize = vallen; return (DBM_STORE(gkey, gval) == -1 ? FAILURE : SUCCESS); } DBA_EXISTS_FUNC(flatfile) { datum gval; DBM_GKEY; gval = DBM_FETCH(gkey); if(gval.dptr) { efree(gval.dptr); return SUCCESS; } return FAILURE; } DBA_DELETE_FUNC(flatfile) { DBM_GKEY; return(DBM_DELETE(gkey) == -1 ? FAILURE : SUCCESS); } DBA_FIRSTKEY_FUNC(flatfile) { DBM_DATA; if (dba->nextkey.dptr) efree(dba->nextkey.dptr); dba->nextkey = DBM_FIRSTKEY(); if(dba->nextkey.dptr) { if(newlen) *newlen = dba->nextkey.dsize; return estrndup(dba->nextkey.dptr, dba->nextkey.dsize); } return NULL; } DBA_NEXTKEY_FUNC(flatfile) { DBM_DATA; datum lkey; if(!dba->nextkey.dptr) return NULL; lkey = dba->nextkey; dba->nextkey = DBM_NEXTKEY(lkey); if (lkey.dptr) efree(lkey.dptr); if(dba->nextkey.dptr) { if(newlen) *newlen = dba->nextkey.dsize; return estrndup(dba->nextkey.dptr, dba->nextkey.dsize); } return NULL; } DBA_OPTIMIZE_FUNC(flatfile) { /* dummy */ return SUCCESS; } DBA_SYNC_FUNC(flatfile) { /* dummy */ return SUCCESS; } #endif /* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php