imisc.c - 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 imisc.c (1064B) Err bitreich.org 70 i--- Err bitreich.org 70 i 1 #include Err bitreich.org 70 i 2 Err bitreich.org 70 i 3 #include Err bitreich.org 70 i 4 #include Err bitreich.org 70 i 5 #include Err bitreich.org 70 i 6 #include Err bitreich.org 70 i 7 Err bitreich.org 70 i 8 #define NERRBUF 128 Err bitreich.org 70 i 9 static char errbuf[NERRBUF]; Err bitreich.org 70 i 10 Err bitreich.org 70 i 11 ssize_t Err bitreich.org 70 i 12 xread(int fd, void *buf, size_t nbytes) Err bitreich.org 70 i 13 { Err bitreich.org 70 i 14 unsigned char *bp = buf; Err bitreich.org 70 i 15 ssize_t total = 0; Err bitreich.org 70 i 16 Err bitreich.org 70 i 17 while (nbytes > 0) { Err bitreich.org 70 i 18 ssize_t n; Err bitreich.org 70 i 19 Err bitreich.org 70 i 20 n = read(fd, &bp[total], nbytes); Err bitreich.org 70 i 21 if (n < 0) Err bitreich.org 70 i 22 return -1; Err bitreich.org 70 i 23 else if (n == 0) Err bitreich.org 70 i 24 return total; Err bitreich.org 70 i 25 total += n; Err bitreich.org 70 i 26 nbytes -= n; Err bitreich.org 70 i 27 } Err bitreich.org 70 i 28 return total; Err bitreich.org 70 i 29 } Err bitreich.org 70 i 30 Err bitreich.org 70 i 31 ssize_t Err bitreich.org 70 i 32 xwrite(int fd, void *buf, size_t nbytes) Err bitreich.org 70 i 33 { Err bitreich.org 70 i 34 unsigned char *bp = buf; Err bitreich.org 70 i 35 ssize_t total = 0; Err bitreich.org 70 i 36 Err bitreich.org 70 i 37 while (nbytes > 0) { Err bitreich.org 70 i 38 ssize_t n; Err bitreich.org 70 i 39 Err bitreich.org 70 i 40 n = write(fd, &bp[total], nbytes); Err bitreich.org 70 i 41 if (n < 0) Err bitreich.org 70 i 42 return -1; Err bitreich.org 70 i 43 else if (n == 0) Err bitreich.org 70 i 44 return total; Err bitreich.org 70 i 45 total += n; Err bitreich.org 70 i 46 nbytes -= n; Err bitreich.org 70 i 47 } Err bitreich.org 70 i 48 return total; Err bitreich.org 70 i 49 } Err bitreich.org 70 i 50 Err bitreich.org 70 i 51 void Err bitreich.org 70 i 52 seterr(char *fmt, ...) Err bitreich.org 70 i 53 { Err bitreich.org 70 i 54 va_list ap; Err bitreich.org 70 i 55 Err bitreich.org 70 i 56 va_start(ap, fmt); Err bitreich.org 70 i 57 vsnprintf(errbuf, NERRBUF, fmt, ap); Err bitreich.org 70 i 58 va_end(ap); Err bitreich.org 70 i 59 } Err bitreich.org 70 i 60 Err bitreich.org 70 i 61 void Err bitreich.org 70 i 62 printerr(char *fmt, ...) Err bitreich.org 70 i 63 { Err bitreich.org 70 i 64 va_list ap; Err bitreich.org 70 i 65 Err bitreich.org 70 i 66 va_start(ap, fmt); Err bitreich.org 70 i 67 vfprintf(stderr, fmt, ap); Err bitreich.org 70 i 68 if (errbuf[0] == '\0') Err bitreich.org 70 i 69 fprintf(stderr, ": unknown error\n"); Err bitreich.org 70 i 70 else Err bitreich.org 70 i 71 fprintf(stderr, ": %s\n", errbuf); Err bitreich.org 70 i 72 va_end(ap); Err bitreich.org 70 i 73 exit(1); Err bitreich.org 70 i 74 } Err bitreich.org 70 .