sbase

suckless unix tools
git clone git://git.2f30.org/sbase.git
Log | Files | Refs | README | LICENSE

commit c41ced64808ca527b91d1b8a8013400ffa37c9a3
parent 86031d0026b7b15229368bbe0749952c02199e86
Author: sin <sin@2f30.org>
Date:   Thu Apr 23 12:06:44 +0100

tar: Add skipblk() and simplify code

Diffstat:
tar.c | 20+++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/tar.c b/tar.c @@ -257,15 +257,21 @@ unarchive(char *fname, ssize_t l, char b[BLKSIZ]) return 0; } -static int -print(char *fname, ssize_t l, char b[BLKSIZ]) +static void +skipblk(ssize_t l) { - puts(fname); + char b[BLKSIZ]; for (; l > 0; l -= BLKSIZ) if (fread(b, BLKSIZ, 1, tarfile) != 1) eprintf("fread %s:", tarfilename); +} +static int +print(char *fname, ssize_t l, char b[BLKSIZ]) +{ + puts(fname); + skipblk(l); return 0; } @@ -332,18 +338,14 @@ xt(int argc, char *argv[], int (*fn)(char *, ssize_t, char[BLKSIZ])) if (!strcmp(argv[i], fname)) break; if (i == argc) { - for (; size > 0; size -= BLKSIZ) - if (fread(b, BLKSIZ, 1, tarfile) != 1) - eprintf("fread %s:", tarfilename); + skipblk(size); continue; } } /* ignore global pax header craziness */ if (h->type == 'g') { - for (; size > 0; size -= BLKSIZ) - if (fread(b, BLKSIZ, 1, tarfile) != 1) - eprintf("fread %s:", tarfilename); + skipblk(size); continue; }