diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-10-17 14:03:56 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-10-17 14:03:56 +0000 |
commit | d83676ec47fa359bad9ed949919edc68f84a4ef2 (patch) | |
tree | bc813a7833f68625902a96d3625b33c28bac06a6 | |
parent | aa9eb1fc6718aec0a6a67b2dc748c3416056411e (diff) | |
download | busybox-w32-d83676ec47fa359bad9ed949919edc68f84a4ef2.tar.gz busybox-w32-d83676ec47fa359bad9ed949919edc68f84a4ef2.tar.bz2 busybox-w32-d83676ec47fa359bad9ed949919edc68f84a4ef2.zip |
data_extract_all: do not complain if directory exists on mkdir
rpm/cpio: move "20653 blocks" printout from get_header_cpio to cpio_main -
rpm doesn't want to have that
-rw-r--r-- | archival/cpio.c | 3 | ||||
-rw-r--r-- | archival/libunarchive/data_extract_all.c | 4 | ||||
-rw-r--r-- | archival/libunarchive/get_header_cpio.c | 3 |
3 files changed, 8 insertions, 2 deletions
diff --git a/archival/cpio.c b/archival/cpio.c index 37b6b5cce..d39640d24 100644 --- a/archival/cpio.c +++ b/archival/cpio.c | |||
@@ -344,5 +344,8 @@ int cpio_main(int argc UNUSED_PARAM, char **argv) | |||
344 | while (get_header_cpio(archive_handle) == EXIT_SUCCESS) | 344 | while (get_header_cpio(archive_handle) == EXIT_SUCCESS) |
345 | continue; | 345 | continue; |
346 | 346 | ||
347 | /* see get_header_cpio */ | ||
348 | printf("%lu blocks\n", (unsigned long)(ptrdiff_t)(archive_handle->ah_priv[2])); | ||
349 | |||
347 | return EXIT_SUCCESS; | 350 | return EXIT_SUCCESS; |
348 | } | 351 | } |
diff --git a/archival/libunarchive/data_extract_all.c b/archival/libunarchive/data_extract_all.c index a67587d72..8b1ee2a6e 100644 --- a/archival/libunarchive/data_extract_all.c +++ b/archival/libunarchive/data_extract_all.c | |||
@@ -77,7 +77,9 @@ void FAST_FUNC data_extract_all(archive_handle_t *archive_handle) | |||
77 | } | 77 | } |
78 | case S_IFDIR: | 78 | case S_IFDIR: |
79 | res = mkdir(file_header->name, file_header->mode); | 79 | res = mkdir(file_header->name, file_header->mode); |
80 | if ((res == -1) && (errno != EISDIR) | 80 | if ((res == -1) |
81 | && (errno != EISDIR) /* btw, Linux doesn't return this */ | ||
82 | && (errno != EEXIST) | ||
81 | && !(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET) | 83 | && !(archive_handle->ah_flags & ARCHIVE_EXTRACT_QUIET) |
82 | ) { | 84 | ) { |
83 | bb_perror_msg("cannot make dir %s", file_header->name); | 85 | bb_perror_msg("cannot make dir %s", file_header->name); |
diff --git a/archival/libunarchive/get_header_cpio.c b/archival/libunarchive/get_header_cpio.c index 93f6c61aa..302f12233 100644 --- a/archival/libunarchive/get_header_cpio.c +++ b/archival/libunarchive/get_header_cpio.c | |||
@@ -27,6 +27,7 @@ char FAST_FUNC get_header_cpio(archive_handle_t *archive_handle) | |||
27 | 27 | ||
28 | #define hardlinks_to_create (*(hardlinks_t **)(&archive_handle->ah_priv[0])) | 28 | #define hardlinks_to_create (*(hardlinks_t **)(&archive_handle->ah_priv[0])) |
29 | #define created_hardlinks (*(hardlinks_t **)(&archive_handle->ah_priv[1])) | 29 | #define created_hardlinks (*(hardlinks_t **)(&archive_handle->ah_priv[1])) |
30 | #define block_count (archive_handle->ah_priv[2]) | ||
30 | // if (!archive_handle->ah_priv_inited) { | 31 | // if (!archive_handle->ah_priv_inited) { |
31 | // archive_handle->ah_priv_inited = 1; | 32 | // archive_handle->ah_priv_inited = 1; |
32 | // hardlinks_to_create = NULL; | 33 | // hardlinks_to_create = NULL; |
@@ -76,7 +77,7 @@ char FAST_FUNC get_header_cpio(archive_handle_t *archive_handle) | |||
76 | 77 | ||
77 | if (strcmp(file_header->name, "TRAILER!!!") == 0) { | 78 | if (strcmp(file_header->name, "TRAILER!!!") == 0) { |
78 | /* Always round up. ">> 9" divides by 512 */ | 79 | /* Always round up. ">> 9" divides by 512 */ |
79 | printf("%"OFF_FMT"u blocks\n", (archive_handle->offset + 511) >> 9); | 80 | block_count = (void*)(ptrdiff_t) ((archive_handle->offset + 511) >> 9); |
80 | goto create_hardlinks; | 81 | goto create_hardlinks; |
81 | } | 82 | } |
82 | 83 | ||