Honour the USTAR prefix field, this enables a 155 byte path length plus the normal...
authorGlenn L McGrath <bug1@ihug.co.nz>
Thu, 22 Aug 2002 11:50:31 +0000 (11:50 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Thu, 22 Aug 2002 11:50:31 +0000 (11:50 -0000)
The catch is gnu tar cannot create archives that use the prefix field, you need to use s-tar.

archival/libunarchive/get_header_tar.c

index 07b9ae36fed88d14ecf3a389eac5bf1734896a57..668fa5a2c7aaff0a22bef5f3f0afc1b75f3c09ad 100644 (file)
@@ -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