unlzma: add "lzma -d" alias, add -t support, rename lzmacat->lzcat

Also coalesce some common strings

   text    data     bss     dec     hex filename
 844110     453    6812  851375   cfdaf busybox_old
 844061     453    6812  851326   cfd7e busybox_unstripped

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2010-05-27 02:22:54 +02:00
parent c5f30c0df8
commit ccb88a689e
6 changed files with 59 additions and 36 deletions

View File

@ -327,6 +327,14 @@ config FEATURE_LZMA_FAST
This option reduces decompression time by about 25% at the cost of This option reduces decompression time by about 25% at the cost of
a 1K bigger binary. a 1K bigger binary.
config FEATURE_LZMA_ALIAS
bool "Provide lzma alias which supports only unpacking"
default n
depends on UNLZMA
help
Enable this option if you want commands like "lzma -d" to work.
IOW: you'll get lzma applet, but it will always require -d option.
config UNZIP config UNZIP
bool "unzip" bool "unzip"
default n default n

View File

@ -9,12 +9,12 @@
#include "unarchive.h" #include "unarchive.h"
enum { enum {
OPT_STDOUT = 0x1, OPT_STDOUT = 1 << 0,
OPT_FORCE = 0x2, OPT_FORCE = 1 << 1,
/* gunzip and bunzip2 only: */ /* only some decompressors: */
OPT_VERBOSE = 0x4, OPT_VERBOSE = 1 << 2,
OPT_DECOMPRESS = 0x8, OPT_DECOMPRESS = 1 << 3,
OPT_TEST = 0x10, OPT_TEST = 1 << 4,
}; };
static static
@ -333,12 +333,17 @@ IF_DESKTOP(long long) int unpack_unlzma(unpack_info_t *info UNUSED_PARAM)
int unlzma_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int unlzma_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int unlzma_main(int argc UNUSED_PARAM, char **argv) int unlzma_main(int argc UNUSED_PARAM, char **argv)
{ {
getopt32(argv, "cf"); int opts = getopt32(argv, "cfvdt");
argv += optind; # if ENABLE_FEATURE_LZMA_ALIAS
/* lzmacat? */ /* lzma without -d or -t? */
if (applet_name[4] == 'c') if (applet_name[2] == 'm' && !(opts & (OPT_DECOMPRESS|OPT_TEST)))
bb_show_usage();
# endif
/* lzcat? */
if (applet_name[2] == 'c')
option_mask32 |= OPT_STDOUT; option_mask32 |= OPT_STDOUT;
argv += optind;
return bbunpack(argv, make_new_name_unlzma, unpack_unlzma); return bbunpack(argv, make_new_name_unlzma, unpack_unlzma);
} }
@ -346,7 +351,7 @@ int unlzma_main(int argc UNUSED_PARAM, char **argv)
/* /*
* Uncompress applet for busybox (c) 2002 Glenn McGrath * Uncompress applet for busybox (c) 2002 Glenn McGrath
* *
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details. * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/ */

View File

@ -229,7 +229,7 @@ unpack_Z_stream(int fd_in, int fd_out)
("insize:%d posbits:%d inbuf:%02X %02X %02X %02X %02X (%d)", ("insize:%d posbits:%d inbuf:%02X %02X %02X %02X %02X (%d)",
insize, posbits, p[-1], p[0], p[1], p[2], p[3], insize, posbits, p[-1], p[0], p[1], p[2], p[3],
(posbits & 07)); (posbits & 07));
bb_error_msg("uncompress: corrupt input"); bb_error_msg("corrupted data");
goto err; goto err;
} }

View File

@ -738,12 +738,12 @@ static NOINLINE smallint lzo_decompress(const header_t *h)
bb_error_msg_and_die("this file is a split lzop file"); bb_error_msg_and_die("this file is a split lzop file");
if (dst_len > MAX_BLOCK_SIZE) if (dst_len > MAX_BLOCK_SIZE)
bb_error_msg_and_die("lzop file corrupted"); bb_error_msg_and_die("corrupted data");
/* read compressed block size */ /* read compressed block size */
src_len = read32(); src_len = read32();
if (src_len <= 0 || src_len > dst_len) if (src_len <= 0 || src_len > dst_len)
bb_error_msg_and_die("lzop file corrupted"); bb_error_msg_and_die("corrupted data");
if (dst_len > block_size) { if (dst_len > block_size) {
if (b2) { if (b2) {
@ -797,7 +797,7 @@ static NOINLINE smallint lzo_decompress(const header_t *h)
r = lzo1x_decompress_safe(b1, src_len, b2, &d, NULL); r = lzo1x_decompress_safe(b1, src_len, b2, &d, NULL);
if (r != 0 /*LZO_E_OK*/ || dst_len != d) { if (r != 0 /*LZO_E_OK*/ || dst_len != d) {
bb_error_msg_and_die("corrupted compressed data"); bb_error_msg_and_die("corrupted data");
} }
dst = b2; dst = b2;
} else { } else {

View File

@ -253,7 +253,8 @@ IF_LSMOD(APPLET(lsmod, _BB_DIR_SBIN, _BB_SUID_DROP))
IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe)) IF_MODPROBE_SMALL(APPLET_ODDNAME(lsmod, modprobe, _BB_DIR_SBIN, _BB_SUID_DROP, modprobe))
IF_LSPCI(APPLET(lspci, _BB_DIR_USR_BIN, _BB_SUID_DROP)) IF_LSPCI(APPLET(lspci, _BB_DIR_USR_BIN, _BB_SUID_DROP))
IF_LSUSB(APPLET(lsusb, _BB_DIR_USR_BIN, _BB_SUID_DROP)) IF_LSUSB(APPLET(lsusb, _BB_DIR_USR_BIN, _BB_SUID_DROP))
IF_UNLZMA(APPLET_ODDNAME(lzmacat, unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzmacat)) IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzcat))
IF_FEATURE_LZMA_ALIAS(APPLET_ODDNAME(lzma, unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzma))
IF_LZOP(APPLET(lzop, _BB_DIR_BIN, _BB_SUID_DROP)) IF_LZOP(APPLET(lzop, _BB_DIR_BIN, _BB_SUID_DROP))
IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzopcat)) IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzopcat))
IF_MAKEDEVS(APPLET(makedevs, _BB_DIR_SBIN, _BB_SUID_DROP)) IF_MAKEDEVS(APPLET(makedevs, _BB_DIR_SBIN, _BB_SUID_DROP))

View File

@ -197,7 +197,7 @@
#define bunzip2_trivial_usage \ #define bunzip2_trivial_usage \
"[OPTIONS] [FILE]..." "[OPTIONS] [FILE]..."
#define bunzip2_full_usage "\n\n" \ #define bunzip2_full_usage "\n\n" \
"Uncompress FILEs (or stdin)\n" \ "Decompress FILEs (or stdin)\n" \
"\nOptions:" \ "\nOptions:" \
"\n -c Write to stdout" \ "\n -c Write to stdout" \
"\n -f Force" \ "\n -f Force" \
@ -207,10 +207,10 @@
#define bzip2_full_usage "\n\n" \ #define bzip2_full_usage "\n\n" \
"Compress FILEs (or stdin) with bzip2 algorithm\n" \ "Compress FILEs (or stdin) with bzip2 algorithm\n" \
"\nOptions:" \ "\nOptions:" \
"\n -c Write to stdout" \ "\n -1..9 Compression level" \
"\n -d Decompress" \ "\n -d Decompress" \
"\n -c Write to stdout" \
"\n -f Force" \ "\n -f Force" \
"\n -1..-9 Compression level" \
#define busybox_notes_usage \ #define busybox_notes_usage \
"Hello world!\n" "Hello world!\n"
@ -218,13 +218,14 @@
#define lzop_trivial_usage \ #define lzop_trivial_usage \
"[-cfvd123456789CF] [FILE]..." "[-cfvd123456789CF] [FILE]..."
#define lzop_full_usage "\n\n" \ #define lzop_full_usage "\n\n" \
" -c Write to stdout" \ "Options:" \
"\n -1..9 Compression level" \
"\n -d Decompress" \
"\n -c Write to stdout" \
"\n -f Force" \ "\n -f Force" \
"\n -v Verbose" \ "\n -v Verbose" \
"\n -d Decompress" \
"\n -F Don't store or verify checksum" \ "\n -F Don't store or verify checksum" \
"\n -C Also write checksum of compressed block" \ "\n -C Also write checksum of compressed block" \
"\n -1..9 Compression level" \
#define lzopcat_trivial_usage \ #define lzopcat_trivial_usage \
"[-vCF] [FILE]..." "[-vCF] [FILE]..."
@ -235,7 +236,8 @@
#define unlzop_trivial_usage \ #define unlzop_trivial_usage \
"[-cfvCF] [FILE]..." "[-cfvCF] [FILE]..."
#define unlzop_full_usage "\n\n" \ #define unlzop_full_usage "\n\n" \
" -c Write to stdout" \ "Options:" \
"\n -c Write to stdout" \
"\n -f Force" \ "\n -f Force" \
"\n -v Verbose" \ "\n -v Verbose" \
"\n -F Don't store or verify checksum" \ "\n -F Don't store or verify checksum" \
@ -243,20 +245,29 @@
#define bzcat_trivial_usage \ #define bzcat_trivial_usage \
"FILE" "FILE"
#define bzcat_full_usage "\n\n" \ #define bzcat_full_usage "\n\n" \
"Uncompress to stdout" "Decompress to stdout"
#define unlzma_trivial_usage \ #define unlzma_trivial_usage \
"[OPTIONS] [FILE]..." "[OPTIONS] [FILE]..."
#define unlzma_full_usage "\n\n" \ #define unlzma_full_usage "\n\n" \
"Uncompress FILE (or stdin)\n" \ "Decompress FILE (or stdin)\n" \
"\nOptions:" \ "\nOptions:" \
"\n -c Write to stdout" \ "\n -c Write to stdout" \
"\n -f Force" \ "\n -f Force" \
#define lzmacat_trivial_usage \ #define lzma_trivial_usage \
"-d [OPTIONS] [FILE]..."
#define lzma_full_usage "\n\n" \
"Decompress FILE (or stdin)\n" \
"\nOptions:" \
"\n -d Decompress" \
"\n -c Write to stdout" \
"\n -f Force" \
#define lzcat_trivial_usage \
"FILE" "FILE"
#define lzmacat_full_usage "\n\n" \ #define lzcat_full_usage "\n\n" \
"Uncompress to stdout" "Decompress to stdout"
#define cal_trivial_usage \ #define cal_trivial_usage \
"[-jy] [[MONTH] YEAR]" "[-jy] [[MONTH] YEAR]"
@ -267,11 +278,9 @@
"\n -y Display the entire year" \ "\n -y Display the entire year" \
#define cat_trivial_usage \ #define cat_trivial_usage \
"[-u] [FILE]..." "[FILE]..."
#define cat_full_usage "\n\n" \ #define cat_full_usage "\n\n" \
"Concatenate FILEs and print them to stdout\n" \ "Concatenate FILEs and print them to stdout" \
"\nOptions:" \
"\n -u Use unbuffered i/o (ignored)" \
#define cat_example_usage \ #define cat_example_usage \
"$ cat /proc/uptime\n" \ "$ cat /proc/uptime\n" \
@ -1610,7 +1619,7 @@
#define gunzip_trivial_usage \ #define gunzip_trivial_usage \
"[OPTIONS] [FILE]..." "[OPTIONS] [FILE]..."
#define gunzip_full_usage "\n\n" \ #define gunzip_full_usage "\n\n" \
"Uncompress FILEs (or stdin)\n" \ "Decompress FILEs (or stdin)\n" \
"\nOptions:" \ "\nOptions:" \
"\n -c Write to stdout" \ "\n -c Write to stdout" \
"\n -f Force" \ "\n -f Force" \
@ -1628,8 +1637,8 @@
#define gzip_full_usage "\n\n" \ #define gzip_full_usage "\n\n" \
"Compress FILEs (or stdin)\n" \ "Compress FILEs (or stdin)\n" \
"\nOptions:" \ "\nOptions:" \
"\n -c Write to stdout" \
"\n -d Decompress" \ "\n -d Decompress" \
"\n -c Write to stdout" \
"\n -f Force" \ "\n -f Force" \
#define gzip_example_usage \ #define gzip_example_usage \
@ -4977,7 +4986,7 @@
#define uncompress_trivial_usage \ #define uncompress_trivial_usage \
"[-cf] [FILE]..." "[-cf] [FILE]..."
#define uncompress_full_usage "\n\n" \ #define uncompress_full_usage "\n\n" \
"Uncompress .Z file[s]\n" \ "Decompress .Z file[s]\n" \
"\nOptions:" \ "\nOptions:" \
"\n -c Extract to stdout" \ "\n -c Extract to stdout" \
"\n -f Overwrite an existing file" \ "\n -f Overwrite an existing file" \
@ -5224,7 +5233,7 @@
#define zcat_trivial_usage \ #define zcat_trivial_usage \
"FILE" "FILE"
#define zcat_full_usage "\n\n" \ #define zcat_full_usage "\n\n" \
"Uncompress to stdout" "Decompress to stdout"
#define zcip_trivial_usage \ #define zcip_trivial_usage \
"[OPTIONS] IFACE SCRIPT" "[OPTIONS] IFACE SCRIPT"