diff options
-rw-r--r-- | archival/libunarchive/data_extract_all.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/archival/libunarchive/data_extract_all.c b/archival/libunarchive/data_extract_all.c index dda514771..7ab87e73e 100644 --- a/archival/libunarchive/data_extract_all.c +++ b/archival/libunarchive/data_extract_all.c | |||
@@ -60,6 +60,7 @@ extern void data_extract_all(archive_handle_t *archive_handle) | |||
60 | break; | 60 | break; |
61 | } | 61 | } |
62 | case S_IFDIR: | 62 | case S_IFDIR: |
63 | unlink(file_header->name); | ||
63 | res = mkdir(file_header->name, file_header->mode); | 64 | res = mkdir(file_header->name, file_header->mode); |
64 | if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { | 65 | if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { |
65 | perror_msg("extract_archive: %s", file_header->name); | 66 | perror_msg("extract_archive: %s", file_header->name); |
@@ -67,6 +68,7 @@ extern void data_extract_all(archive_handle_t *archive_handle) | |||
67 | break; | 68 | break; |
68 | case S_IFLNK: | 69 | case S_IFLNK: |
69 | /* Symlink */ | 70 | /* Symlink */ |
71 | unlink(file_header->name); | ||
70 | res = symlink(file_header->link_name, file_header->name); | 72 | res = symlink(file_header->link_name, file_header->name); |
71 | if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { | 73 | if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { |
72 | perror_msg("Cannot create symlink from %s to '%s'", file_header->name, file_header->link_name); | 74 | perror_msg("Cannot create symlink from %s to '%s'", file_header->name, file_header->link_name); |
@@ -76,6 +78,7 @@ extern void data_extract_all(archive_handle_t *archive_handle) | |||
76 | case S_IFBLK: | 78 | case S_IFBLK: |
77 | case S_IFCHR: | 79 | case S_IFCHR: |
78 | case S_IFIFO: | 80 | case S_IFIFO: |
81 | unlink(file_header->name); | ||
79 | res = mknod(file_header->name, file_header->mode, file_header->device); | 82 | res = mknod(file_header->name, file_header->mode, file_header->device); |
80 | if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { | 83 | if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { |
81 | perror_msg("Cannot create node %s", file_header->name); | 84 | perror_msg("Cannot create node %s", file_header->name); |