cvs: php4(PHP_4_2_0) /ext/db db.c php_db.h
| From: | Marcus B�rger | 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);