pscan: size optimization (Tito <farmatito@tiscali.it>)
[oweals/busybox.git] / archival / bbunzip.c
index 3c3cc2886beaaa609ef77afe48f4291a2932e73d..bd1526b20d863e33f59a9ae606f3bd09931b4f14 100644 (file)
@@ -5,7 +5,7 @@
  *  Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
  */
 
-#include "busybox.h"
+#include "libbb.h"
 #include "unarchive.h"
 
 enum {
@@ -20,16 +20,11 @@ enum {
 static
 int open_to_or_warn(int to_fd, const char *filename, int flags, int mode)
 {
-       int fd = open(filename, flags, mode);
+       int fd = open3_or_warn(filename, flags, mode);
        if (fd < 0) {
-               bb_perror_msg("%s", filename);
                return 1;
        }
-       if (fd != to_fd) {
-               if (dup2(fd, to_fd) < 0)
-                       bb_perror_msg_and_die("cannot dup");
-               close(fd);
-       }
+       xmove_fd(fd, to_fd);
        return 0;
 }
 
@@ -160,7 +155,7 @@ char* make_new_name_bunzip2(char *filename)
 static
 USE_DESKTOP(long long) int unpack_bunzip2(void)
 {
-       return uncompressStream(STDIN_FILENO, STDOUT_FILENO);
+       return unpack_bz2_stream(STDIN_FILENO, STDOUT_FILENO);
 }
 
 int bunzip2_main(int argc, char **argv);
@@ -222,7 +217,7 @@ char* make_new_name_gunzip(char *filename)
 #endif
        ) {
                extension[-1] = '\0';
-       } else if(strcmp(extension, "tgz") == 0) {
+       } else if (strcmp(extension, "tgz") == 0) {
                filename = xstrdup(filename);
                extension = strrchr(filename, '.');
                extension[2] = 'a';
@@ -247,7 +242,7 @@ USE_DESKTOP(long long) int unpack_gunzip(void)
                        status = uncompress(STDIN_FILENO, STDOUT_FILENO);
                } else if (magic2 == 0x8b) {
                        check_header_gzip_or_die(STDIN_FILENO);
-                       status = inflate_gunzip(STDIN_FILENO, STDOUT_FILENO);
+                       status = unpack_gz_stream(STDIN_FILENO, STDOUT_FILENO);
                } else {
                        goto bad_magic;
                }
@@ -297,7 +292,7 @@ char* make_new_name_unlzma(char *filename)
 static
 USE_DESKTOP(long long) int unpack_unlzma(void)
 {
-       return unlzma(STDIN_FILENO, STDOUT_FILENO);
+       return unpack_lzma_stream(STDIN_FILENO, STDOUT_FILENO);
 }
 
 int unlzma_main(int argc, char **argv);