iRe-order some functions - 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 6a723da8930261861bc8eec788c0affc47ae8b3f /scm/dedup/commit/6a723da8930261861bc8eec788c0affc47ae8b3f.gph bitreich.org 70 1parent ccaebcb0909f2585ee339cce7f70cfbc4849b186 /scm/dedup/commit/ccaebcb0909f2585ee339cce7f70cfbc4849b186.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 21 Mar 2018 14:50:16 +0000 Err bitreich.org 70 i Err bitreich.org 70 iRe-order some functions Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 162 +++++++++++++++--------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 81 insertions(+), 81 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/dedup.c b/dedup.c /scm/dedup/file/dedup.c.gph bitreich.org 70 i@@ -100,6 +100,15 @@ dump_blk(struct blk *blk) Err bitreich.org 70 i fprintf(stderr, "blk->sz: %lld\n", (unsigned long long)blk->sz); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+void Err bitreich.org 70 i+str2bin(char *s, uint8_t *d) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ size_t i, len = strlen(s) / 2; Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (i = 0; i < len; i++, s += 2) Err bitreich.org 70 i+ sscanf(s, "%2hhx", &d[i]); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i ssize_t Err bitreich.org 70 i xread(int fd, void *buf, size_t nbytes) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -261,6 +270,42 @@ lookup_blk(struct blk *blk, uint64_t *blkidx) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i+extract(char *id, int fd) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ unsigned char md[SHA256_DIGEST_LENGTH]; Err bitreich.org 70 i+ uint64_t nblks, i; Err bitreich.org 70 i+ Err bitreich.org 70 i+ str2bin(id, md); Err bitreich.org 70 i+ nblks = storefile_nblks(); Err bitreich.org 70 i+ lseek(ifd, sizeof(enthdr), SEEK_SET); Err bitreich.org 70 i+ for (i = 0; i < enthdr.nents; i++) { Err bitreich.org 70 i+ struct ent *ent; Err bitreich.org 70 i+ Err bitreich.org 70 i+ ent = alloc_ent(); Err bitreich.org 70 i+ if (xread(ifd, ent, sizeof(*ent)) == 0) Err bitreich.org 70 i+ errx(1, "unexpected EOF"); Err bitreich.org 70 i+ ent = grow_ent(ent, ent->nblks); Err bitreich.org 70 i+ if (xread(ifd, ent->blks, Err bitreich.org 70 i+ ent->nblks * sizeof(ent->blks[0])) == 0) Err bitreich.org 70 i+ errx(1, "unexpected EOF"); Err bitreich.org 70 i+ if (memcmp(ent->md, md, sizeof(ent->md)) == 0) { Err bitreich.org 70 i+ uint64_t j; Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (j = 0; j < ent->nblks; j++) { Err bitreich.org 70 i+ struct blk blk; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (ent->blks[j] > nblks) Err bitreich.org 70 i+ errx(1, "index is corrupted"); Err bitreich.org 70 i+ read_blk(&blk, ent->blks[j]); Err bitreich.org 70 i+ xwrite(fd, blk.data, blk.sz); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ free(ent); Err bitreich.org 70 i+ } Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i dedup(int fd) Err bitreich.org 70 i { Err bitreich.org 70 i struct blk blk; Err bitreich.org 70 i@@ -307,24 +352,15 @@ dedup(int fd) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i-str2bin(char *s, uint8_t *d) Err bitreich.org 70 i-{ Err bitreich.org 70 i- size_t i, len = strlen(s) / 2; Err bitreich.org 70 i- Err bitreich.org 70 i- for (i = 0; i < len; i++, s += 2) Err bitreich.org 70 i- sscanf(s, "%2hhx", &d[i]); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-void Err bitreich.org 70 i-extract(char *id, int fd) Err bitreich.org 70 i+check(void) Err bitreich.org 70 i { Err bitreich.org 70 i- unsigned char md[SHA256_DIGEST_LENGTH]; Err bitreich.org 70 i- uint64_t nblks, i; Err bitreich.org 70 i+ uint64_t nblks, i, j; Err bitreich.org 70 i Err bitreich.org 70 i- str2bin(id, md); Err bitreich.org 70 i nblks = storefile_nblks(); Err bitreich.org 70 i lseek(ifd, sizeof(enthdr), SEEK_SET); Err bitreich.org 70 i for (i = 0; i < enthdr.nents; i++) { Err bitreich.org 70 i+ unsigned char md[SHA256_DIGEST_LENGTH]; Err bitreich.org 70 i+ SHA256_CTX ctx; Err bitreich.org 70 i struct ent *ent; Err bitreich.org 70 i Err bitreich.org 70 i ent = alloc_ent(); Err bitreich.org 70 i@@ -334,24 +370,46 @@ extract(char *id, int fd) Err bitreich.org 70 i if (xread(ifd, ent->blks, Err bitreich.org 70 i ent->nblks * sizeof(ent->blks[0])) == 0) Err bitreich.org 70 i errx(1, "unexpected EOF"); Err bitreich.org 70 i- if (memcmp(ent->md, md, sizeof(ent->md)) == 0) { Err bitreich.org 70 i- uint64_t j; Err bitreich.org 70 i Err bitreich.org 70 i- for (j = 0; j < ent->nblks; j++) { Err bitreich.org 70 i- struct blk blk; Err bitreich.org 70 i+ SHA256_Init(&ctx); Err bitreich.org 70 i+ for (j = 0; j < ent->nblks; j++) { Err bitreich.org 70 i+ struct blk blk; Err bitreich.org 70 i Err bitreich.org 70 i- if (ent->blks[j] > nblks) Err bitreich.org 70 i- errx(1, "index is corrupted"); Err bitreich.org 70 i- read_blk(&blk, ent->blks[j]); Err bitreich.org 70 i- xwrite(fd, blk.data, blk.sz); Err bitreich.org 70 i- } Err bitreich.org 70 i- break; Err bitreich.org 70 i+ if (ent->blks[j] > nblks) Err bitreich.org 70 i+ errx(1, "index is corrupted"); Err bitreich.org 70 i+ read_blk(&blk, ent->blks[j]); Err bitreich.org 70 i+ SHA256_Update(&ctx, blk.data, blk.sz); Err bitreich.org 70 i } Err bitreich.org 70 i+ SHA256_Final(md, &ctx); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (memcmp(ent->md, md, sizeof(ent->md)) != 0) Err bitreich.org 70 i+ errx(1, "hash mismatch"); Err bitreich.org 70 i+ Err bitreich.org 70 i free(ent); Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i+list(void) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ uint64_t i; Err bitreich.org 70 i+ Err bitreich.org 70 i+ lseek(ifd, sizeof(enthdr), SEEK_SET); Err bitreich.org 70 i+ for (i = 0; i < enthdr.nents; i++) { Err bitreich.org 70 i+ struct ent ent; Err bitreich.org 70 i+ size_t i; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (xread(ifd, &ent, sizeof(ent)) == 0) Err bitreich.org 70 i+ errx(1, "unexpected EOF"); Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (i = 0; i < sizeof(ent.md); i++) Err bitreich.org 70 i+ printf("%02x", ent.md[i]); Err bitreich.org 70 i+ putchar('\n'); Err bitreich.org 70 i+ lseek(ifd, ent.nblks * sizeof(ent.blks[0]), SEEK_CUR); Err bitreich.org 70 i+ } Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i rebuild_cache(void) Err bitreich.org 70 i { Err bitreich.org 70 i uint64_t nblks, i; Err bitreich.org 70 i@@ -437,64 +495,6 @@ term(void) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i-check(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint64_t nblks, i, j; Err bitreich.org 70 i- Err bitreich.org 70 i- nblks = storefile_nblks(); Err bitreich.org 70 i- lseek(ifd, sizeof(enthdr), SEEK_SET); Err bitreich.org 70 i- for (i = 0; i < enthdr.nents; i++) { Err bitreich.org 70 i- unsigned char md[SHA256_DIGEST_LENGTH]; Err bitreich.org 70 i- SHA256_CTX ctx; Err bitreich.org 70 i- struct ent *ent; Err bitreich.org 70 i- Err bitreich.org 70 i- ent = alloc_ent(); Err bitreich.org 70 i- if (xread(ifd, ent, sizeof(*ent)) == 0) Err bitreich.org 70 i- errx(1, "unexpected EOF"); Err bitreich.org 70 i- ent = grow_ent(ent, ent->nblks); Err bitreich.org 70 i- if (xread(ifd, ent->blks, Err bitreich.org 70 i- ent->nblks * sizeof(ent->blks[0])) == 0) Err bitreich.org 70 i- errx(1, "unexpected EOF"); Err bitreich.org 70 i- Err bitreich.org 70 i- SHA256_Init(&ctx); Err bitreich.org 70 i- for (j = 0; j < ent->nblks; j++) { Err bitreich.org 70 i- struct blk blk; Err bitreich.org 70 i- Err bitreich.org 70 i- if (ent->blks[j] > nblks) Err bitreich.org 70 i- errx(1, "index is corrupted"); Err bitreich.org 70 i- read_blk(&blk, ent->blks[j]); Err bitreich.org 70 i- SHA256_Update(&ctx, blk.data, blk.sz); Err bitreich.org 70 i- } Err bitreich.org 70 i- SHA256_Final(md, &ctx); Err bitreich.org 70 i- Err bitreich.org 70 i- if (memcmp(ent->md, md, sizeof(ent->md)) != 0) Err bitreich.org 70 i- errx(1, "hash mismatch"); Err bitreich.org 70 i- Err bitreich.org 70 i- free(ent); Err bitreich.org 70 i- } Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-void Err bitreich.org 70 i-list(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- uint64_t i; Err bitreich.org 70 i- Err bitreich.org 70 i- lseek(ifd, sizeof(enthdr), SEEK_SET); Err bitreich.org 70 i- for (i = 0; i < enthdr.nents; i++) { Err bitreich.org 70 i- struct ent ent; Err bitreich.org 70 i- size_t i; Err bitreich.org 70 i- Err bitreich.org 70 i- if (xread(ifd, &ent, sizeof(ent)) == 0) Err bitreich.org 70 i- errx(1, "unexpected EOF"); Err bitreich.org 70 i- Err bitreich.org 70 i- for (i = 0; i < sizeof(ent.md); i++) Err bitreich.org 70 i- printf("%02x", ent.md[i]); Err bitreich.org 70 i- putchar('\n'); Err bitreich.org 70 i- lseek(ifd, ent.nblks * sizeof(ent.blks[0]), SEEK_CUR); Err bitreich.org 70 i- } Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i-void Err bitreich.org 70 i usage(void) Err bitreich.org 70 i { Err bitreich.org 70 i fprintf(stderr, "usage: %s [-clv] [-e id] [file]\n", argv0); Err bitreich.org 70 .