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 07b9ae3..668fa5a 100644
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -71,7 +71,7 @@
 	}
 
 	/* 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 @@
 
 	/* 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