CVS update: php3/functions
| From: | sas | 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