diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2001-04-11 05:01:09 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2001-04-11 05:01:09 +0000 |
commit | 48081f81bda9108672fa04fe57b3921cb24ba4b2 (patch) | |
tree | 669c6e9eb4c8911916995e827832594940e9c9d0 /tar.c | |
parent | 7dc8d227a57bc225bc1045a3a6cd6ee78e10852b (diff) |
replace getOctal with strtol( , NULL, 8)
saves 100 Bytes
Diffstat (limited to 'tar.c')
-rw-r--r-- | tar.c | 36 |
1 files changed, 8 insertions, 28 deletions
@@ -476,26 +476,6 @@ tarExtractSpecial(TarInfo *header, int extractFlag, int tostdoutFlag) return( TRUE); } -/* Read an octal value in a field of the specified width, with optional - * spaces on both sides of the number and with an optional null character - * at the end. Returns -1 on an illegal format. */ -static long getOctal(const char *cp, int size) -{ - long val = 0; - - for(;(size > 0) && (*cp == ' '); cp++, size--); - if ((size == 0) || !is_octal(*cp)) - return -1; - for(; (size > 0) && is_octal(*cp); size--) { - val = val * 8 + *cp++ - '0'; - } - for (;(size > 0) && (*cp == ' '); cp++, size--); - if ((size > 0) && *cp) - return -1; - return val; -} - - /* Parse the tar header and fill in the nice struct with the details */ static int readTarHeader(struct TarHeader *rawHeader, struct TarInfo *header) @@ -518,16 +498,16 @@ readTarHeader(struct TarHeader *rawHeader, struct TarInfo *header) } } - header->mode = getOctal(rawHeader->mode, sizeof(rawHeader->mode)); - header->uid = getOctal(rawHeader->uid, sizeof(rawHeader->uid)); - header->gid = getOctal(rawHeader->gid, sizeof(rawHeader->gid)); - header->size = getOctal(rawHeader->size, sizeof(rawHeader->size)); - header->mtime = getOctal(rawHeader->mtime, sizeof(rawHeader->mtime)); - chksum = getOctal(rawHeader->chksum, sizeof(rawHeader->chksum)); + header->mode = strtol(rawHeader->mode, NULL, 8); + header->uid = strtol(rawHeader->uid, NULL, 8); + header->gid = strtol(rawHeader->gid, NULL, 8); + header->size = strtol(rawHeader->size, NULL, 8); + header->mtime = strtol(rawHeader->mtime, NULL, 8); + chksum = strtol(rawHeader->chksum, NULL, 8); header->type = rawHeader->typeflag; header->linkname = rawHeader->linkname; - header->devmajor = getOctal(rawHeader->devmajor, sizeof(rawHeader->devmajor)); - header->devminor = getOctal(rawHeader->devminor, sizeof(rawHeader->devminor)); + header->devmajor = strtol(rawHeader->devmajor, NULL, 8); + header->devminor = strtol(rawHeader->devminor, NULL, 8); /* Check the checksum */ for (i = sizeof(*rawHeader); i-- != 0;) { |