From 0a97f2dc1df96702dd88d4be169f43dd186c2bfa Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 23 Dec 2010 12:43:54 +1030 Subject: [PATCH] tdb: combine dead_space helper from summary.c and check.c Remove code duplication, and allow unit tests (which #include both). --- ccan/tdb/check.c | 4 ++-- ccan/tdb/summary.c | 17 +---------------- ccan/tdb/tdb_private.h | 1 + 3 files changed, 4 insertions(+), 18 deletions(-) diff --git a/ccan/tdb/check.c b/ccan/tdb/check.c index fa003b79..4fbbb92c 100644 --- a/ccan/tdb/check.c +++ b/ccan/tdb/check.c @@ -309,7 +309,7 @@ static bool tdb_check_free_record(struct tdb_context *tdb, } /* Slow, but should be very rare. */ -static size_t dead_space(struct tdb_context *tdb, tdb_off_t off) +size_t tdb_dead_space(struct tdb_context *tdb, tdb_off_t off) { size_t len; @@ -407,7 +407,7 @@ int tdb_check(struct tdb_context *tdb, found_recovery = true; break; } - dead = dead_space(tdb, off); + dead = tdb_dead_space(tdb, off); if (dead < sizeof(rec)) goto corrupt; diff --git a/ccan/tdb/summary.c b/ccan/tdb/summary.c index 3404a414..cb6dd6ee 100644 --- a/ccan/tdb/summary.c +++ b/ccan/tdb/summary.c @@ -37,21 +37,6 @@ #define HISTO_WIDTH 70 #define HISTO_HEIGHT 20 -/* Slow, but should be very rare. */ -static size_t dead_space(struct tdb_context *tdb, tdb_off_t off) -{ - size_t len; - - for (len = 0; off + len < tdb->map_size; len++) { - char c; - if (tdb->methods->tdb_read(tdb, off, &c, 1, 0)) - return 0; - if (c != 0 && c != 0x42) - break; - } - return len; -} - static size_t get_hash_length(struct tdb_context *tdb, unsigned int i) { tdb_off_t rec_ptr; @@ -126,7 +111,7 @@ char *tdb_summary(struct tdb_context *tdb, enum tdb_summary_flags flags) case TDB_RECOVERY_INVALID_MAGIC: case 0x42424242: unc++; - rec.rec_len = dead_space(tdb, off) - sizeof(rec); + rec.rec_len = tdb_dead_space(tdb, off) - sizeof(rec); /* Fall through */ case TDB_DEAD_MAGIC: tally_add(dead, rec.rec_len); diff --git a/ccan/tdb/tdb_private.h b/ccan/tdb/tdb_private.h index 7482c84f..babf01bd 100644 --- a/ccan/tdb/tdb_private.h +++ b/ccan/tdb/tdb_private.h @@ -304,4 +304,5 @@ int tdb_rec_free_read(struct tdb_context *tdb, tdb_off_t off, void tdb_header_hash(struct tdb_context *tdb, uint32_t *magic1_hash, uint32_t *magic2_hash); unsigned int tdb_old_hash(TDB_DATA *key); +size_t tdb_dead_space(struct tdb_context *tdb, tdb_off_t off); #endif -- 2.39.2