]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/open.c
tdb2: rename internal hashfn and logfn to hash_fn and log_fn.
[ccan] / ccan / tdb2 / open.c
index 473dc98b7e4c68d78da0be268c5434ab70042b3a..56514ae533a4c925635e5df350ad690bff34710d 100644 (file)
@@ -101,12 +101,13 @@ static enum TDB_ERROR tdb_new_database(struct tdb_context *tdb,
        else
                newdb.hdr.hash_seed = random_number(tdb);
        newdb.hdr.hash_test = TDB_HASH_MAGIC;
-       newdb.hdr.hash_test = tdb->khash(&newdb.hdr.hash_test,
-                                        sizeof(newdb.hdr.hash_test),
-                                        newdb.hdr.hash_seed,
-                                        tdb->hash_priv);
+       newdb.hdr.hash_test = tdb->hash_fn(&newdb.hdr.hash_test,
+                                          sizeof(newdb.hdr.hash_test),
+                                          newdb.hdr.hash_seed,
+                                          tdb->hash_data);
        newdb.hdr.recovery = 0;
        newdb.hdr.features_used = newdb.hdr.features_offered = TDB_FEATURE_MASK;
+       newdb.hdr.seqnum = 0;
        memset(newdb.hdr.reserved, 0, sizeof(newdb.hdr.reserved));
        /* Initial hashes are empty. */
        memset(newdb.hdr.hashtable, 0, sizeof(newdb.hdr.hashtable));
@@ -204,10 +205,11 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags,
        tdb->name = NULL;
        tdb->direct_access = 0;
        tdb->flags = tdb_flags;
-       tdb->logfn = NULL;
+       tdb->log_fn = NULL;
        tdb->transaction = NULL;
        tdb->stats = NULL;
        tdb->access = NULL;
+       tdb->last_error = TDB_SUCCESS;
        tdb->file = NULL;
        tdb_hash_init(tdb);
        tdb_io_init(tdb);
@@ -215,12 +217,12 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags,
        while (attr) {
                switch (attr->base.attr) {
                case TDB_ATTRIBUTE_LOG:
-                       tdb->logfn = attr->log.log_fn;
-                       tdb->log_private = attr->log.log_private;
+                       tdb->log_fn = attr->log.fn;
+                       tdb->log_data = attr->log.data;
                        break;
                case TDB_ATTRIBUTE_HASH:
-                       tdb->khash = attr->hash.hash_fn;
-                       tdb->hash_priv = attr->hash.hash_private;
+                       tdb->hash_fn = attr->hash.fn;
+                       tdb->hash_data = attr->hash.data;
                        break;
                case TDB_ATTRIBUTE_SEED:
                        seed = &attr->seed;
@@ -243,7 +245,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags,
        }
 
        if (tdb_flags & ~(TDB_INTERNAL | TDB_NOLOCK | TDB_NOMMAP | TDB_CONVERT
-                         | TDB_NOSYNC)) {
+                         | TDB_NOSYNC | TDB_SEQNUM)) {
                ecode = tdb_logerr(tdb, TDB_ERR_EINVAL, TDB_LOG_USE_ERROR,
                                   "tdb_open: unknown flags %u", tdb_flags);
                goto fail;
@@ -452,9 +454,9 @@ fail_errno:
 #ifdef TDB_TRACE
        close(tdb->tracefd);
 #endif
-       free((char *)tdb->name);
+       free(cast_const(char *, tdb->name));
        if (tdb->file) {
-               tdb_unlock_all(tdb);
+               tdb_lock_cleanup(tdb);
                if (--tdb->file->refcnt == 0) {
                        assert(tdb->file->num_lockrecs == 0);
                        if (tdb->file->map_ptr) {
@@ -493,11 +495,11 @@ int tdb_close(struct tdb_context *tdb)
                else
                        tdb_munmap(tdb->file);
        }
-       free((char *)tdb->name);
+       free(cast_const(char *, tdb->name));
        if (tdb->file) {
                struct tdb_file **i;
 
-               tdb_unlock_all(tdb);
+               tdb_lock_cleanup(tdb);
                if (--tdb->file->refcnt == 0) {
                        ret = close(tdb->file->fd);