aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archival/libunarchive/data_extract_all.c3
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);