iEncode file format version in the bottom 16 bits of flags - dedup - deduplicating backup program Err bitreich.org 70 hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/ bitreich.org 70 1Log /scm/dedup/log.gph bitreich.org 70 1Files /scm/dedup/files.gph bitreich.org 70 1Refs /scm/dedup/refs.gph bitreich.org 70 1Tags /scm/dedup/tag bitreich.org 70 1README /scm/dedup/file/README.gph bitreich.org 70 1LICENSE /scm/dedup/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 9eb852d729dd0e58a51d453beb76b3fb3d420084 /scm/dedup/commit/9eb852d729dd0e58a51d453beb76b3fb3d420084.gph bitreich.org 70 1parent e45da8785b9e8436fb747f023743c910b06f36b5 /scm/dedup/commit/e45da8785b9e8436fb747f023743c910b06f36b5.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Mon, 18 Feb 2019 19:24:24 +0000 Err bitreich.org 70 i Err bitreich.org 70 iEncode file format version in the bottom 16 bits of flags Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M TODO | 1 - Err bitreich.org 70 i M dedup.c | 19 ++++++++++++++++++- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 18 insertions(+), 2 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/TODO b/TODO /scm/dedup/file/TODO.gph bitreich.org 70 i@@ -1,4 +1,3 @@ Err bitreich.org 70 i endianness agnostic Err bitreich.org 70 i-version field in entry header Err bitreich.org 70 i file locking Err bitreich.org 70 i overflow checks Err bitreich.org 70 1diff --git a/dedup.c b/dedup.c /scm/dedup/file/dedup.c.gph bitreich.org 70 i@@ -23,6 +23,10 @@ Err bitreich.org 70 i #define MSGSIZE 256 Err bitreich.org 70 i #define MDSIZE SHA256_DIGEST_LENGTH Err bitreich.org 70 i Err bitreich.org 70 i+/* file format version */ Err bitreich.org 70 i+#define VER_MIN 0 Err bitreich.org 70 i+#define VER_MAJ 0 Err bitreich.org 70 i+ Err bitreich.org 70 i #define ROTL(x, y) (((x) << (y)) | ((x) >> (32 - (y)))) Err bitreich.org 70 i Err bitreich.org 70 i enum { Err bitreich.org 70 i@@ -676,8 +680,21 @@ init(void) Err bitreich.org 70 i Err bitreich.org 70 i if (fstat(ifd, &sb) < 0) Err bitreich.org 70 i err(1, "fstat %s", INDEXF); Err bitreich.org 70 i- if (sb.st_size != 0) Err bitreich.org 70 i+ if (sb.st_size != 0) { Err bitreich.org 70 i+ uint8_t maj, min; Err bitreich.org 70 i+ Err bitreich.org 70 i xread(ifd, &enthdr, sizeof(enthdr)); Err bitreich.org 70 i+ min = enthdr.flags & 0xff; Err bitreich.org 70 i+ maj = (enthdr.flags >> 8) & 0xff; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (maj != VER_MAJ || min != VER_MIN) Err bitreich.org 70 i+ errx(1, "expected index format version %u.%u but got %u.%u", Err bitreich.org 70 i+ VER_MAJ, VER_MIN, maj, min); Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ enthdr.flags = (VER_MAJ << 8) | VER_MIN; Err bitreich.org 70 i+ xwrite(ifd, &enthdr, sizeof(enthdr)); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i if (verbose) { Err bitreich.org 70 i fprintf(stderr, "original size: %llu bytes\n", Err bitreich.org 70 i (unsigned long long)enthdr.st.orig_size); Err bitreich.org 70 .