tdb2: unify tdb1_append into tdb_append
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)
Switch on the TDB_VERSION1 flag.

ccan/tdb2/private.h
ccan/tdb2/tdb.c
ccan/tdb2/tdb1.h
ccan/tdb2/tdb1_tdb.c
ccan/tdb2/test/run-tdb1-zero-append.c

index b41c89a731cda4c5bd835ebca6ae5e7e6625d346..1c307fc3c5313c4c13c37c7098554907f4d68e64 100644 (file)
@@ -650,6 +650,7 @@ int tdb1_transaction_cancel(struct tdb_context *tdb);
 int tdb1_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
 enum TDB_ERROR tdb1_fetch(struct tdb_context *tdb, TDB_DATA key,
                          TDB_DATA *data);
 int tdb1_store(struct tdb_context *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
 enum TDB_ERROR tdb1_fetch(struct tdb_context *tdb, TDB_DATA key,
                          TDB_DATA *data);
+int tdb1_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf);
 
 /* tdb.c: */
 enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb,
 
 /* tdb.c: */
 enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb,
index f02844e7c6fff6cdf00a760a1ce62f1cd803a1a4..9f3da1c01ff3363663cb14c4c6cca430367a0faa 100644 (file)
@@ -183,6 +183,12 @@ enum TDB_ERROR tdb_append(struct tdb_context *tdb,
        struct tdb_data new_dbuf;
        enum TDB_ERROR ecode;
 
        struct tdb_data new_dbuf;
        enum TDB_ERROR ecode;
 
+       if (tdb->flags & TDB_VERSION1) {
+               if (tdb1_append(tdb, key, dbuf) == -1)
+                       return tdb->last_error;
+               return TDB_SUCCESS;
+       }
+
        off = find_and_lock(tdb, key, F_WRLCK, &h, &rec, NULL);
        if (TDB_OFF_IS_ERR(off)) {
                return tdb->last_error = off;
        off = find_and_lock(tdb, key, F_WRLCK, &h, &rec, NULL);
        if (TDB_OFF_IS_ERR(off)) {
                return tdb->last_error = off;
index e3204283853c516dfab63a8d9202faee2e90a3f1..62b94da44afd05ebe0a2f90f0303b8cf2c1a1ce8 100644 (file)
@@ -47,8 +47,6 @@ int tdb1_parse_record(struct tdb_context *tdb, TDB_DATA key,
 
 int tdb1_delete(struct tdb_context *tdb, TDB_DATA key);
 
 
 int tdb1_delete(struct tdb_context *tdb, TDB_DATA key);
 
-int tdb1_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf);
-
 TDB_DATA tdb1_firstkey(struct tdb_context *tdb);
 
 TDB_DATA tdb1_nextkey(struct tdb_context *tdb, TDB_DATA key);
 TDB_DATA tdb1_firstkey(struct tdb_context *tdb);
 
 TDB_DATA tdb1_nextkey(struct tdb_context *tdb, TDB_DATA key);
index bba16338e97ec937dd66d1b41e1ac0e02eb96003..895a8c2ae59218ab43778905df0787c31a96b104 100644 (file)
@@ -627,6 +627,8 @@ int tdb1_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf)
        TDB_DATA dbuf;
        int ret = -1;
 
        TDB_DATA dbuf;
        int ret = -1;
 
+       assert(tdb->flags & TDB_VERSION1);
+
        /* find which hash bucket it is in */
        hash = tdb_hash(tdb, key.dptr, key.dsize);
        if (tdb1_lock(tdb, TDB1_BUCKET(hash), F_WRLCK) == -1)
        /* find which hash bucket it is in */
        hash = tdb_hash(tdb, key.dptr, key.dsize);
        if (tdb1_lock(tdb, TDB1_BUCKET(hash), F_WRLCK) == -1)
index 560b5bc8dd7ce336ce7e60eb3f6c7ea6adbd2832..fdc9cdce35bb5370a5901b619cad4e81675ee713 100644 (file)
@@ -25,8 +25,8 @@ int main(int argc, char *argv[])
        data.dptr = (void *)"world";
        data.dsize = 0;
 
        data.dptr = (void *)"world";
        data.dsize = 0;
 
-       ok1(tdb1_append(tdb, key, data) == 0);
-       ok1(tdb1_append(tdb, key, data) == 0);
+       ok1(tdb_append(tdb, key, data) == TDB_SUCCESS);
+       ok1(tdb_append(tdb, key, data) == TDB_SUCCESS);
        ok1(tdb_fetch(tdb, key, &data) == TDB_SUCCESS);
        ok1(data.dsize == 0);
        free(data.dptr);
        ok1(tdb_fetch(tdb, key, &data) == TDB_SUCCESS);
        ok1(data.dsize == 0);
        free(data.dptr);