diff options
-rw-r--r-- | ext/dba/dba_flatfile.c | 57 | ||||
-rw-r--r-- | ext/dba/libflatfile/flatfile.c | 32 | ||||
-rw-r--r-- | ext/dba/libflatfile/flatfile.h | 16 |
3 files changed, 56 insertions, 49 deletions
diff --git a/ext/dba/dba_flatfile.c b/ext/dba/dba_flatfile.c index 986b59cd19..27df27ce16 100644 --- a/ext/dba/dba_flatfile.c +++ b/ext/dba/dba_flatfile.c @@ -44,8 +44,8 @@ #endif #endif -#define DBM_DATA flatfile *dba = info->dbf -#define DBM_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = keylen +#define FLATFILE_DATA flatfile *dba = info->dbf +#define FLATFILE_GKEY datum gkey; gkey.dptr = (char *) key; gkey.dsize = keylen #define TRUNC_IT(extension, mode) \ snprintf(buf, MAXPATHLEN, "%s" extension, info->path); \ @@ -152,7 +152,7 @@ DBA_OPEN_FUNC(flatfile) DBA_CLOSE_FUNC(flatfile) { - DBM_DATA; + FLATFILE_DATA; if (dba->lockfn) { #if NFS_HACK @@ -171,19 +171,15 @@ DBA_CLOSE_FUNC(flatfile) 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); + FLATFILE_DATA; + FLATFILE_GKEY; + + gval = flatfile_fetch(dba, gkey TSRMLS_CC); if(gval.dptr) { if(newlen) *newlen = gval.dsize; new = estrndup(gval.dptr, gval.dsize); @@ -196,19 +192,31 @@ DBA_UPDATE_FUNC(flatfile) { datum gval; - DBM_GKEY; + FLATFILE_DATA; + FLATFILE_GKEY; gval.dptr = (char *) val; gval.dsize = vallen; - return (DBM_STORE(gkey, gval) == -1 ? FAILURE : SUCCESS); + switch(flatfile_store(dba, gkey, gval, mode==1 ? FLATFILE_INSERT : FLATFILE_REPLACE TSRMLS_CC)) { + case -1: + php_error_docref1(NULL TSRMLS_CC, key, E_WARNING, "Operation not possible"); + return FAILURE; + default: + case 0: + return SUCCESS; + case 1: + php_error_docref1(NULL TSRMLS_CC, key, E_WARNING, "Key already exists"); + return SUCCESS; + } } DBA_EXISTS_FUNC(flatfile) { datum gval; - DBM_GKEY; + FLATFILE_DATA; + FLATFILE_GKEY; - gval = DBM_FETCH(gkey); + gval = flatfile_fetch(dba, gkey TSRMLS_CC); if(gval.dptr) { efree(gval.dptr); return SUCCESS; @@ -218,17 +226,18 @@ DBA_EXISTS_FUNC(flatfile) DBA_DELETE_FUNC(flatfile) { - DBM_GKEY; - return(DBM_DELETE(gkey) == -1 ? FAILURE : SUCCESS); + FLATFILE_DATA; + FLATFILE_GKEY; + return(flatfile_delete(dba, gkey TSRMLS_CC) == -1 ? FAILURE : SUCCESS); } DBA_FIRSTKEY_FUNC(flatfile) { - DBM_DATA; + FLATFILE_DATA; if (dba->nextkey.dptr) efree(dba->nextkey.dptr); - dba->nextkey = DBM_FIRSTKEY(); + dba->nextkey = flatfile_firstkey(dba TSRMLS_CC); if(dba->nextkey.dptr) { if(newlen) *newlen = dba->nextkey.dsize; @@ -239,16 +248,14 @@ DBA_FIRSTKEY_FUNC(flatfile) DBA_NEXTKEY_FUNC(flatfile) { - DBM_DATA; - datum lkey; + FLATFILE_DATA; if(!dba->nextkey.dptr) return NULL; - lkey = dba->nextkey; - dba->nextkey = DBM_NEXTKEY(lkey); - if (lkey.dptr) - efree(lkey.dptr); + if (dba->nextkey.dptr) + efree(dba->nextkey.dptr); + dba->nextkey = flatfile_nextkey(dba TSRMLS_CC); if(dba->nextkey.dptr) { if(newlen) *newlen = dba->nextkey.dsize; diff --git a/ext/dba/libflatfile/flatfile.c b/ext/dba/libflatfile/flatfile.c index 0b74614d5f..deedbb23b8 100644 --- a/ext/dba/libflatfile/flatfile.c +++ b/ext/dba/libflatfile/flatfile.c @@ -44,11 +44,11 @@ * ret = 1 key already exists - nothing done */ -/* {{{ dbm_file_store +/* {{{ flatfile_store */ -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)) { +PHPAPI int flatfile_store(flatfile *dba, datum key_datum, datum value_datum, int mode TSRMLS_DC) { + if (mode == FLATFILE_INSERT) { + if (flatfile_findkey(dba, key_datum TSRMLS_CC)) { return 1; } php_stream_seek(dba->fp, 0L, SEEK_END); @@ -61,7 +61,7 @@ PHPAPI int dbm_file_store(flatfile *dba, datum key_datum, datum value_datum, int if (php_stream_write(dba->fp, value_datum.dptr, value_datum.dsize) < value_datum.dsize) return -1; } else { /* DBM_REPLACE */ - dbm_file_delete(dba, key_datum TSRMLS_CC); + flatfile_delete(dba, key_datum TSRMLS_CC); php_stream_printf(dba->fp TSRMLS_CC, "%d\n", key_datum.dsize); php_stream_flush(dba->fp); if (php_stream_write(dba->fp, key_datum.dptr, key_datum.dsize) < key_datum.dsize) @@ -75,14 +75,14 @@ PHPAPI int dbm_file_store(flatfile *dba, datum key_datum, datum value_datum, int } /* }}} */ -/* {{{ dbm_file_fetch +/* {{{ flatfile_fetch */ -PHPAPI datum dbm_file_fetch(flatfile *dba, datum key_datum TSRMLS_DC) { +PHPAPI datum flatfile_fetch(flatfile *dba, datum key_datum TSRMLS_DC) { datum value_datum = {NULL, 0}; int num=0, buf_size=1024; char *buf; - if (dbm_file_findkey(dba, key_datum TSRMLS_CC)) { + if (flatfile_findkey(dba, key_datum TSRMLS_CC)) { buf = emalloc((buf_size+1) * sizeof(char)); if (php_stream_gets(dba->fp, buf, 15)) { num = atoi(buf); @@ -103,9 +103,9 @@ PHPAPI datum dbm_file_fetch(flatfile *dba, datum key_datum TSRMLS_DC) { } /* }}} */ -/* {{{ dbm_file_delete +/* {{{ flatfile_delete */ -PHPAPI int dbm_file_delete(flatfile *dba, datum key_datum TSRMLS_DC) { +PHPAPI int flatfile_delete(flatfile *dba, datum key_datum TSRMLS_DC) { char *key = key_datum.dptr; int size = key_datum.dsize; @@ -162,9 +162,9 @@ PHPAPI int dbm_file_delete(flatfile *dba, datum key_datum TSRMLS_DC) { } /* }}} */ -/* {{{ dbm_file_findkey +/* {{{ flatfile_findkey */ -PHPAPI int dbm_file_findkey(flatfile *dba, datum key_datum TSRMLS_DC) { +PHPAPI int flatfile_findkey(flatfile *dba, datum key_datum TSRMLS_DC) { char *buf = NULL; int num; int buf_size=1024; @@ -209,9 +209,9 @@ PHPAPI int dbm_file_findkey(flatfile *dba, datum key_datum TSRMLS_DC) { } /* }}} */ -/* {{{ dbm_file_firstkey +/* {{{ flatfile_firstkey */ -PHPAPI datum dbm_file_firstkey(flatfile *dba TSRMLS_DC) { +PHPAPI datum flatfile_firstkey(flatfile *dba TSRMLS_DC) { datum buf; int num; int buf_size=1024; @@ -250,9 +250,9 @@ PHPAPI datum dbm_file_firstkey(flatfile *dba TSRMLS_DC) { } /* }}} */ -/* {{{ latfile_nextkey +/* {{{ flatfile_nextkey */ -PHPAPI datum dbm_file_nextkey(flatfile *dba TSRMLS_DC) { +PHPAPI datum flatfile_nextkey(flatfile *dba TSRMLS_DC) { datum buf; int num; int buf_size=1024; diff --git a/ext/dba/libflatfile/flatfile.h b/ext/dba/libflatfile/flatfile.h index 486af9135f..f3795bb164 100644 --- a/ext/dba/libflatfile/flatfile.h +++ b/ext/dba/libflatfile/flatfile.h @@ -34,14 +34,14 @@ typedef struct { datum nextkey; } flatfile; -#define DBM_INSERT 0 -#define DBM_REPLACE 1 +#define FLATFILE_INSERT 1 +#define FLATFILE_REPLACE 0 -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); +PHPAPI int flatfile_store(flatfile *dba, datum key_datum, datum value_datum, int mode TSRMLS_DC); +PHPAPI datum flatfile_fetch(flatfile *dba, datum key_datum TSRMLS_DC); +PHPAPI int flatfile_delete(flatfile *dba, datum key_datum TSRMLS_DC); +PHPAPI int flatfile_findkey(flatfile *dba, datum key_datum TSRMLS_DC); +PHPAPI datum flatfile_firstkey(flatfile *dba TSRMLS_DC); +PHPAPI datum flatfile_nextkey(flatfile *dba TSRMLS_DC); #endif |