#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); \
DBA_CLOSE_FUNC(flatfile)
{
- DBM_DATA;
+ FLATFILE_DATA;
if (dba->lockfn) {
#if NFS_HACK
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);
{
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;
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;
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;
* 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);
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)
}
/* }}} */
-/* {{{ 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);
}
/* }}} */
-/* {{{ 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;
}
/* }}} */
-/* {{{ 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;
}
/* }}} */
-/* {{{ 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;
}
/* }}} */
-/* {{{ 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;
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