Break out snaphdr loading - dedup - deduplicating backup program HTML git clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit 0dbd594d0b2c51df4b6cfe6f837322b002ccfee2 DIR parent 9817f61535da145c316a4bb5861ed913bc16b4cf HTML Author: sin <sin@2f30.org> Date: Tue, 26 Feb 2019 11:16:14 +0000 Break out snaphdr loading Diffstat: M dedup.c | 41 +++++++++++++++++-------------- 1 file changed, 23 insertions(+), 18 deletions(-) --- DIR diff --git a/dedup.c b/dedup.c @@ -456,10 +456,31 @@ load_cache(void) } static void -init(void) +load_snaphdr(void) { + uint8_t maj, min; struct stat sb; + if (fstat(ifd, &sb) < 0) + err(1, "fstat %s", SNAPSF); + if (sb.st_size == 0) { + snaphdr.flags = (VER_MAJ << 8) | VER_MIN; + snaphdr.st.min_blk_size = comp_size(BLKSIZE_MAX); + write_snaphdr(ifd, &snaphdr); + return; + } + + read_snaphdr(ifd, &snaphdr); + min = snaphdr.flags & 0xff; + maj = (snaphdr.flags >> 8) & 0xff; + if (maj != VER_MAJ || min != VER_MIN) + errx(1, "format version mismatch: expected %u.%u but got %u.%u", + VER_MAJ, VER_MIN, maj, min); +} + +static void +init(void) +{ ifd = open(SNAPSF, O_RDWR | O_CREAT, 0600); if (ifd < 0) err(1, "open %s", SNAPSF); @@ -477,23 +498,7 @@ init(void) flock(cfd, LOCK_NB | LOCK_EX) < 0) errx(1, "busy lock"); - if (fstat(ifd, &sb) < 0) - err(1, "fstat %s", SNAPSF); - if (sb.st_size != 0) { - uint8_t maj, min; - - read_snaphdr(ifd, &snaphdr); - min = snaphdr.flags & 0xff; - maj = (snaphdr.flags >> 8) & 0xff; - - if (maj != VER_MAJ || min != VER_MIN) - errx(1, "expected snapshot format version %u.%u but got %u.%u", - VER_MAJ, VER_MIN, maj, min); - } else { - snaphdr.flags = (VER_MAJ << 8) | VER_MIN; - snaphdr.st.min_blk_size = comp_size(BLKSIZE_MAX); - write_snaphdr(ifd, &snaphdr); - } + load_snaphdr(); cache = alloc_cache(); if (cache_nr_entries() != 0)