iParse input/output file from command line as well - 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 9ff8b1f2c9ac45e6b1f3184278a1faa1c0362e9f /scm/dedup/commit/9ff8b1f2c9ac45e6b1f3184278a1faa1c0362e9f.gph bitreich.org 70 1parent bf294b1ffe58f2412d592f2e099b73ce0c7daa83 /scm/dedup/commit/bf294b1ffe58f2412d592f2e099b73ce0c7daa83.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Wed, 21 Mar 2018 14:04:43 +0000 Err bitreich.org 70 i Err bitreich.org 70 iParse input/output file from command line as well Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dedup.c | 19 ++++++++++++++----- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 14 insertions(+), 5 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@@ -343,7 +343,7 @@ extract(char *id, int fd) 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(1, blk.data, blk.sz); 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@@ -494,7 +494,7 @@ list(void) 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]\n", argv0); Err bitreich.org 70 i+ fprintf(stderr, "usage: %s [-clv] [-e id] [file]\n", argv0); Err bitreich.org 70 i exit(1); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -502,7 +502,7 @@ int Err bitreich.org 70 i main(int argc, char *argv[]) Err bitreich.org 70 i { Err bitreich.org 70 i char *id = NULL; Err bitreich.org 70 i- int lflag = 0, cflag = 0; Err bitreich.org 70 i+ int fd = -1, lflag = 0, cflag = 0; Err bitreich.org 70 i Err bitreich.org 70 i ARGBEGIN { Err bitreich.org 70 i case 'c': Err bitreich.org 70 i@@ -521,6 +521,9 @@ main(int argc, char *argv[]) Err bitreich.org 70 i usage(); Err bitreich.org 70 i } ARGEND Err bitreich.org 70 i Err bitreich.org 70 i+ if (argc > 1) Err bitreich.org 70 i+ usage(); Err bitreich.org 70 i+ Err bitreich.org 70 i init(); Err bitreich.org 70 i Err bitreich.org 70 i if (cflag) { Err bitreich.org 70 i@@ -533,10 +536,16 @@ main(int argc, char *argv[]) Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+ if (argc == 1) { Err bitreich.org 70 i+ fd = open(argv[0], O_RDWR | O_CREAT, 0600); Err bitreich.org 70 i+ if (fd == -1) Err bitreich.org 70 i+ err(1, "open %s", argv[0]); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i if (id) Err bitreich.org 70 i- extract(id, 0); Err bitreich.org 70 i+ extract(id, fd == -1 ? 0 : fd); Err bitreich.org 70 i else Err bitreich.org 70 i- dedup(0); Err bitreich.org 70 i+ dedup(fd == -1 ? 0 : fd); Err bitreich.org 70 i Err bitreich.org 70 i term(); Err bitreich.org 70 i } Err bitreich.org 70 .