diff options
author | SVN Migration <svn@php.net> | 2003-02-27 17:43:39 +0000 |
---|---|---|
committer | SVN Migration <svn@php.net> | 2003-02-27 17:43:39 +0000 |
commit | 078bcec0997ad0e07b720c43cc9e6d0e046a75ab (patch) | |
tree | 36cb0f6be2ef078fe3374de8c087b93ecf82f812 /ext/dba/libflatfile/flatfile.c | |
parent | fd61f69077f6156ca71dde60ecfd9ed9765a02db (diff) | |
download | php-git-PHP-5.tar.gz |
This commit was manufactured by cvs2svn to create branch 'PHP_5'.PHP-5
Diffstat (limited to 'ext/dba/libflatfile/flatfile.c')
-rw-r--r-- | ext/dba/libflatfile/flatfile.c | 321 |
1 files changed, 0 insertions, 321 deletions
diff --git a/ext/dba/libflatfile/flatfile.c b/ext/dba/libflatfile/flatfile.c deleted file mode 100644 index 44ef3d53a3..0000000000 --- a/ext/dba/libflatfile/flatfile.c +++ /dev/null @@ -1,321 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | PHP Version 4 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2003 The PHP Group | - +----------------------------------------------------------------------+ - | This source file is subject to version 2.02 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available at through the world-wide-web at | - | http://www.php.net/license/2_02.txt. | - | If you did not receive a copy of the PHP license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@php.net so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Authors: Marcus Boerger <helly@php.net> | - | based on ext/db/db.c by: | - | Rasmus Lerdorf <rasmus@php.net> | - | Jim Winstead <jimw@php.net> | - +----------------------------------------------------------------------+ - */ - -/* $Id$ */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "php.h" -#include "php_globals.h" -#include "safe_mode.h" - -#include <stdlib.h> -#include <string.h> -#include <errno.h> -#if HAVE_UNISTD_H -#include <unistd.h> -#endif - -#include "flatfile.h" - -#define FLATFILE_BLOCK_SIZE 1024 - -/* - * ret = -1 means that database was opened for read-only - * ret = 0 success - * ret = 1 key already exists - nothing done - */ - -/* {{{ flatfile_store - */ -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); - 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) { - return -1; - } - php_stream_printf(dba->fp TSRMLS_CC, "%d\n", value_datum.dsize); - php_stream_flush(dba->fp); - if (php_stream_write(dba->fp, value_datum.dptr, value_datum.dsize) < value_datum.dsize) { - return -1; - } - } else { /* FLATFILE_REPLACE */ - 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) { - return -1; - } - php_stream_printf(dba->fp TSRMLS_CC, "%d\n", value_datum.dsize); - if (php_stream_write(dba->fp, value_datum.dptr, value_datum.dsize) < value_datum.dsize) { - return -1; - } - } - - php_stream_flush(dba->fp); - return 0; -} -/* }}} */ - -/* {{{ flatfile_fetch - */ -datum flatfile_fetch(flatfile *dba, datum key_datum TSRMLS_DC) { - datum value_datum = {NULL, 0}; - char buf[16]; - - if (flatfile_findkey(dba, key_datum TSRMLS_CC)) { - if (php_stream_gets(dba->fp, buf, sizeof(buf))) { - value_datum.dsize = atoi(buf); - value_datum.dptr = emalloc(value_datum.dsize+1); - value_datum.dsize = php_stream_read(dba->fp, value_datum.dptr, value_datum.dsize); - } else { - value_datum.dptr = NULL; - value_datum.dsize = 0; - } - } - return value_datum; -} -/* }}} */ - -/* {{{ flatfile_delete - */ -int flatfile_delete(flatfile *dba, datum key_datum TSRMLS_DC) { - char *key = key_datum.dptr; - size_t size = key_datum.dsize; - size_t buf_size = FLATFILE_BLOCK_SIZE; - char *buf = emalloc(buf_size); - size_t num; - size_t pos; - - php_stream_rewind(dba->fp); - while(!php_stream_eof(dba->fp)) { - /* read in the length of the key name */ - if (!php_stream_gets(dba->fp, buf, 15)) { - break; - } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); - } - pos = php_stream_tell(dba->fp); - - /* read in the key name */ - num = php_stream_read(dba->fp, buf, num); - if (num < 0) { - break; - } - - if (size == num && !memcmp(buf, key, size)) { - php_stream_seek(dba->fp, pos, SEEK_SET); - php_stream_putc(dba->fp, 0); - php_stream_flush(dba->fp); - php_stream_seek(dba->fp, 0L, SEEK_END); - efree(buf); - return SUCCESS; - } - - /* read in the length of the value */ - if (!php_stream_gets(dba->fp, buf, 15)) { - break; - } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); - } - /* read in the value */ - num = php_stream_read(dba->fp, buf, num); - if (num < 0) { - break; - } - } - efree(buf); - return FAILURE; -} -/* }}} */ - -/* {{{ flatfile_findkey - */ -int flatfile_findkey(flatfile *dba, datum key_datum TSRMLS_DC) { - size_t buf_size = FLATFILE_BLOCK_SIZE; - char *buf = emalloc(buf_size); - size_t num; - int ret=0; - void *key = key_datum.dptr; - size_t size = key_datum.dsize; - - php_stream_rewind(dba->fp); - while (!php_stream_eof(dba->fp)) { - if (!php_stream_gets(dba->fp, buf, 15)) { - break; - } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); - } - num = php_stream_read(dba->fp, buf, num); - if (num < 0) { - break; - } - if (size == num) { - if (!memcmp(buf, key, size)) { - ret = 1; - break; - } - } - if (!php_stream_gets(dba->fp, buf, 15)) { - break; - } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); - } - num = php_stream_read(dba->fp, buf, num); - if (num < 0) { - break; - } - } - efree(buf); - return ret; -} -/* }}} */ - -/* {{{ flatfile_firstkey - */ -datum flatfile_firstkey(flatfile *dba TSRMLS_DC) { - datum res; - size_t num; - size_t buf_size = FLATFILE_BLOCK_SIZE; - char *buf = emalloc(buf_size); - - php_stream_rewind(dba->fp); - while(!php_stream_eof(dba->fp)) { - if (!php_stream_gets(dba->fp, buf, 15)) { - break; - } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); - } - num = php_stream_read(dba->fp, buf, num); - if (num < 0) { - break; - } - if (*(buf) != 0) { - dba->CurrentFlatFilePos = php_stream_tell(dba->fp); - res.dptr = buf; - res.dsize = num; - return res; - } - if (!php_stream_gets(dba->fp, buf, 15)) { - break; - } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); - } - num = php_stream_read(dba->fp, buf, num); - if (num < 0) { - break; - } - } - efree(buf); - res.dptr = NULL; - res.dsize = 0; - return res; -} -/* }}} */ - -/* {{{ flatfile_nextkey - */ -datum flatfile_nextkey(flatfile *dba TSRMLS_DC) { - datum res; - size_t num; - size_t buf_size = FLATFILE_BLOCK_SIZE; - char *buf = emalloc(buf_size); - - php_stream_seek(dba->fp, dba->CurrentFlatFilePos, SEEK_SET); - while(!php_stream_eof(dba->fp)) { - if (!php_stream_gets(dba->fp, buf, 15)) { - break; - } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); - } - num = php_stream_read(dba->fp, buf, num); - if (num < 0) { - break; - } - if (!php_stream_gets(dba->fp, buf, 15)) { - break; - } - num = atoi(buf); - if (num >= buf_size) { - buf_size = num + FLATFILE_BLOCK_SIZE; - buf = erealloc(buf, buf_size); - } - num = php_stream_read(dba->fp, buf, num); - if (num < 0) { - break; - } - if (*(buf)!=0) { - dba->CurrentFlatFilePos = php_stream_tell(dba->fp); - res.dptr = buf; - res.dsize = num; - return res; - } - } - efree(buf); - res.dptr = NULL; - res.dsize = 0; - return res; -} -/* }}} */ - -/* {{{ flatfile_version */ -char *flatfile_version() -{ - return "1.0, $Revision$"; -} -/* }}} */ - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: sw=4 ts=4 fdm=marker - * vim<600: sw=4 ts=4 - */ |