tar: compatibility, treat reserved type as regular file

References:
- http://www.gnu.org/software/tar/manual/html_node/Standard.html
- http://pubs.opengroup.org/onlinepubs/009695399/basedefs/tar.h.html
This commit is contained in:
Hiltjo Posthuma 2015-05-10 11:13:25 +02:00 committed by sin
parent 9d95321f0b
commit 590f34c4a9

4
tar.c
View File

@ -32,7 +32,8 @@ enum Type {
CHARDEV = '3',
BLOCKDEV = '4',
DIRECTORY = '5',
FIFO = '6'
FIFO = '6',
RESERVED = '7'
};
struct header {
@ -273,6 +274,7 @@ unarchive(char *fname, ssize_t l, char b[BLKSIZ])
switch (h->type) {
case REG:
case AREG:
case RESERVED:
if ((mode = strtol(h->mode, &p, 8)) < 0 || *p != '\0')
eprintf("strtol %s: invalid number\n", h->mode);
fd = open(fname, O_WRONLY | O_TRUNC | O_CREAT, 0644);