diff --git a/archival/libarchive/decompress_uncompress.c b/archival/libarchive/decompress_uncompress.c
index cb3d55a..496d864 100644
--- a/archival/libarchive/decompress_uncompress.c
+++ b/archival/libarchive/decompress_uncompress.c
@@ -73,7 +73,7 @@
  */
 
 IF_DESKTOP(long long) int FAST_FUNC
-unpack_Z_stream(transformer_state_t *xstate, int src_fd, int dst_fd)
+unpack_Z_stream(transformer_state_t *xstate)
 {
 	IF_DESKTOP(long long total_written = 0;)
 	IF_DESKTOP(long long) int retval = -1;
@@ -102,7 +102,7 @@
 	/* block compress mode -C compatible with 2.0 */
 	int block_mode; /* = BLOCK_MODE; */
 
-	if (check_signature16(xstate, src_fd, COMPRESS_MAGIC))
+	if (check_signature16(xstate, COMPRESS_MAGIC))
 		return -1;
 
 	inbuf = xzalloc(IBUFSIZ + 64);
@@ -114,7 +114,7 @@
 
 	/* xread isn't good here, we have to return - caller may want
 	 * to do some cleanup (e.g. delete incomplete unpacked file etc) */
-	if (full_read(src_fd, inbuf, 1) != 1) {
+	if (full_read(xstate->src_fd, inbuf, 1) != 1) {
 		bb_error_msg("short read");
 		goto err;
 	}
@@ -166,7 +166,7 @@
 		}
 
 		if (insize < (int) (IBUFSIZ + 64) - IBUFSIZ) {
-			rsize = safe_read(src_fd, inbuf + insize, IBUFSIZ);
+			rsize = safe_read(xstate->src_fd, inbuf + insize, IBUFSIZ);
 			if (rsize < 0)
 				bb_error_msg_and_die(bb_msg_read_error);
 			insize += rsize;
@@ -274,7 +274,7 @@
 						}
 
 						if (outpos >= OBUFSIZ) {
-							xwrite(dst_fd, outbuf, outpos);
+							xtransformer_write(xstate, outbuf, outpos);
 							IF_DESKTOP(total_written += outpos;)
 							outpos = 0;
 						}
@@ -301,7 +301,7 @@
 	} while (rsize > 0);
 
 	if (outpos > 0) {
-		xwrite(dst_fd, outbuf, outpos);
+		xtransformer_write(xstate, outbuf, outpos);
 		IF_DESKTOP(total_written += outpos;)
 	}
 
