gzip: add optional support for --long-opts

Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Matheus Izvekov 2010-01-06 08:54:49 +01:00 committed by Denys Vlasenko
parent 251912443c
commit 839fd71077
2 changed files with 27 additions and 1 deletions

View File

@ -165,6 +165,13 @@ config GZIP
gzip is used to compress files.
It's probably the most widely used UNIX compression program.
config FEATURE_GZIP_LONG_OPTIONS
bool "Enable long options"
default n
depends on GZIP && LONG_OPTS
help
Enable use of long options, increases size by about 106 Bytes
config LZOP
bool "lzop"
default n

View File

@ -2043,6 +2043,23 @@ IF_DESKTOP(long long) int pack_gzip(unpack_info_t *info UNUSED_PARAM)
return 0;
}
#if ENABLE_FEATURE_GZIP_LONG_OPTIONS
static const char gzip_longopts[] ALIGN1 =
"stdout\0" No_argument "c"
"to-stdout\0" No_argument "c"
"force\0" No_argument "f"
"verbose\0" No_argument "v"
#if ENABLE_GUNZIP
"decompress\0" No_argument "d"
"uncompress\0" No_argument "d"
"test\0" No_argument "t"
#endif
"quiet\0" No_argument "q"
"fast\0" No_argument "1"
"best\0" No_argument "9"
;
#endif
/*
* Linux kernel build uses gzip -d -n. We accept and ignore it.
* Man page says:
@ -2066,6 +2083,9 @@ int gzip_main(int argc UNUSED_PARAM, char **argv)
{
unsigned opt;
#if ENABLE_FEATURE_GZIP_LONG_OPTIONS
applet_long_options = gzip_longopts;
#endif
/* Must match bbunzip's constants OPT_STDOUT, OPT_FORCE! */
opt = getopt32(argv, "cfv" IF_GUNZIP("dt") "q123456789n");
#if ENABLE_GUNZIP /* gunzip_main may not be visible... */
@ -2080,7 +2100,6 @@ int gzip_main(int argc UNUSED_PARAM, char **argv)
SET_PTR_TO_GLOBALS((char *)xzalloc(sizeof(struct globals)+sizeof(struct globals2))
+ sizeof(struct globals));
barrier();
/* Allocate all global buffers (for DYN_ALLOC option) */
ALLOC(uch, G1.l_buf, INBUFSIZ);