cvs: php4(PHP_4_2_0) /ext/db db.c php_db.h

From: Date: Tue, 27 Aug 2002 01:07:37 +0000
Subject: cvs: php4(PHP_4_2_0) /ext/db db.c php_db.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-13695@lists.php.net to get a copy of this message
helly Mon Aug 26 21:07:37 2002 EDT Modified files: (Branch: PHP_4_2_0) /php4/ext/db db.c php_db.h Log: MFH Index: php4/ext/db/db.c diff -u php4/ext/db/db.c:1.70 php4/ext/db/db.c:1.70.2.1 --- php4/ext/db/db.c:1.70 Thu Feb 28 03:25:55 2002 +++ php4/ext/db/db.c Mon Aug 26 21:07:36 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: db.c,v 1.70 2002/02/28 08:25:55 sebastian Exp $ */ +/* $Id: db.c,v 1.70.2.1 2002/08/27 01:07:36 helly Exp $ */ #define IS_EXT_MODULE #ifdef HAVE_CONFIG_H @@ -439,7 +439,6 @@ */ void php_dbm_close(zend_rsrc_list_entry *rsrc TSRMLS_DC) { - int ret = 0; dbm_info *info = (dbm_info *)rsrc->ptr; DBM_TYPE dbf; int lockfd; @@ -491,46 +490,12 @@ RETURN_FALSE; } - ret = php_dbm_insert(info, Z_STRVAL_P(key), Z_STRVAL_P(value) TSRMLS_CC); + ret = php_dbm_insert_replace(info, Z_STRVAL_P(key), Z_STRVAL_P(value), 0 TSRMLS_CC); RETURN_LONG(ret); } /* }}} */ -/* {{{ php_dbm_insert - */ -int php_dbm_insert(dbm_info *info, char *key, char *value TSRMLS_DC) { - datum key_datum, value_datum; - int ret; - DBM_TYPE dbf; - - php_stripslashes(key, NULL TSRMLS_CC); - php_stripslashes(value, NULL TSRMLS_CC); - - value_datum.dptr = estrdup(value); - value_datum.dsize = strlen(value); - - key_datum.dptr = estrdup(key); - key_datum.dsize = strlen(key); -#if GDBM_FIX - key_datum.dsize++; -#endif - - dbf = info->dbf; - if (!dbf) { - php_error(E_WARNING, "Unable to locate dbm file"); - return 1; - } - - ret = DBM_STORE(dbf, key_datum, value_datum, DBM_INSERT); - - /* free the memory */ - efree(key_datum.dptr); efree(value_datum.dptr); - - return(ret); -} -/* }}} */ - /* {{{ proto int dbmreplace(int dbm_identifier, string key, string value) Replaces the value for a key in a dbm database */ PHP_FUNCTION(dbmreplace) @@ -551,28 +516,31 @@ RETURN_FALSE; } - ret = php_dbm_replace(info, Z_STRVAL_P(key), Z_STRVAL_P(value) TSRMLS_CC); + ret = php_dbm_insert_replace(info, Z_STRVAL_P(key), Z_STRVAL_P(value), 1 TSRMLS_CC); RETURN_LONG(ret); } /* }}} */ /* {{{ php_dbm_replace */ -int php_dbm_replace(dbm_info *info, char *key, char *value TSRMLS_DC) +int php_dbm_insert_replace(dbm_info *info, char *key, char *value, int replace_mode TSRMLS_DC) { DBM_TYPE dbf; int ret; datum key_datum, value_datum; + key = estrdup(key); + value = estrdup(value); + if (PG(magic_quotes_runtime)) { php_stripslashes(key, NULL TSRMLS_CC); php_stripslashes(value, NULL TSRMLS_CC); } - value_datum.dptr = estrdup(value); + value_datum.dptr = value; value_datum.dsize = strlen(value); - key_datum.dptr = estrdup(key); + key_datum.dptr = key; key_datum.dsize = strlen(key); #if GDBM_FIX key_datum.dsize++; @@ -580,11 +548,15 @@ dbf = info->dbf; if (!dbf) { - php_error(E_WARNING, "Unable to locate dbm file"); - return 1; + php_error(E_WARNING, "%s(): Unable to locate dbm file", get_active_function_name(TSRMLS_C)); + ret = 1; + } else { + if (!replace_mode) { + ret = DBM_STORE(dbf, key_datum, value_datum, DBM_INSERT); + } else { + ret = DBM_STORE(dbf, key_datum, value_datum, DBM_REPLACE); + } } - - ret = DBM_STORE(dbf, key_datum, value_datum, DBM_REPLACE); /* free the memory */ efree(key_datum.dptr); efree(value_datum.dptr); Index: php4/ext/db/php_db.h diff -u php4/ext/db/php_db.h:1.16 php4/ext/db/php_db.h:1.16.2.1 --- php4/ext/db/php_db.h:1.16 Thu Feb 28 03:25:55 2002 +++ php4/ext/db/php_db.h Mon Aug 26 21:07:36 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_db.h,v 1.16 2002/02/28 08:25:55 sebastian Exp $ */ +/* $Id: php_db.h,v 1.16.2.1 2002/08/27 01:07:36 helly Exp $ */ #ifndef PHP_DB_H @@ -54,9 +54,8 @@ dbm_info *php_find_dbm(pval *id TSRMLS_DC); void php_dbm_close(zend_rsrc_list_entry *rsrc TSRMLS_DC); dbm_info *php_dbm_open(char *filename, char *mode TSRMLS_DC); -int php_dbm_insert(dbm_info *info, char *key, char *value TSRMLS_DC); char *php_dbm_fetch(dbm_info *info, char *key TSRMLS_DC); -int php_dbm_replace(dbm_info *info, char *key, char *value TSRMLS_DC); +int php_dbm_insert_replace(dbm_info *info, char *key, char *value, int insert_mode TSRMLS_DC); int php_dbm_exists(dbm_info *info, char *key); int php_dbm_delete(dbm_info *info, char *key); char *php_dbm_first_key(dbm_info *info);

« previous php.cvs (#13695) next »