aboutsummaryrefslogtreecommitdiff
path: root/archival/libunarchive/get_header_tar.c
diff options
context:
space:
mode:
Diffstat (limited to 'archival/libunarchive/get_header_tar.c')
-rw-r--r--archival/libunarchive/get_header_tar.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c
index bb0affeb3..e87eb77b8 100644
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -47,6 +47,7 @@ extern char get_header_tar(archive_handle_t *archive_handle)
47 } tar; 47 } tar;
48 long sum = 0; 48 long sum = 0;
49 long i; 49 long i;
50 char *tmp;
50 51
51 /* Align header */ 52 /* Align header */
52 archive_handle->offset += data_align(archive_handle->src_fd, archive_handle->offset, 512); 53 archive_handle->offset += data_align(archive_handle->src_fd, archive_handle->offset, 512);
@@ -91,6 +92,11 @@ extern char get_header_tar(archive_handle_t *archive_handle)
91 } else { 92 } else {
92 file_header->name = concat_path_file(tar.formated.prefix, tar.formated.name); 93 file_header->name = concat_path_file(tar.formated.prefix, tar.formated.name);
93 } 94 }
95 tmp = last_char_is(archive_handle->file_header->name, '/');
96 if (tmp) {
97 *tmp = '\0';
98 }
99
94 file_header->mode = strtol(tar.formated.mode, NULL, 8); 100 file_header->mode = strtol(tar.formated.mode, NULL, 8);
95 file_header->uid = strtol(tar.formated.uid, NULL, 8); 101 file_header->uid = strtol(tar.formated.uid, NULL, 8);
96 file_header->gid = strtol(tar.formated.gid, NULL, 8); 102 file_header->gid = strtol(tar.formated.gid, NULL, 8);
@@ -159,6 +165,7 @@ extern char get_header_tar(archive_handle_t *archive_handle)
159 archive_handle->action_header(archive_handle->file_header); 165 archive_handle->action_header(archive_handle->file_header);
160 archive_handle->flags |= ARCHIVE_EXTRACT_QUIET; 166 archive_handle->flags |= ARCHIVE_EXTRACT_QUIET;
161 archive_handle->action_data(archive_handle); 167 archive_handle->action_data(archive_handle);
168 archive_handle->passed = add_to_list(archive_handle->passed, archive_handle->file_header->name);
162 } else { 169 } else {
163 data_skip(archive_handle); 170 data_skip(archive_handle);
164 } 171 }