diff options
Diffstat (limited to 'archival/libunarchive/get_header_tar.c')
-rw-r--r-- | archival/libunarchive/get_header_tar.c | 7 |
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 | } |