CVS update: php3/functions

From: 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

« previous php.dev (#5171) next »