From: Glenn L McGrath Date: Thu, 22 Aug 2002 11:50:31 +0000 (-0000) Subject: Honour the USTAR prefix field, this enables a 155 byte path length plus the normal... X-Git-Tag: 0_60_4~73 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=75762705a3a8db5e82e36401babac36fa976aca2;p=oweals%2Fbusybox.git Honour the USTAR prefix field, this enables a 155 byte path length plus the normal 100 byte filename. The catch is gnu tar cannot create archives that use the prefix field, you need to use s-tar. --- diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c index 07b9ae36f..668fa5a2c 100644 --- a/archival/libunarchive/get_header_tar.c +++ b/archival/libunarchive/get_header_tar.c @@ -71,7 +71,7 @@ file_header_t *get_header_tar(FILE *tar_stream) } /* If there is no filename its an empty header, skip it */ - if (xstrlen(tar.formated.name) == 0) { + if (tar.formated.name[0] == 0) { return(NULL); } @@ -90,7 +90,11 @@ file_header_t *get_header_tar(FILE *tar_stream) /* convert to type'ed variables */ tar_entry = xcalloc(1, sizeof(file_header_t)); - tar_entry->name = xstrdup(tar.formated.name); + if (tar.formated.prefix[0] == 0) { + tar_entry->name = xstrdup(tar.formated.name); + } else { + tar_entry->name = concat_path_file(tar.formated.prefix, tar.formated.name); + } tar_entry->mode = strtol(tar.formated.mode, NULL, 8); #ifdef CONFIG_FEATURE_TAR_OLD_FORMAT