less: document -S flag and make it independently configurable
[oweals/busybox.git] / archival / libarchive / decompress_uncompress.c
index 4ccc8a697a641808f097dcaa2164bda16bb16649..034ed502d76c94272843cc1de6114cf617bff207 100644 (file)
@@ -73,7 +73,7 @@
  */
 
 IF_DESKTOP(long long) int FAST_FUNC
-unpack_Z_stream(transformer_aux_data_t *aux, 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 @@ unpack_Z_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
        /* block compress mode -C compatible with 2.0 */
        int block_mode; /* = BLOCK_MODE; */
 
-       if (check_signature16(aux, src_fd, COMPRESS_MAGIC))
+       if (check_signature16(xstate, COMPRESS_MAGIC))
                return -1;
 
        inbuf = xzalloc(IBUFSIZ + 64);
@@ -114,7 +114,7 @@ unpack_Z_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
 
        /* 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 @@ unpack_Z_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
                }
 
                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;
@@ -228,15 +228,16 @@ unpack_Z_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
                        /* Special case for KwKwK string. */
                        if (code >= free_ent) {
                                if (code > free_ent) {
+/*
                                        unsigned char *p;
 
                                        posbits -= n_bits;
                                        p = &inbuf[posbits >> 3];
-
                                        bb_error_msg
                                                ("insize:%d posbits:%d inbuf:%02X %02X %02X %02X %02X (%d)",
-                                                insize, posbits, p[-1], p[0], p[1], p[2], p[3],
-                                                (posbits & 07));
+                                               insize, posbits, p[-1], p[0], p[1], p[2], p[3],
+                                               (posbits & 07));
+*/
                                        bb_error_msg("corrupted data");
                                        goto err;
                                }
@@ -273,7 +274,7 @@ unpack_Z_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
                                                }
 
                                                if (outpos >= OBUFSIZ) {
-                                                       xwrite(dst_fd, outbuf, outpos);
+                                                       xtransformer_write(xstate, outbuf, outpos);
                                                        IF_DESKTOP(total_written += outpos;)
                                                        outpos = 0;
                                                }
@@ -296,11 +297,10 @@ unpack_Z_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
                        /* Remember previous code.  */
                        oldcode = incode;
                }
-
        } while (rsize > 0);
 
        if (outpos > 0) {
-               xwrite(dst_fd, outbuf, outpos);
+               xtransformer_write(xstate, outbuf, outpos);
                IF_DESKTOP(total_written += outpos;)
        }