Actually complete 3662c2b...
[jra/samba/.git] / source3 / lib / dbwrap_rbt.c
index 633b695b52f4916b6c606b199c88f5125ba8870d..6e09627223c84a5b8726e8ca20b0a7a2e60af971 100644 (file)
@@ -18,9 +18,9 @@
 */
 
 #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;
@@ -42,7 +42,7 @@ struct db_rbt_node {
         * target for offsetof()
         */
 
-       char data[];
+       char data[1];
 };
 
 /*
@@ -243,7 +243,8 @@ static struct db_record *db_rbt_fetch_locked(struct db_context *db_ctx,
         * 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) {
                /*
@@ -258,7 +259,7 @@ static struct db_record *db_rbt_fetch_locked(struct db_context *db_ctx,
        }
 
        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;
@@ -351,6 +352,14 @@ static int db_rbt_get_seqnum(struct db_context *db)
        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;
@@ -373,6 +382,9 @@ struct db_context *db_open_rbt(TALLOC_CTX *mem_ctx)
        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;
 }