iUse seterr() when reading/write the state file - 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 8faa8deed4fb6d7d6f5c90ad39715aac27254444 /scm/dedup/commit/8faa8deed4fb6d7d6f5c90ad39715aac27254444.gph bitreich.org 70 1parent a8beae9784fa77d57a05f35c0980d7504aea2fde /scm/dedup/commit/a8beae9784fa77d57a05f35c0980d7504aea2fde.gph bitreich.org 70 hAuthor: sin URL:mailto:sin@2f30.org bitreich.org 70 iDate: Sun, 12 May 2019 11:57:16 +0100 Err bitreich.org 70 i Err bitreich.org 70 iUse seterr() when reading/write the state file Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M dup-check.c | 2 +- Err bitreich.org 70 i M dup-gc.c | 2 +- Err bitreich.org 70 i M dup-init.c | 2 +- Err bitreich.org 70 i M dup-pack.c | 2 +- Err bitreich.org 70 i M dup-rm.c | 2 +- Err bitreich.org 70 i M dup-unpack.c | 2 +- Err bitreich.org 70 i M state.c | 33 +++++++++++++++++++++---------- Err bitreich.org 70 i Err bitreich.org 70 i7 files changed, 29 insertions(+), 16 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/dup-check.c b/dup-check.c /scm/dedup/file/dup-check.c.gph bitreich.org 70 i@@ -34,7 +34,7 @@ loadstate(char *repo) Err bitreich.org 70 i if (fd < 0) Err bitreich.org 70 i err(1, "open: %s", path); Err bitreich.org 70 i if (readstate(fd, ¶m) < 0) Err bitreich.org 70 i- errx(1, "readstate: failed"); Err bitreich.org 70 i+ printerr("readstate: %s", path); Err bitreich.org 70 i if (close(fd) < 0) Err bitreich.org 70 i err(1, "close: %s", path); Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/dup-gc.c b/dup-gc.c /scm/dedup/file/dup-gc.c.gph bitreich.org 70 i@@ -32,7 +32,7 @@ loadstate(char *repo) Err bitreich.org 70 i if (fd < 0) Err bitreich.org 70 i err(1, "open: %s", path); Err bitreich.org 70 i if (readstate(fd, ¶m) < 0) Err bitreich.org 70 i- errx(1, "readstate: failed"); Err bitreich.org 70 i+ printerr("readstate: %s", path); Err bitreich.org 70 i if (close(fd) < 0) Err bitreich.org 70 i err(1, "close: %s", path); Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/dup-init.c b/dup-init.c /scm/dedup/file/dup-init.c.gph bitreich.org 70 i@@ -33,7 +33,7 @@ savestate(char *repo) Err bitreich.org 70 i if (fd < 0) Err bitreich.org 70 i err(1, "open: %s", path); Err bitreich.org 70 i if (writestate(fd, ¶m) < 0) Err bitreich.org 70 i- errx(1, "writestate: failed"); Err bitreich.org 70 i+ printerr("writestate: %s", path); Err bitreich.org 70 i if (close(fd) < 0) Err bitreich.org 70 i err(1, "close: %s", path); Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/dup-pack.c b/dup-pack.c /scm/dedup/file/dup-pack.c.gph bitreich.org 70 i@@ -33,7 +33,7 @@ loadstate(char *repo) Err bitreich.org 70 i if (fd < 0) Err bitreich.org 70 i err(1, "open: %s", path); Err bitreich.org 70 i if (readstate(fd, ¶m) < 0) Err bitreich.org 70 i- errx(1, "readstate: failed"); Err bitreich.org 70 i+ printerr("readstate: %s", path); Err bitreich.org 70 i if (close(fd) < 0) Err bitreich.org 70 i err(1, "close: %s", path); Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/dup-rm.c b/dup-rm.c /scm/dedup/file/dup-rm.c.gph bitreich.org 70 i@@ -32,7 +32,7 @@ loadstate(char *repo) Err bitreich.org 70 i if (fd < 0) Err bitreich.org 70 i err(1, "open: %s", path); Err bitreich.org 70 i if (readstate(fd, ¶m) < 0) Err bitreich.org 70 i- errx(1, "readstate: failed"); Err bitreich.org 70 i+ printerr("readstate: %s", path); Err bitreich.org 70 i if (close(fd) < 0) Err bitreich.org 70 i err(1, "close: %s", path); Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/dup-unpack.c b/dup-unpack.c /scm/dedup/file/dup-unpack.c.gph bitreich.org 70 i@@ -33,7 +33,7 @@ loadstate(char *repo) Err bitreich.org 70 i if (fd < 0) Err bitreich.org 70 i err(1, "open: %s", path); Err bitreich.org 70 i if (readstate(fd, ¶m) < 0) Err bitreich.org 70 i- errx(1, "readstate: failed"); Err bitreich.org 70 i+ printerr("readstate: %s", path); Err bitreich.org 70 i if (close(fd) < 0) Err bitreich.org 70 i err(1, "close: %s", path); Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/state.c b/state.c /scm/dedup/file/state.c.gph bitreich.org 70 i@@ -1,4 +1,5 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i@@ -42,8 +43,10 @@ unpackshdr(int fd, struct shdr *shdr) Err bitreich.org 70 i unsigned char buf[SHDRSIZE]; Err bitreich.org 70 i int n; Err bitreich.org 70 i Err bitreich.org 70 i- if (xread(fd, buf, sizeof(buf)) != sizeof(buf)) Err bitreich.org 70 i+ if (xread(fd, buf, sizeof(buf)) != sizeof(buf)) { Err bitreich.org 70 i+ seterr("failed to read state header: %s", strerror(errno)); Err bitreich.org 70 i return -1; Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i n = unpack(buf, "q", &shdr->flags); Err bitreich.org 70 i assert(n == sizeof(buf)); Err bitreich.org 70 i@@ -59,8 +62,10 @@ packshdr(int fd, struct shdr *shdr) Err bitreich.org 70 i Err bitreich.org 70 i n = pack(buf, "q", shdr->flags); Err bitreich.org 70 i assert(n == SHDRSIZE); Err bitreich.org 70 i- if (xwrite(fd, buf, n) != n) Err bitreich.org 70 i+ if (xwrite(fd, buf, n) != n) { Err bitreich.org 70 i+ seterr("failed to write state header: %s", strerror(errno)); Err bitreich.org 70 i return -1; Err bitreich.org 70 i+ } Err bitreich.org 70 i return n; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -73,22 +78,26 @@ writestate(int fd, struct param *par) Err bitreich.org 70 i shdr.flags = (VMAJ << VMAJSHIFT) | VMIN; Err bitreich.org 70 i Err bitreich.org 70 i /* Set compression type */ Err bitreich.org 70 i- if (strcasecmp(par->calgo, "none") == 0) Err bitreich.org 70 i+ if (strcasecmp(par->calgo, "none") == 0) { Err bitreich.org 70 i shdr.flags |= CNONETYPE << CALGOSHIFT; Err bitreich.org 70 i- else if (strcasecmp(par->calgo, "snappy") == 0) Err bitreich.org 70 i+ } else if (strcasecmp(par->calgo, "snappy") == 0) { Err bitreich.org 70 i shdr.flags |= CSNAPPYTYPE << CALGOSHIFT; Err bitreich.org 70 i- else if (strcasecmp(par->calgo, "lz4") == 0) Err bitreich.org 70 i+ } else if (strcasecmp(par->calgo, "lz4") == 0) { Err bitreich.org 70 i shdr.flags |= CLZ4TYPE << CALGOSHIFT; Err bitreich.org 70 i- else Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ seterr("invalid compression type: %s", par->calgo); Err bitreich.org 70 i return -1; Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i /* Set encryption type */ Err bitreich.org 70 i- if (strcasecmp(par->ealgo, "none") == 0) Err bitreich.org 70 i+ if (strcasecmp(par->ealgo, "none") == 0) { Err bitreich.org 70 i shdr.flags |= ENONETYPE << EALGOSHIFT; Err bitreich.org 70 i- else if (strcasecmp(par->ealgo, "XChaCha20-Poly1305") == 0) Err bitreich.org 70 i+ } else if (strcasecmp(par->ealgo, "XChaCha20-Poly1305") == 0) { Err bitreich.org 70 i shdr.flags |= ECHACHATYPE << EALGOSHIFT; Err bitreich.org 70 i- else Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ seterr("invalid encryption type: %s", par->ealgo); Err bitreich.org 70 i return -1; Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i if (packshdr(fd, &shdr) < 0) Err bitreich.org 70 i return -1; Err bitreich.org 70 i@@ -105,8 +114,10 @@ readstate(int fd, struct param *par) Err bitreich.org 70 i return -1; Err bitreich.org 70 i Err bitreich.org 70 i /* If the major version is different, the format is incompatible */ Err bitreich.org 70 i- if (((shdr.flags >> VMAJSHIFT) & VMAJMASK) != VMAJ) Err bitreich.org 70 i+ if (((shdr.flags >> VMAJSHIFT) & VMAJMASK) != VMAJ) { Err bitreich.org 70 i+ seterr("state header version mismatch"); Err bitreich.org 70 i return -1; Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i /* Populate param compression algo */ Err bitreich.org 70 i algo = (shdr.flags >> CALGOSHIFT) & CALGOMASK; Err bitreich.org 70 i@@ -121,6 +132,7 @@ readstate(int fd, struct param *par) Err bitreich.org 70 i par->calgo = "lz4"; Err bitreich.org 70 i break; Err bitreich.org 70 i default: Err bitreich.org 70 i+ seterr("invalid compression type: %d", algo); Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -134,6 +146,7 @@ readstate(int fd, struct param *par) Err bitreich.org 70 i par->ealgo = "XChaCha20-Poly1305"; Err bitreich.org 70 i break; Err bitreich.org 70 i default: Err bitreich.org 70 i+ seterr("invalid encryption type: %d", algo); Err bitreich.org 70 i return -1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 .