gunzip: add support for long options
authorAaro Koskinen <aaro.koskinen@iki.fi>
Mon, 26 Oct 2015 21:42:32 +0000 (23:42 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 27 Oct 2015 20:28:50 +0000 (21:28 +0100)
Add support for long options.

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
archival/bbunzip.c

index 548882f53588bf647b3b2d2cea55d07ad41f3465..e10372e14dc0050679fb1a49da35a16e2555fab7 100644 (file)
@@ -290,6 +290,13 @@ int uncompress_main(int argc UNUSED_PARAM, char **argv)
 //config:        gunzip is used to decompress archives created by gzip.
 //config:        You can use the `-t' option to test the integrity of
 //config:        an archive, without decompressing it.
+//config:
+//config:config FEATURE_GUNZIP_LONG_OPTIONS
+//config:      bool "Enable long options"
+//config:      default y
+//config:      depends on GUNZIP && LONG_OPTS
+//config:      help
+//config:        Enable use of long options.
 
 //applet:IF_GUNZIP(APPLET(gunzip, BB_DIR_BIN, BB_SUID_DROP))
 //applet:IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat))
@@ -321,6 +328,16 @@ char* FAST_FUNC make_new_name_gunzip(char *filename, const char *expected_ext UN
        }
        return filename;
 }
+
+#if ENABLE_FEATURE_GUNZIP_LONG_OPTIONS
+static const char gunzip_longopts[] ALIGN1 =
+       "stdout\0"              No_argument       "c"
+       "to-stdout\0"           No_argument       "c"
+       "force\0"               No_argument       "f"
+       "test\0"                No_argument       "t"
+       ;
+#endif
+
 /*
  * Linux kernel build uses gzip -d -n. We accept and ignore it.
  * Man page says:
@@ -337,6 +354,9 @@ char* FAST_FUNC make_new_name_gunzip(char *filename, const char *expected_ext UN
 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
+       applet_long_options = gunzip_longopts;
+#endif
        getopt32(argv, "cfvqdtn");
        argv += optind;