|
@@ -21,19 +21,6 @@
|
|
|
#include "libbb.h"
|
|
|
#include "bb_archive.h"
|
|
|
|
|
|
-/* Note: must be kept in sync with archival/lzop.c */
|
|
|
-enum {
|
|
|
- OPT_STDOUT = 1 << 0,
|
|
|
- OPT_FORCE = 1 << 1,
|
|
|
- /* only some decompressors: */
|
|
|
- OPT_KEEP = 1 << 2,
|
|
|
- OPT_VERBOSE = 1 << 3,
|
|
|
- OPT_QUIET = 1 << 4,
|
|
|
- OPT_DECOMPRESS = 1 << 5,
|
|
|
- OPT_TEST = 1 << 6,
|
|
|
- SEAMLESS_MAGIC = (1 << 31) * ENABLE_ZCAT * SEAMLESS_COMPRESSION,
|
|
|
-};
|
|
|
-
|
|
|
static
|
|
|
int open_to_or_warn(int to_fd, const char *filename, int flags, int mode)
|
|
|
{
|
|
@@ -72,7 +59,7 @@ int FAST_FUNC bbunpack(char **argv,
|
|
|
|
|
|
/* Open src */
|
|
|
if (filename) {
|
|
|
- if (!(option_mask32 & SEAMLESS_MAGIC)) {
|
|
|
+ if (!(option_mask32 & BBUNPK_SEAMLESS_MAGIC)) {
|
|
|
if (stat(filename, &stat_buf) != 0) {
|
|
|
err_name:
|
|
|
bb_simple_perror_msg(filename);
|
|
@@ -91,15 +78,15 @@ int FAST_FUNC bbunpack(char **argv,
|
|
|
xmove_fd(fd, STDIN_FILENO);
|
|
|
}
|
|
|
} else
|
|
|
- if (option_mask32 & SEAMLESS_MAGIC) {
|
|
|
+ if (option_mask32 & BBUNPK_SEAMLESS_MAGIC) {
|
|
|
/* "clever zcat" on stdin */
|
|
|
if (setup_unzip_on_fd(STDIN_FILENO, /*fail_if_not_compressed*/ 1))
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
/* Special cases: test, stdout */
|
|
|
- if (option_mask32 & (OPT_STDOUT|OPT_TEST)) {
|
|
|
- if (option_mask32 & OPT_TEST)
|
|
|
+ if (option_mask32 & (BBUNPK_OPT_STDOUT|BBUNPK_OPT_TEST)) {
|
|
|
+ if (option_mask32 & BBUNPK_OPT_TEST)
|
|
|
if (open_to_or_warn(STDOUT_FILENO, bb_dev_null, O_WRONLY, 0))
|
|
|
xfunc_die();
|
|
|
filename = NULL;
|
|
@@ -114,7 +101,7 @@ int FAST_FUNC bbunpack(char **argv,
|
|
|
}
|
|
|
|
|
|
/* -f: overwrite existing output files */
|
|
|
- if (option_mask32 & OPT_FORCE) {
|
|
|
+ if (option_mask32 & BBUNPK_OPT_FORCE) {
|
|
|
unlink(new_name);
|
|
|
}
|
|
|
|
|
@@ -126,12 +113,12 @@ int FAST_FUNC bbunpack(char **argv,
|
|
|
}
|
|
|
|
|
|
/* Check that the input is sane */
|
|
|
- if (!(option_mask32 & OPT_FORCE) && isatty(STDIN_FILENO)) {
|
|
|
+ if (!(option_mask32 & BBUNPK_OPT_FORCE) && isatty(STDIN_FILENO)) {
|
|
|
bb_error_msg_and_die("compressed data not read from terminal, "
|
|
|
"use -f to force it");
|
|
|
}
|
|
|
|
|
|
- if (!(option_mask32 & SEAMLESS_MAGIC)) {
|
|
|
+ if (!(option_mask32 & BBUNPK_SEAMLESS_MAGIC)) {
|
|
|
init_transformer_state(&xstate);
|
|
|
/*xstate.signature_skipped = 0; - already is */
|
|
|
/*xstate.src_fd = STDIN_FILENO; - already is */
|
|
@@ -145,7 +132,7 @@ int FAST_FUNC bbunpack(char **argv,
|
|
|
xfunc_die();
|
|
|
}
|
|
|
|
|
|
- if (!(option_mask32 & OPT_STDOUT))
|
|
|
+ if (!(option_mask32 & BBUNPK_OPT_STDOUT))
|
|
|
xclose(STDOUT_FILENO); /* with error check! */
|
|
|
|
|
|
if (filename) {
|
|
@@ -176,7 +163,7 @@ int FAST_FUNC bbunpack(char **argv,
|
|
|
}
|
|
|
/* Extreme bloat for gunzip compat */
|
|
|
/* Some users do want this info... */
|
|
|
- if (ENABLE_DESKTOP && (option_mask32 & OPT_VERBOSE)) {
|
|
|
+ if (ENABLE_DESKTOP && (option_mask32 & BBUNPK_OPT_VERBOSE)) {
|
|
|
unsigned percent = status
|
|
|
? ((uoff_t)stat_buf.st_size * 100u / (unsigned long long)status)
|
|
|
: 0;
|
|
@@ -188,7 +175,7 @@ int FAST_FUNC bbunpack(char **argv,
|
|
|
}
|
|
|
/* Delete _source_ file */
|
|
|
del = filename;
|
|
|
- if (option_mask32 & OPT_KEEP) /* ... unless -k */
|
|
|
+ if (option_mask32 & BBUNPK_OPT_KEEP) /* ... unless -k */
|
|
|
del = NULL;
|
|
|
}
|
|
|
if (del)
|
|
@@ -199,7 +186,7 @@ int FAST_FUNC bbunpack(char **argv,
|
|
|
}
|
|
|
} while (*argv && *++argv);
|
|
|
|
|
|
- if (option_mask32 & OPT_STDOUT)
|
|
|
+ if (option_mask32 & BBUNPK_OPT_STDOUT)
|
|
|
xclose(STDOUT_FILENO); /* with error check! */
|
|
|
|
|
|
return exitcode;
|
|
@@ -389,9 +376,9 @@ int gunzip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
|
|
int gunzip_main(int argc UNUSED_PARAM, char **argv)
|
|
|
{
|
|
|
#if ENABLE_FEATURE_GUNZIP_LONG_OPTIONS
|
|
|
- getopt32long(argv, "cfkvqdtn", gunzip_longopts);
|
|
|
+ getopt32long(argv, BBUNPK_OPTSTR "dtn", gunzip_longopts);
|
|
|
#else
|
|
|
- getopt32(argv, "cfkvqdtn");
|
|
|
+ getopt32(argv, BBUNPK_OPTSTR "dtn");
|
|
|
#endif
|
|
|
argv += optind;
|
|
|
|
|
@@ -400,7 +387,7 @@ int gunzip_main(int argc UNUSED_PARAM, char **argv)
|
|
|
* But if seamless magic is enabled, then we are much more clever.
|
|
|
*/
|
|
|
if (ENABLE_ZCAT && (!ENABLE_GUNZIP || applet_name[1] == 'c'))
|
|
|
- option_mask32 |= OPT_STDOUT | SEAMLESS_MAGIC;
|
|
|
+ option_mask32 |= BBUNPK_OPT_STDOUT | BBUNPK_SEAMLESS_MAGIC;
|
|
|
|
|
|
return bbunpack(argv, unpack_gz_stream, make_new_name_gunzip, /*unused:*/ NULL);
|
|
|
}
|
|
@@ -453,10 +440,10 @@ int gunzip_main(int argc UNUSED_PARAM, char **argv)
|
|
|
int bunzip2_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
|
|
int bunzip2_main(int argc UNUSED_PARAM, char **argv)
|
|
|
{
|
|
|
- getopt32(argv, "cfkvqdt");
|
|
|
+ getopt32(argv, BBUNPK_OPTSTR "dt");
|
|
|
argv += optind;
|
|
|
if (ENABLE_BZCAT && (!ENABLE_BUNZIP2 || applet_name[2] == 'c')) /* bzcat */
|
|
|
- option_mask32 |= OPT_STDOUT;
|
|
|
+ option_mask32 |= BBUNPK_OPT_STDOUT;
|
|
|
|
|
|
return bbunpack(argv, unpack_bz2_stream, make_new_name_generic, "bz2");
|
|
|
}
|
|
@@ -526,15 +513,15 @@ int bunzip2_main(int argc UNUSED_PARAM, char **argv)
|
|
|
int unlzma_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
|
|
int unlzma_main(int argc UNUSED_PARAM, char **argv)
|
|
|
{
|
|
|
- IF_LZMA(int opts =) getopt32(argv, "cfkvqdt");
|
|
|
+ IF_LZMA(int opts =) getopt32(argv, BBUNPK_OPTSTR "dt");
|
|
|
# if ENABLE_LZMA
|
|
|
/* lzma without -d or -t? */
|
|
|
- if (applet_name[2] == 'm' && !(opts & (OPT_DECOMPRESS|OPT_TEST)))
|
|
|
+ if (applet_name[2] == 'm' && !(opts & (BBUNPK_OPT_DECOMPRESS|BBUNPK_OPT_TEST)))
|
|
|
bb_show_usage();
|
|
|
# endif
|
|
|
/* lzcat? */
|
|
|
if (ENABLE_LZCAT && applet_name[2] == 'c')
|
|
|
- option_mask32 |= OPT_STDOUT;
|
|
|
+ option_mask32 |= BBUNPK_OPT_STDOUT;
|
|
|
|
|
|
argv += optind;
|
|
|
return bbunpack(argv, unpack_lzma_stream, make_new_name_generic, "lzma");
|
|
@@ -594,15 +581,15 @@ int unlzma_main(int argc UNUSED_PARAM, char **argv)
|
|
|
int unxz_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
|
|
int unxz_main(int argc UNUSED_PARAM, char **argv)
|
|
|
{
|
|
|
- IF_XZ(int opts =) getopt32(argv, "cfkvqdt");
|
|
|
+ IF_XZ(int opts =) getopt32(argv, BBUNPK_OPTSTR "dt");
|
|
|
# if ENABLE_XZ
|
|
|
/* xz without -d or -t? */
|
|
|
- if (applet_name[2] == '\0' && !(opts & (OPT_DECOMPRESS|OPT_TEST)))
|
|
|
+ if (applet_name[2] == '\0' && !(opts & (BBUNPK_OPT_DECOMPRESS|BBUNPK_OPT_TEST)))
|
|
|
bb_show_usage();
|
|
|
# endif
|
|
|
/* xzcat? */
|
|
|
if (ENABLE_XZCAT && applet_name[2] == 'c')
|
|
|
- option_mask32 |= OPT_STDOUT;
|
|
|
+ option_mask32 |= BBUNPK_OPT_STDOUT;
|
|
|
|
|
|
argv += optind;
|
|
|
return bbunpack(argv, unpack_xz_stream, make_new_name_generic, "xz");
|