mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Use zend_string for DBA update handler
This commit is contained in:
parent
f8e15f1ed6
commit
0eb0f64455
15 changed files with 61 additions and 56 deletions
|
@ -424,8 +424,7 @@ static void php_dba_update(INTERNAL_FUNCTION_PARAMETERS, int mode)
|
|||
}
|
||||
}
|
||||
|
||||
RETVAL_BOOL(info->hnd->update(info, ZSTR_VAL(key_str), ZSTR_LEN(key_str),
|
||||
ZSTR_VAL(value), ZSTR_LEN(value), mode) == SUCCESS);
|
||||
RETVAL_BOOL(info->hnd->update(info, key_str, value, mode) == SUCCESS);
|
||||
DBA_RELEASE_HT_KEY_CREATION();
|
||||
}
|
||||
/* }}} */
|
||||
|
|
|
@ -180,7 +180,7 @@ DBA_UPDATE_FUNC(cdb)
|
|||
return FAILURE; /* database was opened readonly */
|
||||
if (!mode)
|
||||
return FAILURE; /* cdb_make doesn't know replace */
|
||||
if (cdb_make_add(&cdb->m, key, keylen, val, vallen) != -1)
|
||||
if (cdb_make_add(&cdb->m, ZSTR_VAL(key), ZSTR_LEN(key), ZSTR_VAL(val), ZSTR_LEN(val)) != -1)
|
||||
return SUCCESS;
|
||||
#endif
|
||||
return FAILURE;
|
||||
|
|
|
@ -104,11 +104,11 @@ DBA_UPDATE_FUNC(db1)
|
|||
DBT gval;
|
||||
DBT gkey;
|
||||
|
||||
gkey.data = (char *) key;
|
||||
gkey.size = keylen;
|
||||
gkey.data = ZSTR_VAL(key);
|
||||
gkey.size = ZSTR_LEN(key);
|
||||
|
||||
gval.data = (char *) val;
|
||||
gval.size = vallen;
|
||||
gval.data = ZSTR_VAL(val);
|
||||
gval.size = ZSTR_LEN(val);
|
||||
|
||||
return dba->dbp->put(dba->dbp, &gkey, &gval, mode == 1 ? R_NOOVERWRITE : 0) != RET_SUCCESS ? FAILURE : SUCCESS;
|
||||
}
|
||||
|
|
|
@ -103,11 +103,11 @@ DBA_UPDATE_FUNC(db2)
|
|||
DBT gval = {0};
|
||||
DBT gkey = {0};
|
||||
|
||||
gkey.data = (char *) key;
|
||||
gkey.size = keylen;
|
||||
gkey.data = ZSTR_VAL(key);
|
||||
gkey.size = ZSTR_LEN(key);
|
||||
|
||||
gval.data = (char *) val;
|
||||
gval.size = vallen;
|
||||
gval.data = ZSTR_VAL(val);
|
||||
gval.size = ZSTR_LEN(val);
|
||||
|
||||
if (dba->dbp->put(dba->dbp, NULL, &gkey, &gval,
|
||||
mode == 1 ? DB_NOOVERWRITE : 0)) {
|
||||
|
|
|
@ -137,11 +137,12 @@ DBA_UPDATE_FUNC(db3)
|
|||
DBT gkey;
|
||||
|
||||
memset(&gkey, 0, sizeof(gkey));
|
||||
gkey.data = (char *) key; gkey.size = keylen;
|
||||
gkey.data = ZSTR_VAL(key);
|
||||
gkey.size = ZSTR_LEN(key);
|
||||
|
||||
memset(&gval, 0, sizeof(gval));
|
||||
gval.data = (char *) val;
|
||||
gval.size = vallen;
|
||||
gval.data = ZSTR_VAL(val);
|
||||
gval.size = ZSTR_LEN(val);
|
||||
|
||||
if (!dba->dbp->put(dba->dbp, NULL, &gkey, &gval,
|
||||
mode == 1 ? DB_NOOVERWRITE : 0)) {
|
||||
|
|
|
@ -173,12 +173,12 @@ DBA_UPDATE_FUNC(db4)
|
|||
DBT gkey;
|
||||
|
||||
memset(&gkey, 0, sizeof(gkey));
|
||||
gkey.data = (char *) key;
|
||||
gkey.size = keylen;
|
||||
gkey.data = ZSTR_VAL(key);
|
||||
gkey.size = ZSTR_LEN(key);
|
||||
|
||||
memset(&gval, 0, sizeof(gval));
|
||||
gval.data = (char *) val;
|
||||
gval.size = vallen;
|
||||
gval.data = ZSTR_VAL(val);
|
||||
gval.size = ZSTR_LEN(val);
|
||||
|
||||
if (!dba->dbp->put(dba->dbp, NULL, &gkey, &gval,
|
||||
mode == 1 ? DB_NOOVERWRITE : 0)) {
|
||||
|
|
|
@ -101,18 +101,18 @@ DBA_UPDATE_FUNC(dbm)
|
|||
datum gval;
|
||||
datum gkey;
|
||||
|
||||
gkey.dptr = (char *) key;
|
||||
gkey.dsize = keylen;
|
||||
gkey.dptr = ZSTR_VAL(key);
|
||||
gkey.dsize = ZSTR_LEN(key);
|
||||
|
||||
if (mode == 1) { /* insert */
|
||||
gval = fetch(gkey);
|
||||
if(gval.dptr) {
|
||||
if (gval.dptr) {
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
gval.dptr = (char *) val;
|
||||
gval.dsize = vallen;
|
||||
gval.dptr = ZSTR_VAL(val);
|
||||
gval.dsize = ZSTR_LEN(val);
|
||||
|
||||
return (store(gkey, gval) == -1 ? FAILURE : SUCCESS);
|
||||
}
|
||||
|
|
|
@ -76,10 +76,10 @@ DBA_UPDATE_FUNC(flatfile)
|
|||
datum gval;
|
||||
datum gkey;
|
||||
|
||||
gkey.dptr = (char *) key;
|
||||
gkey.dsize = keylen;
|
||||
gval.dptr = (char *) val;
|
||||
gval.dsize = vallen;
|
||||
gkey.dptr = ZSTR_VAL(key);
|
||||
gkey.dsize = ZSTR_LEN(key);
|
||||
gval.dptr = ZSTR_VAL(val);
|
||||
gval.dsize = ZSTR_LEN(val);
|
||||
|
||||
switch(flatfile_store(dba, gkey, gval, mode==1 ? FLATFILE_INSERT : FLATFILE_REPLACE)) {
|
||||
case 0:
|
||||
|
@ -87,10 +87,12 @@ DBA_UPDATE_FUNC(flatfile)
|
|||
case 1:
|
||||
return FAILURE;
|
||||
case -1:
|
||||
php_error_docref1(NULL, key, E_WARNING, "Operation not possible");
|
||||
// TODO Check when this happens and confirm this can even happen
|
||||
php_error_docref(NULL, E_WARNING, "Operation not possible");
|
||||
return FAILURE;
|
||||
default:
|
||||
php_error_docref2(NULL, key, val, E_WARNING, "Unknown return value");
|
||||
// TODO Convert this to an assertion failure
|
||||
php_error_docref(NULL, E_WARNING, "Unknown return value");
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -91,10 +91,10 @@ DBA_UPDATE_FUNC(gdbm)
|
|||
datum gval;
|
||||
datum gkey;
|
||||
|
||||
gkey.dptr = (char *) key;
|
||||
gkey.dsize = keylen;
|
||||
gval.dptr = (char *) val;
|
||||
gval.dsize = vallen;
|
||||
gkey.dptr = ZSTR_VAL(key);
|
||||
gkey.dsize = ZSTR_LEN(key);
|
||||
gval.dptr = ZSTR_VAL(val);
|
||||
gval.dsize = ZSTR_LEN(val);
|
||||
|
||||
switch (gdbm_store(dba->dbf, gkey, gval, mode == 1 ? GDBM_INSERT : GDBM_REPLACE)) {
|
||||
case 0:
|
||||
|
@ -102,10 +102,12 @@ DBA_UPDATE_FUNC(gdbm)
|
|||
case 1:
|
||||
return FAILURE;
|
||||
case -1:
|
||||
php_error_docref2(NULL, key, val, E_WARNING, "%s", gdbm_strerror(gdbm_errno));
|
||||
// TODO Check when this happens and confirm this can even happen
|
||||
php_error_docref(NULL, E_WARNING, "%s", gdbm_strerror(gdbm_errno));
|
||||
return FAILURE;
|
||||
default:
|
||||
php_error_docref2(NULL, key, val, E_WARNING, "Unknown return value");
|
||||
// TODO Convert this to an assertion failure
|
||||
php_error_docref(NULL, E_WARNING, "Unknown return value");
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,9 +79,9 @@ DBA_UPDATE_FUNC(inifile)
|
|||
php_error_docref(NULL, E_WARNING, "No key specified");
|
||||
return 0;
|
||||
}
|
||||
ini_key = inifile_key_split((char*)key); /* keylen not needed here */
|
||||
ini_key = inifile_key_split(ZSTR_VAL(key)); /* keylen not needed here */
|
||||
|
||||
ini_val.value = val;
|
||||
ini_val.value = ZSTR_VAL(val);
|
||||
|
||||
if (mode == 1) {
|
||||
res = inifile_append(dba, &ini_key, &ini_val);
|
||||
|
@ -91,7 +91,8 @@ DBA_UPDATE_FUNC(inifile)
|
|||
inifile_key_free(&ini_key);
|
||||
switch(res) {
|
||||
case -1:
|
||||
php_error_docref1(NULL, key, E_WARNING, "Operation not possible");
|
||||
// TODO Check when this happens and confirm this can even happen
|
||||
php_error_docref(NULL, E_WARNING, "Operation not possible");
|
||||
return FAILURE;
|
||||
default:
|
||||
case 0:
|
||||
|
|
|
@ -152,19 +152,19 @@ DBA_UPDATE_FUNC(lmdb)
|
|||
|
||||
rc = mdb_txn_begin(LMDB_IT(env), NULL, 0, &LMDB_IT(txn));
|
||||
if (rc) {
|
||||
php_error_docref2(NULL, key, val, E_WARNING, "%s", mdb_strerror(rc));
|
||||
php_error_docref(NULL, E_WARNING, "%s", mdb_strerror(rc));
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
k.mv_size = keylen;
|
||||
k.mv_data = key;
|
||||
v.mv_size = vallen;
|
||||
v.mv_data = val;
|
||||
k.mv_size = ZSTR_LEN(key);
|
||||
k.mv_data = ZSTR_VAL(key);
|
||||
v.mv_size = ZSTR_LEN(val);
|
||||
v.mv_data = ZSTR_VAL(val);
|
||||
|
||||
rc = mdb_put(LMDB_IT(txn), LMDB_IT(dbi), &k, &v, mode == 1 ? MDB_NOOVERWRITE : 0);
|
||||
if (rc) {
|
||||
if (MDB_KEYEXIST != rc) {
|
||||
php_error_docref2(NULL, key, val, E_WARNING, "%s", mdb_strerror(rc));
|
||||
php_error_docref(NULL, E_WARNING, "%s", mdb_strerror(rc));
|
||||
}
|
||||
mdb_txn_abort(LMDB_IT(txn));
|
||||
return FAILURE;
|
||||
|
@ -172,7 +172,7 @@ DBA_UPDATE_FUNC(lmdb)
|
|||
|
||||
rc = mdb_txn_commit(LMDB_IT(txn));
|
||||
if (rc) {
|
||||
php_error_docref2(NULL, key, val, E_WARNING, "%s", mdb_strerror(rc));
|
||||
php_error_docref(NULL, E_WARNING, "%s", mdb_strerror(rc));
|
||||
mdb_txn_abort(LMDB_IT(txn));
|
||||
return FAILURE;
|
||||
}
|
||||
|
|
|
@ -82,10 +82,10 @@ DBA_UPDATE_FUNC(ndbm)
|
|||
datum gval;
|
||||
datum gkey;
|
||||
|
||||
gkey.dptr = (char *) key;
|
||||
gkey.dsize = keylen;
|
||||
gval.dptr = (char *) val;
|
||||
gval.dsize = vallen;
|
||||
gkey.dptr = ZSTR_VAL(key);
|
||||
gkey.dsize = ZSTR_LEN(key);
|
||||
gval.dptr = ZSTR_VAL(val);
|
||||
gval.dsize = ZSTR_LEN(val);
|
||||
|
||||
if(!dbm_store(info->dbf, gkey, gval, mode == 1 ? DBM_INSERT : DBM_REPLACE))
|
||||
return SUCCESS;
|
||||
|
|
|
@ -91,12 +91,12 @@ DBA_UPDATE_FUNC(qdbm)
|
|||
{
|
||||
dba_qdbm_data *dba = info->dbf;
|
||||
|
||||
if (dpput(dba->dbf, key, keylen, val, vallen, mode == 1 ? DP_DKEEP : DP_DOVER)) {
|
||||
if (dpput(dba->dbf, ZSTR_VAL(key), ZSTR_LEN(key), ZSTR_VAL(val), ZSTR_LEN(val), mode == 1 ? DP_DKEEP : DP_DOVER)) {
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
if (dpecode != DP_EKEEP) {
|
||||
php_error_docref2(NULL, key, val, E_WARNING, "%s", dperrmsg(dpecode));
|
||||
php_error_docref(NULL, E_WARNING, "%s", dperrmsg(dpecode));
|
||||
}
|
||||
|
||||
return FAILURE;
|
||||
|
|
|
@ -104,18 +104,18 @@ DBA_UPDATE_FUNC(tcadb)
|
|||
|
||||
if (mode == 1) {
|
||||
/* Insert */
|
||||
if (tcadbvsiz(dba->tcadb, key, keylen) > -1) {
|
||||
if (tcadbvsiz(dba->tcadb, ZSTR_VAL(key), ZSTR_LEN(key)) > -1) {
|
||||
return FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
result = tcadbput(dba->tcadb, key, keylen, val, vallen);
|
||||
result = tcadbput(dba->tcadb, ZSTR_VAL(key), ZSTR_LEN(key), ZSTR_VAL(val), ZSTR_LEN(val));
|
||||
|
||||
if (result) {
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
php_error_docref2(NULL, key, val, E_WARNING, "Error updating data");
|
||||
php_error_docref(NULL, E_WARNING, "Error updating data");
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ typedef struct dba_handler {
|
|||
zend_result (*open)(dba_info *, char **error);
|
||||
void (*close)(dba_info *);
|
||||
zend_string* (*fetch)(dba_info *, zend_string *, int);
|
||||
zend_result (*update)(dba_info *, char *, size_t, char *, size_t, int);
|
||||
zend_result (*update)(dba_info *, zend_string *, zend_string *, int);
|
||||
zend_result (*exists)(dba_info *, char *, size_t);
|
||||
zend_result (*delete)(dba_info *, char *, size_t);
|
||||
char* (*firstkey)(dba_info *, size_t *);
|
||||
|
@ -94,7 +94,7 @@ typedef struct dba_handler {
|
|||
#define DBA_FETCH_FUNC(x) \
|
||||
zend_string *dba_fetch_##x(dba_info *info, zend_string *key, int skip)
|
||||
#define DBA_UPDATE_FUNC(x) \
|
||||
zend_result dba_update_##x(dba_info *info, char *key, size_t keylen, char *val, size_t vallen, int mode)
|
||||
zend_result dba_update_##x(dba_info *info, zend_string *key, zend_string *val, int mode)
|
||||
#define DBA_EXISTS_FUNC(x) \
|
||||
zend_result dba_exists_##x(dba_info *info, char *key, size_t keylen)
|
||||
#define DBA_DELETE_FUNC(x) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue