sbase

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

commit aab2e273bda0208f7f3cea28087566522b691ee5
parent 201e71be2b4ed0edaba2e45f5825ff5b5974d270
Author: sin <sin@2f30.org>
Date:   Thu, 23 Apr 2015 12:06:44 +0100

tar: Add skipblk() and simplify code

Diffstat:
Mtar.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; }