*/
#include "includes.h"
-#include "rbtree.h"
+#include "../lib/util/rbtree.h"
-#define ALIGN(_size_) (((_size_)+15)&~15)
+#define DBWRAP_RBT_ALIGN(_size_) (((_size_)+15)&~15)
struct db_rbt_ctx {
struct rb_root tree;
* target for offsetof()
*/
- char data[];
+ char data[1];
};
/*
* off.
*/
- size = ALIGN(sizeof(struct db_record)) + sizeof(struct db_rbt_rec);
+ size = DBWRAP_RBT_ALIGN(sizeof(struct db_record))
+ + sizeof(struct db_rbt_rec);
if (!found) {
/*
}
rec_priv = (struct db_rbt_rec *)
- ((char *)result + ALIGN(sizeof(struct db_record)));
+ ((char *)result + DBWRAP_RBT_ALIGN(sizeof(struct db_record)));
rec_priv->db_ctx = ctx;
result->store = db_rbt_store;
return 0;
}
+static int db_rbt_trans_dummy(struct db_context *db)
+{
+ /*
+ * Transactions are pretty pointless in-memory, just return success.
+ */
+ return 0;
+}
+
struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx)
{
struct db_context *result;
result->traverse = db_rbt_traverse;
result->traverse_read = db_rbt_traverse;
result->get_seqnum = db_rbt_get_seqnum;
+ result->transaction_start = db_rbt_trans_dummy;
+ result->transaction_commit = db_rbt_trans_dummy;
+ result->transaction_cancel = db_rbt_trans_dummy;
return result;
}