X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftdb2%2Fopen.c;h=9aaa218a29c03153e26db7c774a81389bac2c3aa;hb=a2191edc0d1ea49850489189099cbe6f0850a22f;hp=6d930be14f6f4b14faeb44e0beae7dbc3a59b1e1;hpb=bb4d59ee1e914df9f8066e59a9c9a6604e581c40;p=ccan diff --git a/ccan/tdb2/open.c b/ccan/tdb2/open.c index 6d930be1..9aaa218a 100644 --- a/ccan/tdb2/open.c +++ b/ccan/tdb2/open.c @@ -107,6 +107,7 @@ static enum TDB_ERROR tdb_new_database(struct tdb_context *tdb, tdb->hash_priv); 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)); @@ -208,6 +209,7 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, 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); @@ -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; @@ -276,6 +278,16 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags, if (ecode != TDB_SUCCESS) { goto fail; } + if (name) { + tdb->name = strdup(name); + if (!tdb->name) { + ecode = tdb_logerr(tdb, TDB_ERR_OOM, + TDB_LOG_ERROR, + "tdb_open: failed to" + " allocate name"); + goto fail; + } + } tdb_convert(tdb, &hdr.hash_seed, sizeof(hdr.hash_seed)); tdb->hash_seed = hdr.hash_seed; tdb_ftable_init(tdb);