CVS update: php3/functions

From: Date: Tue, 18 May 1999 03:15:48 +0000
Subject: CVS update: php3/functions
Groups: php.dev 
Request: Send a blank email to php-dev+get-5753@lists.php.net to get a copy of this message
Date: Monday May 17, 1999 @ 23:15 Author: sas Update of /repository/php3/functions In directory php:/tmp/cvs-serv18036/functions Modified Files: dba.c dba_dbm.c dba_gdbm.c dba_ndbm.c Log Message: dba finishes the test suite completely now (see tests/dba.php) Index: php3/functions/dba.c diff -u php3/functions/dba.c:1.16 php3/functions/dba.c:1.17 --- php3/functions/dba.c:1.16 Mon May 17 13:19:00 1999 +++ php3/functions/dba.c Mon May 17 23:15:47 1999 @@ -27,7 +27,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba.c,v 1.16 1999/05/17 17:19:00 sas Exp $ */ +/* $Id: dba.c,v 1.17 1999/05/18 03:15:47 sas Exp $ */ #include "php.h" @@ -197,7 +197,7 @@ { dba_handler *hptr; - PUTS("V1 ($Id: dba.c,v 1.16 1999/05/17 17:19:00 sas Exp $)"); + PUTS("V1 ($Id: dba.c,v 1.17 1999/05/18 03:15:47 sas Exp $)"); for(hptr = handler; hptr->name; hptr++) { PUTS(" "); PUTS(hptr->name); @@ -214,12 +214,13 @@ if(ac != 3 || getParameters(ht, ac, &key, &val, &id) != SUCCESS) { WRONG_PARAM_COUNT; } + convert_to_string(key); convert_to_string(val); DBA_ID_GET; DBA_WRITE_CHECK; - if(info->hnd->update(info, VALLEN(key), VALLEN(val), mode)) + if(info->hnd->update(info, VALLEN(key), VALLEN(val), mode) == SUCCESS) RETURN_TRUE; RETURN_FALSE; } @@ -360,7 +361,7 @@ { DBA_ID_GET2; - if(info->hnd->exists(info, VALLEN(key))) { + if(info->hnd->exists(info, VALLEN(key)) == SUCCESS) { RETURN_TRUE; } RETURN_FALSE; @@ -420,7 +421,7 @@ DBA_WRITE_CHECK; - if(info->hnd->delete(info, VALLEN(key))) + if(info->hnd->delete(info, VALLEN(key)) == SUCCESS) RETURN_TRUE; RETURN_FALSE; } Index: php3/functions/dba_dbm.c diff -u php3/functions/dba_dbm.c:1.13 php3/functions/dba_dbm.c:1.14 --- php3/functions/dba_dbm.c:1.13 Mon May 17 22:03:37 1999 +++ php3/functions/dba_dbm.c Mon May 17 23:15:47 1999 @@ -27,7 +27,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_dbm.c,v 1.13 1999/05/18 02:03:37 sas Exp $ */ +/* $Id: dba_dbm.c,v 1.14 1999/05/18 03:15:47 sas Exp $ */ #include "php.h" @@ -37,37 +37,65 @@ #include <dbm.h> #include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#define DBM_DATA dba_dbm_data *dba = info->dbf #define DBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = keylen #ifndef PATH_MAX #define PATH_MAX 255 #endif -#define TRUNC_IT(extension) \ +#define TRUNC_IT(extension, mode) \ snprintf(buf, PATH_MAX, "%s" extension, info->path); \ buf[PATH_MAX] = '\0'; \ - truncate(buf, 0) + if((fd = open(buf, O_CREAT | mode | O_WRONLY, filemode)) == -1) \ + return FAILURE; \ + close(fd); + +typedef struct { + datum nextkey; +} dba_dbm_data; + DBA_OPEN_FUNC(dbm) { + int fd; + int filemode = 0644; + + if(info->argc > 0) { + convert_to_long(info->argv[0]); + filemode = info->argv[0]->value.lval; + } + if(info->mode == DBA_TRUNC) { char buf[PATH_MAX + 1]; -#if HAVE_TRUNCATE /* dbm/ndbm original */ - TRUNC_IT(".pag"); - TRUNC_IT(".dir"); - /* db2 compatibility */ - TRUNC_IT(".db"); -#endif + TRUNC_IT(".pag", O_TRUNC); + TRUNC_IT(".dir", O_TRUNC); + } + + if(info->mode == DBA_WRITER) { + char buf[PATH_MAX + 1]; + + TRUNC_IT(".pag", 0); + TRUNC_IT(".dir", 0); + } + + if(dbminit((char *) info->path) == -1) { + return FAILURE; } - return (dbminit((char *) info->path) == -1 ? FAILURE : SUCCESS); + + info->dbf = calloc(sizeof(dba_dbm_data), 1); + return SUCCESS; } DBA_CLOSE_FUNC(dbm) { - /* dbm sucks :) */ + free(info->dbf); dbmclose(); } @@ -81,7 +109,6 @@ if(gval.dptr) { if(newlen) *newlen = gval.dsize; new = estrndup(gval.dptr, gval.dsize); - free(gval.dptr); } return new; } @@ -104,7 +131,6 @@ gval = fetch(gkey); if(gval.dptr) { - free(gval.dptr); return SUCCESS; } return FAILURE; @@ -118,6 +144,7 @@ DBA_FIRSTKEY_FUNC(dbm) { + DBM_DATA; datum gkey; char *key = NULL; @@ -125,22 +152,27 @@ if(gkey.dptr) { if(newlen) *newlen = gkey.dsize; key = estrndup(gkey.dptr, gkey.dsize); - free(gkey.dptr); - } + dba->nextkey = gkey; + } else + dba->nextkey.dptr = NULL; return key; } DBA_NEXTKEY_FUNC(dbm) { + DBM_DATA; datum gkey; char *nkey = NULL; - - gkey = nextkey(gkey); + + if(!dba->nextkey.dptr) return NULL; + + gkey = nextkey(dba->nextkey); if(gkey.dptr) { if(newlen) *newlen = gkey.dsize; nkey = estrndup(gkey.dptr, gkey.dsize); - free(gkey.dptr); - } + dba->nextkey = gkey; + } else + dba->nextkey.dptr = NULL; return nkey; } Index: php3/functions/dba_gdbm.c diff -u php3/functions/dba_gdbm.c:1.10 php3/functions/dba_gdbm.c:1.11 --- php3/functions/dba_gdbm.c:1.10 Mon May 10 07:52:05 1999 +++ php3/functions/dba_gdbm.c Mon May 17 23:15:47 1999 @@ -27,7 +27,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_gdbm.c,v 1.10 1999/05/10 11:52:05 sas Exp $ */ +/* $Id: dba_gdbm.c,v 1.11 1999/05/18 03:15:47 sas Exp $ */ #include "php.h" @@ -108,8 +108,9 @@ gval.dsize = vallen; if(gdbm_store(dba->dbf, gkey, gval, - mode == 1 ? GDBM_INSERT : GDBM_REPLACE)) + mode == 1 ? GDBM_INSERT : GDBM_REPLACE) == 0) return SUCCESS; + printf("XXX %s\n", gdbm_strerror(gdbm_errno)); return FAILURE; } @@ -118,7 +119,7 @@ GDBM_DATA; GDBM_GKEY; - return gdbm_exists(dba->dbf, gkey); + return gdbm_exists(dba->dbf, gkey) ? SUCCESS : FAILURE; } DBA_DELETE_FUNC(gdbm) @@ -126,7 +127,7 @@ GDBM_DATA; GDBM_GKEY; - return gdbm_delete(dba->dbf, gkey); + return gdbm_delete(dba->dbf, gkey) == -1 ? FAILURE : SUCCESS; } DBA_FIRSTKEY_FUNC(gdbm) Index: php3/functions/dba_ndbm.c diff -u php3/functions/dba_ndbm.c:1.11 php3/functions/dba_ndbm.c:1.12 --- php3/functions/dba_ndbm.c:1.11 Mon May 17 22:03:37 1999 +++ php3/functions/dba_ndbm.c Mon May 17 23:15:47 1999 @@ -27,7 +27,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: dba_ndbm.c,v 1.11 1999/05/18 02:03:37 sas Exp $ */ +/* $Id: dba_ndbm.c,v 1.12 1999/05/18 03:15:47 sas Exp $ */ #include "php.h" @@ -92,7 +92,6 @@ if(gval.dptr) { if(newlen) *newlen = gval.dsize; new = estrndup(gval.dptr, gval.dsize); - free(gval.dptr); } return new; } @@ -116,7 +115,6 @@ NDBM_GKEY; gval = dbm_fetch(info->dbf, gkey); if(gval.dptr) { - free(gval.dptr); return SUCCESS; } return FAILURE; @@ -137,7 +135,6 @@ if(gkey.dptr) { if(newlen) *newlen = gkey.dsize; key = estrndup(gkey.dptr, gkey.dsize); - free(gkey.dptr); } return key; } @@ -151,7 +148,6 @@ if(gkey.dptr) { if(newlen) *newlen = gkey.dsize; nkey = estrndup(gkey.dptr, gkey.dsize); - free(gkey.dptr); } return nkey; } -- PHP Development Mailing List http://www.php.net/ To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net For help: php-dev-help@lists.php.net

« previous php.dev (#5753) next »