void *private_data),
void *private_data);
int (*exists)(struct db_context *db,TDB_DATA key);
+ int (*wipe)(struct db_context *db);
void *private_data;
bool persistent;
};
TDB_DATA data, int flags);
TDB_DATA dbwrap_fetch(struct db_context *db, TALLOC_CTX *mem_ctx,
TDB_DATA key);
+int dbwrap_wipe(struct db_context *db);
bool dbwrap_exists(struct db_context *db, TDB_DATA key);
NTSTATUS dbwrap_delete_bystring(struct db_context *db, const char *key);
NTSTATUS dbwrap_store_bystring(struct db_context *db, const char *key,
}
}
+static int delete_record(struct db_record *rec, void *data)
+{
+ NTSTATUS status = rec->delete_rec(rec);
+ return NT_STATUS_IS_OK(status) ? 0 : -1;
+}
+
+/*
+ * Fall back using traverse and delete if no genuine wipe operation is provided
+ */
+static int dbwrap_fallback_wipe(struct db_context *db)
+{
+ NTSTATUS status = dbwrap_trans_traverse(db, &delete_record, NULL);
+ return NT_STATUS_IS_OK(status) ? 0 : -1;
+}
+
/*
* Fall back using fetch if no genuine parse operation is provided
*/
result->parse_record = dbwrap_fallback_parse_record;
}
+ if ((result != NULL) && (result->wipe == NULL)) {
+ result->wipe = dbwrap_fallback_wipe;
+ }
+
return result;
}
return result;
}
+int dbwrap_wipe(struct db_context *db) {
+ return db->wipe(db);
+}
+
bool dbwrap_exists(struct db_context *db, TDB_DATA key)
{
int result;