diff options
author | Andrew Tridgell <tridge@samba.org> | 2004-03-28 01:38:42 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2004-03-28 01:38:42 +0000 |
commit | ad15f42b6d50eff9199aef7497d24b2c9167fea1 (patch) | |
tree | 826666a3e6f9fc00921f03611666b15b3988e03d /source4/lib | |
parent | 2fe43ec90f6c76ced5e697f4a26630bd72accdc5 (diff) | |
download | samba-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')
-rw-r--r-- | source4/lib/tdb/tdb.c | 6 | ||||
-rw-r--r-- | source4/lib/tdb/tdb.h | 1 |
2 files changed, 7 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; diff --git a/source4/lib/tdb/tdb.h b/source4/lib/tdb/tdb.h index b3a28b7440..b7c51b5519 100644 --- a/source4/lib/tdb/tdb.h +++ b/source4/lib/tdb/tdb.h @@ -29,6 +29,7 @@ extern "C" { /* flags to tdb_store() */ #define TDB_REPLACE 1 #define TDB_INSERT 2 +#define TDB_MODIFY 3 /* flags for tdb_open() */ #define TDB_DEFAULT 0 /* just a readability place holder */ |