dbwrap: add dbwrap_purge[_bystring]
authorMichael Adam <obnox@samba.org>
Wed, 24 Feb 2016 23:56:14 +0000 (00:56 +0100)
committerMichael Adam <obnox@samba.org>
Tue, 1 Mar 2016 20:50:24 +0000 (21:50 +0100)
Variants of dbrwap_delete[_bysrting] that treats NOT FOUND
as success.

Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
lib/dbwrap/dbwrap.h
lib/dbwrap/dbwrap_util.c

index 5e13a595db2471445b954fd94ab48b11619f48cb..2eded049c1a92fa09541008e6260db61b1c84163 100644 (file)
@@ -94,6 +94,8 @@ const char *dbwrap_name(struct db_context *db);
 
 /* The following definitions come from lib/dbwrap_util.c  */
 
+NTSTATUS dbwrap_purge(struct db_context *db, TDB_DATA key);
+NTSTATUS dbwrap_purge_bystring(struct db_context *db, const char *key);
 NTSTATUS dbwrap_delete_bystring(struct db_context *db, const char *key);
 NTSTATUS dbwrap_store_bystring(struct db_context *db, const char *key,
                               TDB_DATA data, int flags);
index 5118fb788f391b18dc892023cff39ee865f3527c..22f910de992534871de7d62f4b44c3c48db3a2df 100644 (file)
@@ -528,6 +528,23 @@ NTSTATUS dbwrap_trans_traverse(struct db_context *db,
        return dbwrap_trans_do(db, dbwrap_trans_traverse_action, &ctx);
 }
 
+NTSTATUS dbwrap_purge(struct db_context *db, TDB_DATA key)
+{
+       NTSTATUS status;
+
+       status = dbwrap_delete(db, key);
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) {
+               status = NT_STATUS_OK;
+       }
+
+       return status;
+}
+
+NTSTATUS dbwrap_purge_bystring(struct db_context *db, const char *key)
+{
+       return dbwrap_purge(db, string_term_tdb_data(key));
+}
+
 NTSTATUS dbwrap_delete_bystring(struct db_context *db, const char *key)
 {
        return dbwrap_delete(db, string_term_tdb_data(key));