CVS update: php3/functions
| From: | sas | Date: | Wed, 21 Apr 1999 09:50:13 +0000 |
| Subject: | CVS update: php3/functions | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-5171@lists.php.net to get a copy of this message | ||
Date: Wednesday April 21, 1999 @ 5:50
Author: sas
Update of /repository/php3/functions
In directory php:/tmp/cvs-serv10293
Modified Files:
dba.c php3_dba.h dba_cdb.c dba_dbm.c dba_gdbm.c dba_ndbm.c
Log Message:
- avoid unnecessary strlen()
- change nextkey() parameters: a key is not needed anymore for traversion
Index: php3/functions/dba.c
diff -c php3/functions/dba.c:1.5 php3/functions/dba.c:1.6
*** php3/functions/dba.c:1.5 Mon Apr 12 00:41:16 1999
--- php3/functions/dba.c Wed Apr 21 05:50:13 1999
***************
*** 27,33 ****
+----------------------------------------------------------------------+
*/
! /* $Id: dba.c,v 1.5 1999/04/12 04:41:16 sas Exp $ */
#include "php.h"
--- 27,33 ----
+----------------------------------------------------------------------+
*/
! /* $Id: dba.c,v 1.6 1999/04/21 09:50:13 sas Exp $ */
#include "php.h"
***************
*** 73,84 ****
char *name;
int (*open)(dba_info *);
void (*close)(dba_info *);
! char* (*fetch)(dba_info *, char *, int *);
! int (*update)(dba_info *, char *, char *, int, int);
! int (*exists)(dba_info *, char *);
! int (*delete)(dba_info *, char *);
! char* (*firstkey)(dba_info *);
! char* (*nextkey)(dba_info *, char *);
void (*optimize)(dba_info *);
} dba_handler;
--- 73,84 ----
char *name;
int (*open)(dba_info *);
void (*close)(dba_info *);
! char* (*fetch)(dba_info *, char *, int, int *);
! int (*update)(dba_info *, char *, int, char *, int, int);
! int (*exists)(dba_info *, char *, int);
! int (*delete)(dba_info *, char *, int);
! char* (*firstkey)(dba_info *, int *);
! char* (*nextkey)(dba_info *, int *);
void (*optimize)(dba_info *);
} dba_handler;
***************
*** 184,190 ****
{
dba_handler *hptr;
! PUTS("V1 ($Id: dba.c,v 1.5 1999/04/12 04:41:16 sas Exp $)");
for(hptr = handler; hptr->name; hptr++) {
PUTS(" ");
PUTS(hptr->name);
--- 184,190 ----
{
dba_handler *hptr;
! PUTS("V1 ($Id: dba.c,v 1.6 1999/04/21 09:50:13 sas Exp $)");
for(hptr = handler; hptr->name; hptr++) {
PUTS(" ");
PUTS(hptr->name);
***************
*** 204,210 ****
convert_to_string(val);
DBA_ID_GET;
! if(info->hnd->update(info, key->value.str.val, val->value.str.val,
val->value.str.len, mode))
RETURN_TRUE;
RETURN_FALSE;
}
--- 204,210 ----
convert_to_string(val);
DBA_ID_GET;
! if(info->hnd->update(info, VALLEN(key), VALLEN(val), mode))
RETURN_TRUE;
RETURN_FALSE;
}
***************
*** 344,350 ****
{
DBA_ID_GET2;
! if(info->hnd->exists(info, key->value.str.val)) {
RETURN_TRUE;
}
RETURN_FALSE;
--- 344,350 ----
{
DBA_ID_GET2;
! if(info->hnd->exists(info, VALLEN(key))) {
RETURN_TRUE;
}
RETURN_FALSE;
***************
*** 359,365 ****
int len = 0;
DBA_ID_GET2;
! if((val = info->hnd->fetch(info, key->value.str.val, &len)) != NULL) {
RETVAL_STRINGL(val, len, 0);
return;
}
--- 359,365 ----
int len = 0;
DBA_ID_GET2;
! if((val = info->hnd->fetch(info, VALLEN(key), &len)) != NULL) {
RETVAL_STRINGL(val, len, 0);
return;
}
***************
*** 372,396 ****
PHP_FUNCTION(dba_firstkey)
{
char *fkey;
DBA_ID_GET1;
! fkey = info->hnd->firstkey(info);
if(fkey)
! RETURN_STRING(fkey, 0);
RETURN_FALSE;
}
/* }}} */
! /* {{{ proto string dba_nextkey(int handle, string key)
returns the next key */
PHP_FUNCTION(dba_nextkey)
{
char *nkey;
! DBA_ID_GET2;
! nkey = info->hnd->nextkey(info, key->value.str.val);
if(nkey)
! RETURN_STRING(nkey, 0);
RETURN_FALSE;
}
/* }}} */
--- 372,398 ----
PHP_FUNCTION(dba_firstkey)
{
char *fkey;
+ int len;
DBA_ID_GET1;
! fkey = info->hnd->firstkey(info, &len);
if(fkey)
! RETURN_STRINGL(fkey, len, 0);
RETURN_FALSE;
}
/* }}} */
! /* {{{ proto string dba_nextkey(int handle)
returns the next key */
PHP_FUNCTION(dba_nextkey)
{
char *nkey;
! int len;
! DBA_ID_GET1;
! nkey = info->hnd->nextkey(info, &len);
if(nkey)
! RETURN_STRINGL(nkey, len, 0);
RETURN_FALSE;
}
/* }}} */
***************
*** 401,407 ****
{
DBA_ID_GET2;
! if(info->hnd->delete(info, key->value.str.val))
RETURN_TRUE;
RETURN_FALSE;
}
--- 403,409 ----
{
DBA_ID_GET2;
! if(info->hnd->delete(info, VALLEN(key)))
RETURN_TRUE;
RETURN_FALSE;
}
Index: php3/functions/php3_dba.h
diff -c php3/functions/php3_dba.h:1.5 php3/functions/php3_dba.h:1.6
*** php3/functions/php3_dba.h:1.5 Tue Apr 13 11:10:23 1999
--- php3/functions/php3_dba.h Wed Apr 21 05:50:13 1999
***************
*** 27,33 ****
+----------------------------------------------------------------------+
*/
! /* $Id: php3_dba.h,v 1.5 1999/04/13 15:10:23 sas Exp $ */
#ifndef _DBA_H
#define _DBA_H
--- 27,33 ----
+----------------------------------------------------------------------+
*/
! /* $Id: php3_dba.h,v 1.6 1999/04/21 09:50:13 sas Exp $ */
#ifndef _DBA_H
#define _DBA_H
***************
*** 63,79 ****
#define DBA_CLOSE_FUNC(x) \
extern void dba_close_##x(dba_info *info)
#define DBA_FETCH_FUNC(x) \
! extern char *dba_fetch_##x(dba_info *info, char *key, int *newlen)
#define DBA_UPDATE_FUNC(x) \
! extern int dba_update_##x(dba_info *info, char *key, char *val, int vallen, int mode)
#define DBA_EXISTS_FUNC(x) \
! extern int dba_exists_##x(dba_info *info, char *key)
#define DBA_DELETE_FUNC(x) \
! extern int dba_delete_##x(dba_info *info, char *key)
#define DBA_FIRSTKEY_FUNC(x) \
! extern char *dba_firstkey_##x(dba_info *info)
#define DBA_NEXTKEY_FUNC(x) \
! extern char *dba_nextkey_##x(dba_info *info, char *key)
#define DBA_OPTIMIZE_FUNC(x) \
extern void dba_optimize_##x(dba_info *info)
--- 63,79 ----
#define DBA_CLOSE_FUNC(x) \
extern void dba_close_##x(dba_info *info)
#define DBA_FETCH_FUNC(x) \
! extern char *dba_fetch_##x(dba_info *info, char *key, int keylen, int *newlen)
#define DBA_UPDATE_FUNC(x) \
! extern int dba_update_##x(dba_info *info, char *key, int keylen, char *val, int vallen, int mode)
#define DBA_EXISTS_FUNC(x) \
! extern int dba_exists_##x(dba_info *info, char *key, int keylen)
#define DBA_DELETE_FUNC(x) \
! extern int dba_delete_##x(dba_info *info, char *key, int keylen)
#define DBA_FIRSTKEY_FUNC(x) \
! extern char *dba_firstkey_##x(dba_info *info, int *newlen)
#define DBA_NEXTKEY_FUNC(x) \
! extern char *dba_nextkey_##x(dba_info *info, int *newlen)
#define DBA_OPTIMIZE_FUNC(x) \
extern void dba_optimize_##x(dba_info *info)
***************
*** 88,93 ****
--- 88,95 ----
DBA_NEXTKEY_FUNC(x); \
DBA_OPTIMIZE_FUNC(x)
+ #define VALLEN(p) (p)->value.str.val, (p)->value.str.len
+
extern PHP_FUNCTION(dba_open);
extern PHP_FUNCTION(dba_popen);
extern PHP_FUNCTION(dba_close);
Index: php3/functions/dba_cdb.c
diff -c php3/functions/dba_cdb.c:1.6 php3/functions/dba_cdb.c:1.7
*** php3/functions/dba_cdb.c:1.6 Mon Apr 12 00:41:16 1999
--- php3/functions/dba_cdb.c Wed Apr 21 05:50:13 1999
***************
*** 27,33 ****
+----------------------------------------------------------------------+
*/
! /* $Id: dba_cdb.c,v 1.6 1999/04/12 04:41:16 sas Exp $ */
#include "php.h"
--- 27,33 ----
+----------------------------------------------------------------------+
*/
! /* $Id: dba_cdb.c,v 1.7 1999/04/21 09:50:13 sas Exp $ */
#include "php.h"
***************
*** 57,65 ****
dba_info *pinfo = (dba_info *) info;
switch(info->mode) {
! case DBA_READER: gmode = O_RDONLY; break;
/* currently not supported: */
! case DBA_WRITER: gmode = O_RDWR | O_CREAT; break;
}
cdb = malloc(sizeof *cdb);
--- 57,71 ----
dba_info *pinfo = (dba_info *) info;
switch(info->mode) {
! case DBA_READER:
! gmode = O_RDONLY; break;
/* currently not supported: */
! #if 0
! case DBA_WRITER:
! gmode = O_RDWR | O_CREAT; break;
! #endif
! default:
! return FAILURE;
}
cdb = malloc(sizeof *cdb);
***************
*** 89,95 ****
int len;
char *new = NULL;
! if(cdb_seek(cdb->fd, key, strlen(key), &len) == 1) {
new = emalloc(len);
read(cdb->fd, new, len);
if(newlen) *newlen = len;
--- 95,101 ----
int len;
char *new = NULL;
! if(cdb_seek(cdb->fd, key, keylen, &len) == 1) {
new = emalloc(len);
read(cdb->fd, new, len);
if(newlen) *newlen = len;
***************
*** 109,115 ****
CDB_INFO;
int len;
! if(cdb_seek(cdb->fd, key, strlen(key), &len) == 1)
return 1;
return 0;
}
--- 115,121 ----
CDB_INFO;
int len;
! if(cdb_seek(cdb->fd, key, keylen, &len) == 1)
return 1;
return 0;
}
***************
*** 155,162 ****
DBA_NEXTKEY_FUNC(cdb)
{
! /* this would be much faster: */
! #if 0
CDB_INFO;
uint32 len;
char buf[8];
--- 161,169 ----
DBA_NEXTKEY_FUNC(cdb)
{
!
! /* this is much faster */
! #if 1
CDB_INFO;
uint32 len;
char buf[8];
***************
*** 172,189 ****
return NULL;
}
nkey[len] = '\0';
cdb->pos += 8 + len + cdb_unpack(buf + 4);
return nkey;
#else
! /* but this is correct */
CDB_INFO;
char *nkey = NULL;
uint32 len;
char buf[8];
! if(cdb_seek(cdb->fd, key, strlen(key), &len) == 1) {
if(lseek(cdb->fd, (off_t) len, SEEK_CUR) >= (off_t) cdb->eod)
return NULL;
CREAD(8);
--- 179,197 ----
return NULL;
}
nkey[len] = '\0';
+ if(newlen) *newlen = len;
cdb->pos += 8 + len + cdb_unpack(buf + 4);
return nkey;
#else
! /* seek to passed key, jump over the key and the value and read the next key */
CDB_INFO;
char *nkey = NULL;
uint32 len;
char buf[8];
! if(cdb_seek(cdb->fd, key, keylen, &len) == 1) {
if(lseek(cdb->fd, (off_t) len, SEEK_CUR) >= (off_t) cdb->eod)
return NULL;
CREAD(8);
Index: php3/functions/dba_dbm.c
diff -c php3/functions/dba_dbm.c:1.5 php3/functions/dba_dbm.c:1.6
*** php3/functions/dba_dbm.c:1.5 Mon Apr 12 00:41:16 1999
--- php3/functions/dba_dbm.c Wed Apr 21 05:50:13 1999
***************
*** 27,33 ****
+----------------------------------------------------------------------+
*/
! /* $Id: dba_dbm.c,v 1.5 1999/04/12 04:41:16 sas Exp $ */
#include "php.h"
--- 27,33 ----
+----------------------------------------------------------------------+
*/
! /* $Id: dba_dbm.c,v 1.6 1999/04/21 09:50:13 sas Exp $ */
#include "php.h"
***************
*** 41,47 ****
#include <db.h>
#endif
! #define DBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = strlen(key)
DBA_OPEN_FUNC(dbm)
--- 41,47 ----
#include <db.h>
#endif
! #define DBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = keylen
DBA_OPEN_FUNC(dbm)
***************
*** 106,111 ****
--- 106,112 ----
gkey = firstkey();
if(gkey.dptr) {
+ if(newlen) *newlen = gkey.dsize;
key = estrndup(gkey.dptr, gkey.dsize);
free(gkey.dptr);
}
***************
*** 115,124 ****
DBA_NEXTKEY_FUNC(dbm)
{
char *nkey = NULL;
- DBM_GKEY;
gkey = nextkey(gkey);
if(gkey.dptr) {
nkey = estrndup(gkey.dptr, gkey.dsize);
free(gkey.dptr);
}
--- 116,125 ----
DBA_NEXTKEY_FUNC(dbm)
{
char *nkey = NULL;
gkey = nextkey(gkey);
if(gkey.dptr) {
+ if(newlen) *newlen = gkey.dsize;
nkey = estrndup(gkey.dptr, gkey.dsize);
free(gkey.dptr);
}
Index: php3/functions/dba_gdbm.c
diff -c php3/functions/dba_gdbm.c:1.3 php3/functions/dba_gdbm.c:1.4
*** php3/functions/dba_gdbm.c:1.3 Mon Apr 12 00:41:16 1999
--- php3/functions/dba_gdbm.c Wed Apr 21 05:50:13 1999
***************
*** 27,33 ****
+----------------------------------------------------------------------+
*/
! /* $Id: dba_gdbm.c,v 1.3 1999/04/12 04:41:16 sas Exp $ */
#include "php.h"
--- 27,33 ----
+----------------------------------------------------------------------+
*/
! /* $Id: dba_gdbm.c,v 1.4 1999/04/21 09:50:13 sas Exp $ */
#include "php.h"
***************
*** 36,49 ****
#include <gdbm.h>
! #define GDBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = strlen(key)
DBA_OPEN_FUNC(gdbm)
{
GDBM_FILE dbf;
int gmode = 0;
- dba_info *pinfo = (dba_info *) info;
switch(info->mode) {
case DBA_READER:
--- 36,53 ----
#include <gdbm.h>
! #define GDBM_DATA dba_gdbm_data *dba = info->dbf
! #define GDBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = keylen
+ typedef struct {
+ GDBM_FILE dbf;
+ datum nextkey;
+ } dba_gdbm_data;
DBA_OPEN_FUNC(gdbm)
{
GDBM_FILE dbf;
int gmode = 0;
switch(info->mode) {
case DBA_READER:
***************
*** 60,66 ****
dbf = gdbm_open(info->path, 0, gmode, 0644, NULL);
if(dbf) {
! pinfo->dbf = dbf;
return SUCCESS;
}
return FAILURE;
--- 64,72 ----
dbf = gdbm_open(info->path, 0, gmode, 0644, NULL);
if(dbf) {
! info->dbf = emalloc(sizeof dba_gdbm_data);
! memset(info->dbf, 0, sizeof dba_gdbm_data);
! info->dbf->dbf = dbf;
return SUCCESS;
}
return FAILURE;
***************
*** 68,83 ****
DBA_CLOSE_FUNC(gdbm)
{
! gdbm_close(info->dbf);
}
DBA_FETCH_FUNC(gdbm)
{
datum gval;
char *new = NULL;
GDBM_GKEY;
! gval = gdbm_fetch(info->dbf, gkey);
if(gval.dptr) {
if(newlen) *newlen = gval.dsize;
new = estrndup(gval.dptr, gval.dsize);
--- 74,94 ----
DBA_CLOSE_FUNC(gdbm)
{
! GDBM_DATA;
!
! if(dba->nextkey.dptr) free(dba->nextkey.dptr);
! gdbm_close(dba->dbf);
! free(dba);
}
DBA_FETCH_FUNC(gdbm)
{
+ GDBM_DATA;
datum gval;
char *new = NULL;
GDBM_GKEY;
! gval = gdbm_fetch(dba->dbf, gkey);
if(gval.dptr) {
if(newlen) *newlen = gval.dsize;
new = estrndup(gval.dptr, gval.dsize);
***************
*** 89,146 ****
DBA_UPDATE_FUNC(gdbm)
{
datum gval;
GDBM_GKEY;
gval.dptr = (char *) val;
gval.dsize = vallen;
! if(gdbm_store(info->dbf, gkey, gval, mode == 1 ? GDBM_INSERT : GDBM_REPLACE))
return 1;
return 0;
}
DBA_EXISTS_FUNC(gdbm)
{
GDBM_GKEY;
! return gdbm_exists(info->dbf, gkey);
}
DBA_DELETE_FUNC(gdbm)
{
GDBM_GKEY;
! return gdbm_delete(info->dbf, gkey);
}
DBA_FIRSTKEY_FUNC(gdbm)
{
datum gkey;
char *key = NULL;
! gkey = gdbm_firstkey(info->dbf);
if(gkey.dptr) {
key = estrndup(gkey.dptr, gkey.dsize);
! free(gkey.dptr);
}
return key;
}
DBA_NEXTKEY_FUNC(gdbm)
{
char *nkey = NULL;
-
- GDBM_GKEY;
! gkey = gdbm_nextkey(info->dbf, gkey);
if(gkey.dptr) {
nkey = estrndup(gkey.dptr, gkey.dsize);
! free(gkey.dptr);
}
return nkey;
}
DBA_OPTIMIZE_FUNC(gdbm)
{
! gdbm_reorganize(info->dbf);
}
#endif
--- 100,176 ----
DBA_UPDATE_FUNC(gdbm)
{
datum gval;
+ GDBM_DATA;
GDBM_GKEY;
gval.dptr = (char *) val;
gval.dsize = vallen;
! if(gdbm_store(dba->dbf, gkey, gval,
! mode == 1 ? GDBM_INSERT : GDBM_REPLACE))
return 1;
return 0;
}
DBA_EXISTS_FUNC(gdbm)
{
+ GDBM_DATA;
GDBM_GKEY;
! return gdbm_exists(dba->dbf, gkey);
}
DBA_DELETE_FUNC(gdbm)
{
+ GDBM_DATA;
GDBM_GKEY;
!
! return gdbm_delete(dba->dbf, gkey);
}
DBA_FIRSTKEY_FUNC(gdbm)
{
+ GDBM_DATA;
datum gkey;
char *key = NULL;
! if(dba->nextkey.dptr) {
! free(dba->nextkey.dptr);
! }
!
! gkey = gdbm_firstkey(dba->dbf);
if(gkey.dptr) {
key = estrndup(gkey.dptr, gkey.dsize);
! if(newlen) *newlen = gkey.dsize;
! dba->nextkey = gkey;
! } else {
! dba->nextkey = {0,0};
}
return key;
}
DBA_NEXTKEY_FUNC(gdbm)
{
+ GDBM_DATA;
char *nkey = NULL;
! if(!dba->nextkey.dptr) return NULL;
!
! gkey = gdbm_nextkey(dba->dbf, dba->nextkey);
! free(dba->nextkey.gptr);
if(gkey.dptr) {
nkey = estrndup(gkey.dptr, gkey.dsize);
! if(newlen) *newlen = gkey.dsize;
! dba->nextkey = gkey;
! } else {
! dba->nextkey = {0,0};
}
return nkey;
}
DBA_OPTIMIZE_FUNC(gdbm)
{
! GDBM_DATA;
! gdbm_reorganize(dba->dbf);
}
#endif
Index: php3/functions/dba_ndbm.c
diff -c php3/functions/dba_ndbm.c:1.3 php3/functions/dba_ndbm.c:1.4
*** php3/functions/dba_ndbm.c:1.3 Mon Apr 12 00:41:16 1999
--- php3/functions/dba_ndbm.c Wed Apr 21 05:50:13 1999
***************
*** 27,33 ****
+----------------------------------------------------------------------+
*/
! /* $Id: dba_ndbm.c,v 1.3 1999/04/12 04:41:16 sas Exp $ */
#include "php.h"
--- 27,33 ----
+----------------------------------------------------------------------+
*/
! /* $Id: dba_ndbm.c,v 1.4 1999/04/21 09:50:13 sas Exp $ */
#include "php.h"
***************
*** 43,49 ****
#include <db.h>
#endif
! #define NDBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = strlen(key)
DBA_OPEN_FUNC(ndbm)
{
--- 43,49 ----
#include <db.h>
#endif
! #define NDBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = keylen
DBA_OPEN_FUNC(ndbm)
{
***************
*** 130,135 ****
--- 130,136 ----
gkey = dbm_firstkey(info->dbf);
if(gkey.dptr) {
+ if(newlen) *newlen = gkey.dsize;
key = estrndup(gkey.dptr, gkey.dsize);
free(gkey.dptr);
}
***************
*** 139,148 ****
DBA_NEXTKEY_FUNC(ndbm)
{
char *nkey = NULL;
- NDBM_GKEY;
gkey = dbm_nextkey(info->dbf);
if(gkey.dptr) {
nkey = estrndup(gkey.dptr, gkey.dsize);
free(gkey.dptr);
}
--- 140,149 ----
DBA_NEXTKEY_FUNC(ndbm)
{
char *nkey = NULL;
gkey = dbm_nextkey(info->dbf);
if(gkey.dptr) {
+ if(newlen) *newlen = gkey.dsize;
nkey = estrndup(gkey.dptr, gkey.dsize);
free(gkey.dptr);
}
--
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