summaryrefslogtreecommitdiff
path: root/source4/lib/tdb/tdb.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-03-28 01:38:42 +0000
committerAndrew Tridgell <tridge@samba.org>2004-03-28 01:38:42 +0000
commitad15f42b6d50eff9199aef7497d24b2c9167fea1 (patch)
tree826666a3e6f9fc00921f03611666b15b3988e03d /source4/lib/tdb/tdb.c
parent2fe43ec90f6c76ced5e697f4a26630bd72accdc5 (diff)
downloadsamba-ad15f42b6d50eff9199aef7497d24b2c9167fea1.tar.gz
samba-ad15f42b6d50eff9199aef7497d24b2c9167fea1.tar.bz2
samba-ad15f42b6d50eff9199aef7497d24b2c9167fea1.zip
added a TDB_MODIFY flag to tdb_store() that says "if the record
doesn't exist then fail the store" (This used to be commit 6aec1457f8772cf81b88a0a00cc2ad7c16cd0d87)
Diffstat (limited to 'source4/lib/tdb/tdb.c')
-rw-r--r--source4/lib/tdb/tdb.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/source4/lib/tdb/tdb.c b/source4/lib/tdb/tdb.c
index 8fbf128914..5f57f05778 100644
--- a/source4/lib/tdb/tdb.c
+++ b/source4/lib/tdb/tdb.c
@@ -1479,6 +1479,12 @@ int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag)
/* first try in-place update, on modify or replace. */
if (tdb_update_hash(tdb, key, hash, dbuf) == 0)
goto out;
+ if (tdb->ecode == TDB_ERR_NOEXIST &&
+ flag == TDB_MODIFY) {
+ /* if the record doesn't exist and we are in TDB_MODIFY mode then
+ we should fail the store */
+ goto fail;
+ }
}
/* reset the error code potentially set by the tdb_update() */
tdb->ecode = TDB_SUCCESS;