s3:dbwrap: add specific dbwrap_wipe() implementation to dbwrap_rbt
authorGregor Beck <gbeck@sernet.de>
Tue, 16 Aug 2011 12:55:30 +0000 (14:55 +0200)
committerMichael Adam <obnox@samba.org>
Tue, 11 Oct 2011 13:33:21 +0000 (15:33 +0200)
Signed-off-by: Michael Adam <obnox@samba.org>
source3/lib/dbwrap_rbt.c

index 70523a8b79a76d0f4fe797429a2ebec7aa399fab..05826a1c9ad697a5415ad17ef06795360b2cd394 100644 (file)
@@ -285,6 +285,19 @@ static struct db_record *db_rbt_fetch_locked(struct db_context *db_ctx,
        return result;
 }
 
+static int db_rbt_wipe(struct db_context *db)
+{
+       struct db_rbt_ctx *old_ctx = talloc_get_type_abort(
+               db->private_data, struct db_rbt_ctx);
+       struct db_rbt_ctx *new_ctx = TALLOC_ZERO_P(db, struct db_rbt_ctx);
+       if (new_ctx == NULL) {
+               return -1;
+       }
+       db->private_data = new_ctx;
+       talloc_free(old_ctx);
+       return 0;
+}
+
 static bool db_rbt_search_internal(struct db_context *db, TDB_DATA key, TDB_DATA *data)
 {
        struct db_rbt_ctx *ctx = talloc_get_type_abort(
@@ -432,6 +445,7 @@ struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx)
        result->transaction_commit = db_rbt_trans_dummy;
        result->transaction_cancel = db_rbt_trans_dummy;
        result->exists = db_rbt_exists;
+       result->wipe = db_rbt_wipe;
 
        return result;
 }