diff options
| author | Quentin Carbonneaux | 2021-11-20 22:11:18 +0100 |
|---|---|---|
| committer | Quentin Carbonneaux | 2021-11-20 22:11:18 +0100 |
| commit | 4449eb01936356d030342aedc55f1de3c9232f0b (patch) | |
| tree | 54e76646b515f6fd26a418877cf80c760e6db853 | |
| parent | fdf54c274cb0401e95399191133c2816e8f03ace (diff) | |
more style nits
| -rw-r--r-- | sdar/arch.c | 36 | ||||
| -rw-r--r-- | sdar/main.c | 4 |
2 files changed, 24 insertions, 16 deletions
diff --git a/sdar/arch.c b/sdar/arch.c index 8b8ae71..14160ef 100644 --- a/sdar/arch.c +++ b/sdar/arch.c @@ -31,12 +31,16 @@ walkseg(Arch *a, int fn(Arch *, uchar[Segidsz], void *), void *arg) int err, fd; DIR *dir; - if ((fd = openat(a->fd, "seg", O_RDONLY)) == -1) + fd = openat(a->fd, "seg", O_RDONLY); + if (fd == -1) return 1; - if ((dir = fdopendir(fd)) == 0) { + + dir = fdopendir(fd); + if (!dir) { close(fd); return 1; } + err = 0; while (errno = 0, (de = readdir(dir))) { if (strcmp(de->d_name, ".") == 0 @@ -51,8 +55,10 @@ walkseg(Arch *a, int fn(Arch *, uchar[Segidsz], void *), void *arg) if (err) break; } + if (!err && errno) err = 1; + closedir(dir); return err; } @@ -89,7 +95,7 @@ walkblocks(FILE *f, blockcb *fn, void *arg) static uchar scratch[sizeof plain]; uchar buf[Magicsz + Keysz]; uchar *it, *end, *segkey; - vlong ni, sz, idx, nleft; + vlong idx, blk, sz, rd; Segmeta meta; char *e; Block b = {.off = 0}; @@ -99,9 +105,10 @@ walkblocks(FILE *f, blockcb *fn, void *arg) logs("E invalid header"); return 1; } + segkey = buf + Magicsz; - idx = -1; - if ((e = cread(f, segkey, idx, Segmetasz))) { + e = cread(f, segkey, -1, Segmetasz); + if (e) { logs("E cannot read metadata (%s)", e); return 1; } @@ -109,19 +116,20 @@ walkblocks(FILE *f, blockcb *fn, void *arg) if (fseek(f, meta.dlen, SEEK_CUR)) return 1; - nleft = meta.nitem; - while (nleft > 0) { - ni = min(nleft, Maxblk / Segitemsz); - nleft -= ni; - sz = ni * Segitemsz; - idx--; - if (cread(f, segkey, idx, sz)) { + + idx = -1; + sz = meta.nitem * Segitemsz; + blk = (Maxblk / Segitemsz) * Segitemsz; + for (; sz > 0; sz -= rd) { + rd = min(sz, blk); + e = cread(f, segkey, --idx, rd); + if (e) { logs("E cannot read items (%s)", e); return 1; } - memcpy(scratch, plain, Plnpad + sz); + memcpy(scratch, plain, Plnpad+rd); it = scratch + Plnpad; - end = it + sz; + end = it + rd; for (; it != end; it += Segitemsz) { decitem(it, &b); if (fn(&b, it, segkey, arg)) diff --git a/sdar/main.c b/sdar/main.c index 7d5226c..83da93e 100644 --- a/sdar/main.c +++ b/sdar/main.c @@ -379,7 +379,7 @@ cmd_add(int argc, char *argv[]) } tot = 0; - while ((sz = fread(iobuf, 1, sizeof iobuf, stdin)) > 0) { + while ((sz = fread(iobuf, 1, sizeof iobuf, stdin))) { if (stashadd(&a, iobuf, sz)) goto writefail; tot += sz; @@ -515,7 +515,7 @@ cmd_id(int argc, char *argv[]) if (flagb) return idbatch(&w); - while ((sz = fread(iobuf, 1, sizeof iobuf, stdin)) > 0) + while ((sz = fread(iobuf, 1, sizeof iobuf, stdin))) if (writer(&w, iobuf, sz)) return 1; if (writerdone(&w, &a)) |
