diff options
| author | landley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-08-04 17:26:58 +0000 |
|---|---|---|
| committer | landley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2006-08-04 17:26:58 +0000 |
| commit | 60fc8dcc86827979287faa4d4f545f992d2b7790 (patch) | |
| tree | e58a1411f75153b2a22621bfe940b1d0b277e17f | |
| parent | 15f3320464c7df922029711286146a2ceb2950d2 (diff) | |
| download | busybox-w32-60fc8dcc86827979287faa4d4f545f992d2b7790.tar.gz busybox-w32-60fc8dcc86827979287faa4d4f545f992d2b7790.tar.bz2 busybox-w32-60fc8dcc86827979287faa4d4f545f992d2b7790.zip | |
Use xopen3() instead of an after-the-fact chown.
git-svn-id: svn://busybox.net/trunk/busybox@15775 69ca8d6d-28ef-0310-b511-8ec308f3f277
| -rw-r--r-- | archival/libunarchive/data_extract_all.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/archival/libunarchive/data_extract_all.c b/archival/libunarchive/data_extract_all.c index 5d1ec302a..c8d162bce 100644 --- a/archival/libunarchive/data_extract_all.c +++ b/archival/libunarchive/data_extract_all.c | |||
| @@ -58,7 +58,8 @@ void data_extract_all(archive_handle_t *archive_handle) | |||
| 58 | switch(file_header->mode & S_IFMT) { | 58 | switch(file_header->mode & S_IFMT) { |
| 59 | case S_IFREG: { | 59 | case S_IFREG: { |
| 60 | /* Regular file */ | 60 | /* Regular file */ |
| 61 | dst_fd = xopen(file_header->name, O_WRONLY | O_CREAT | O_EXCL); | 61 | dst_fd = xopen3(file_header->name, O_WRONLY | O_CREAT | O_EXCL, |
| 62 | file_header->mode); | ||
| 62 | bb_copyfd_size(archive_handle->src_fd, dst_fd, file_header->size); | 63 | bb_copyfd_size(archive_handle->src_fd, dst_fd, file_header->size); |
| 63 | close(dst_fd); | 64 | close(dst_fd); |
| 64 | break; | 65 | break; |
| @@ -93,11 +94,6 @@ void data_extract_all(archive_handle_t *archive_handle) | |||
| 93 | if (!(archive_handle->flags & ARCHIVE_NOPRESERVE_OWN)) { | 94 | if (!(archive_handle->flags & ARCHIVE_NOPRESERVE_OWN)) { |
| 94 | lchown(file_header->name, file_header->uid, file_header->gid); | 95 | lchown(file_header->name, file_header->uid, file_header->gid); |
| 95 | } | 96 | } |
| 96 | if (!(archive_handle->flags & ARCHIVE_NOPRESERVE_PERM) && | ||
| 97 | (file_header->mode & S_IFMT) != S_IFLNK) | ||
| 98 | { | ||
| 99 | chmod(file_header->name, file_header->mode); | ||
| 100 | } | ||
| 101 | 97 | ||
| 102 | if (archive_handle->flags & ARCHIVE_PRESERVE_DATE) { | 98 | if (archive_handle->flags & ARCHIVE_PRESERVE_DATE) { |
| 103 | struct utimbuf t; | 99 | struct utimbuf t; |
