libarchive: add capability to unpack to mem.buffer
[oweals/busybox.git] / archival / tar.c
index bd61abd574be35b9cbf049803bc5d7a6434f5f27..5bd473aac60f9ed8423912079d353f1a7bd2696e 100644 (file)
@@ -1137,7 +1137,7 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
                         && flags == O_RDONLY
                         && !(opt & OPT_ANY_COMPRESS)
                        ) {
-                               tar_handle->src_fd = open_zipped(tar_filename);
+                               tar_handle->src_fd = open_zipped(tar_filename, /*fail_if_not_compressed:*/ 0);
                                if (tar_handle->src_fd < 0)
                                        bb_perror_msg_and_die("can't open '%s'", tar_filename);
                        } else {
@@ -1171,7 +1171,7 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
        }
 
        if (opt & OPT_ANY_COMPRESS) {
-               USE_FOR_MMU(IF_DESKTOP(long long) int FAST_FUNC (*xformer)(transformer_aux_data_t *aux, int src_fd, int dst_fd);)
+               USE_FOR_MMU(IF_DESKTOP(long long) int FAST_FUNC (*xformer)(transformer_state_t *xstate);)
                USE_FOR_NOMMU(const char *xformer_prog;)
 
                if (opt & OPT_COMPRESS)
@@ -1190,7 +1190,7 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
                        USE_FOR_MMU(xformer = unpack_xz_stream;)
                        USE_FOR_NOMMU(xformer_prog = "unxz";)
 
-               open_transformer_with_sig(tar_handle->src_fd, xformer, xformer_prog);
+               fork_transformer_with_sig(tar_handle->src_fd, xformer, xformer_prog);
                /* Can't lseek over pipes */
                tar_handle->seek = seek_by_read;
                /*tar_handle->offset = 0; - already is */