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