[PATCH 1/2] gunzip: add support for long options

Aaro Koskinen aaro.koskinen at iki.fi
Mon Oct 26 21:42:32 UTC 2015


Add support for long options.

Signed-off-by: Aaro Koskinen <aaro.koskinen at iki.fi>
---
 archival/bbunzip.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/archival/bbunzip.c b/archival/bbunzip.c
index 548882f..e10372e 100644
--- a/archival/bbunzip.c
+++ b/archival/bbunzip.c
@@ -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;
 
-- 
2.4.0



More information about the busybox mailing list