zcat: fix "zcat FILE" trying to do detection twice

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2013-02-28 18:37:04 +01:00
parent 8e96efa323
commit 41655438c6

View File

@ -66,12 +66,17 @@ int FAST_FUNC bbunpack(char **argv,
if (open_to_or_warn(STDIN_FILENO, filename, O_RDONLY, 0))
goto err;
} else {
/* "clever zcat" */
/* "clever zcat" with FILE */
int fd = open_zipped(filename);
if (fd < 0)
goto err_name;
xmove_fd(fd, STDIN_FILENO);
}
} else
if (option_mask32 & SEAMLESS_MAGIC) {
/* "clever zcat" on stdin */
if (setup_unzip_on_fd(STDIN_FILENO, /*fail_if_not_detected*/ 0))
goto err;
}
/* Special cases: test, stdout */
@ -115,16 +120,10 @@ int FAST_FUNC bbunpack(char **argv,
if (status < 0)
exitcode = 1;
} else {
/* "clever zcat" */
if (!filename) {
if (setup_unzip_on_fd(STDIN_FILENO, /*fail_if_not_detected*/ 0))
goto err;
}
if (bb_copyfd_eof(STDIN_FILENO, STDOUT_FILENO) < 0) {
if (bb_copyfd_eof(STDIN_FILENO, STDOUT_FILENO) < 0)
/* Disk full, tty closed, etc. No point in continuing */
xfunc_die();
}
}
if (!(option_mask32 & OPT_STDOUT))
xclose(STDOUT_FILENO); /* with error check! */