From: Matheus Izvekov Date: Wed, 6 Jan 2010 07:54:49 +0000 (+0100) Subject: gzip: add optional support for --long-opts X-Git-Tag: 1_16_0~98 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=839fd71077d457c9e86afc56ba5cc54a0e1fcfb8;p=oweals%2Fbusybox.git gzip: add optional support for --long-opts Signed-off-by: Matheus Izvekov Signed-off-by: Denys Vlasenko --- diff --git a/archival/Config.in b/archival/Config.in index cae7f20bb..17d5c411b 100644 --- a/archival/Config.in +++ b/archival/Config.in @@ -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 diff --git a/archival/gzip.c b/archival/gzip.c index 71505698c..139eaacea 100644 --- a/archival/gzip.c +++ b/archival/gzip.c @@ -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);