Unlink before mkdir, mknod, symlink to overwrite
This commit is contained in:
parent
350d26bbbb
commit
6f9b45b9ef
@ -60,6 +60,7 @@ extern void data_extract_all(archive_handle_t *archive_handle)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case S_IFDIR:
|
case S_IFDIR:
|
||||||
|
unlink(file_header->name);
|
||||||
res = mkdir(file_header->name, file_header->mode);
|
res = mkdir(file_header->name, file_header->mode);
|
||||||
if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) {
|
if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) {
|
||||||
perror_msg("extract_archive: %s", file_header->name);
|
perror_msg("extract_archive: %s", file_header->name);
|
||||||
@ -67,6 +68,7 @@ extern void data_extract_all(archive_handle_t *archive_handle)
|
|||||||
break;
|
break;
|
||||||
case S_IFLNK:
|
case S_IFLNK:
|
||||||
/* Symlink */
|
/* Symlink */
|
||||||
|
unlink(file_header->name);
|
||||||
res = symlink(file_header->link_name, file_header->name);
|
res = symlink(file_header->link_name, file_header->name);
|
||||||
if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) {
|
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);
|
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_IFBLK:
|
||||||
case S_IFCHR:
|
case S_IFCHR:
|
||||||
case S_IFIFO:
|
case S_IFIFO:
|
||||||
|
unlink(file_header->name);
|
||||||
res = mknod(file_header->name, file_header->mode, file_header->device);
|
res = mknod(file_header->name, file_header->mode, file_header->device);
|
||||||
if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) {
|
if ((res == -1) && !(archive_handle->flags & ARCHIVE_EXTRACT_QUIET)) {
|
||||||
perror_msg("Cannot create node %s", file_header->name);
|
perror_msg("Cannot create node %s", file_header->name);
|
||||||
|
Loading…
Reference in New Issue
Block a user