From: Glenn L McGrath Date: Wed, 4 Dec 2002 22:26:30 +0000 (-0000) Subject: Unlink before mkdir, mknod, symlink to overwrite X-Git-Tag: 1_00_pre1~358 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=6f9b45b9eff22c664b93ace82d20669340a762f8;p=oweals%2Fbusybox.git Unlink before mkdir, mknod, symlink to overwrite --- 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) break; } case S_IFDIR: + unlink(file_header->name); res = mkdir(file_header->name, file_header->mode); if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { perror_msg("extract_archive: %s", file_header->name); @@ -67,6 +68,7 @@ extern void data_extract_all(archive_handle_t *archive_handle) break; case S_IFLNK: /* Symlink */ + unlink(file_header->name); res = symlink(file_header->link_name, file_header->name); if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { 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) case S_IFBLK: case S_IFCHR: case S_IFIFO: + unlink(file_header->name); res = mknod(file_header->name, file_header->mode, file_header->device); if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) { perror_msg("Cannot create node %s", file_header->name);