summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn L McGrath2003-11-20 10:47:06 +0000
committerGlenn L McGrath2003-11-20 10:47:06 +0000
commite857122c97b934a00252889a978db69d4e774df7 (patch)
tree896833c6053b6159ea1d83f4eac19145a0e67652
parentd9c8ab40a485aa8a7fae92a5d2bbada0e7513ef3 (diff)
downloadbusybox-e857122c97b934a00252889a978db69d4e774df7.zip
busybox-e857122c97b934a00252889a978db69d4e774df7.tar.gz
Fix tar-handles-nested-exclude testcase
-rw-r--r--archival/libunarchive/get_header_tar.c8
-rw-r--r--archival/tar.c5
2 files changed, 13 insertions, 0 deletions
diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c
index 5354af8..d55189f 100644
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -106,6 +106,14 @@ extern char get_header_tar(archive_handle_t *archive_handle)
file_header->name = concat_path_file(tar.formated.prefix, tar.formated.name);
}
+ { /* Strip trailing '/' in directories */
+ char *tmp = last_char_is(file_header->name, '/');
+ if (tmp) {
+ *tmp = '\0';
+ }
+ }
+
+
file_header->mode = strtol(tar.formated.mode, NULL, 8);
file_header->uid = strtol(tar.formated.uid, NULL, 8);
file_header->gid = strtol(tar.formated.gid, NULL, 8);
diff --git a/archival/tar.c b/archival/tar.c
index c8a2bd3..b3fa447 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -731,6 +731,11 @@ int tar_main(int argc, char **argv)
/* Setup an array of filenames to work with */
/* TODO: This is the same as in ar, seperate function ? */
while (optind < argc) {
+ char *filename_ptr;
+ filename_ptr = last_char_is(argv[optind], '/');
+ if (filename_ptr) {
+ *filename_ptr = '\0';
+ }
tar_handle->accept = llist_add_to(tar_handle->accept, argv[optind]);
optind++;
}