Эх сурвалжийг харах

tools: bpftool: add option parsing to bpftool, --help and --version

Add an option parsing facility to bpftool, in prevision of future
options for demanding JSON output. Currently, two options are added:
--help and --version, that act the same as the respective commands
`help` and `version`.

Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Quentin Monnet 7 жил өмнө
parent
commit
a2bc2e5c2c

+ 8 - 0
tools/bpf/bpftool/Documentation/bpftool-map.rst

@@ -68,6 +68,14 @@ DESCRIPTION
 	**bpftool map help**
 	**bpftool map help**
 		  Print short help message.
 		  Print short help message.
 
 
+OPTIONS
+=======
+	-h, --help
+		  Print short generic help message (similar to **bpftool help**).
+
+	-v, --version
+		  Print version number (similar to **bpftool version**).
+
 EXAMPLES
 EXAMPLES
 ========
 ========
 **# bpftool map show**
 **# bpftool map show**

+ 8 - 0
tools/bpf/bpftool/Documentation/bpftool-prog.rst

@@ -50,6 +50,14 @@ DESCRIPTION
 	**bpftool prog help**
 	**bpftool prog help**
 		  Print short help message.
 		  Print short help message.
 
 
+OPTIONS
+=======
+	-h, --help
+		  Print short generic help message (similar to **bpftool help**).
+
+	-v, --version
+		  Print version number (similar to **bpftool version**).
+
 EXAMPLES
 EXAMPLES
 ========
 ========
 **# bpftool prog show**
 **# bpftool prog show**

+ 8 - 0
tools/bpf/bpftool/Documentation/bpftool.rst

@@ -31,6 +31,14 @@ DESCRIPTION
 	Note that format of the output of all tools is not guaranteed to be
 	Note that format of the output of all tools is not guaranteed to be
 	stable and should not be depended upon.
 	stable and should not be depended upon.
 
 
+OPTIONS
+=======
+	-h, --help
+		  Print short help message (similar to **bpftool help**).
+
+	-v, --version
+		  Print version number (similar to **bpftool version**).
+
 SEE ALSO
 SEE ALSO
 ========
 ========
 	**bpftool-map**\ (8), **bpftool-prog**\ (8)
 	**bpftool-map**\ (8), **bpftool-prog**\ (8)

+ 26 - 1
tools/bpf/bpftool/main.c

@@ -36,6 +36,7 @@
 #include <bfd.h>
 #include <bfd.h>
 #include <ctype.h>
 #include <ctype.h>
 #include <errno.h>
 #include <errno.h>
+#include <getopt.h>
 #include <linux/bpf.h>
 #include <linux/bpf.h>
 #include <linux/version.h>
 #include <linux/version.h>
 #include <stdio.h>
 #include <stdio.h>
@@ -215,8 +216,32 @@ err_close:
 
 
 int main(int argc, char **argv)
 int main(int argc, char **argv)
 {
 {
+	static const struct option options[] = {
+		{ "help",	no_argument,	NULL,	'h' },
+		{ "version",	no_argument,	NULL,	'V' },
+		{ 0 }
+	};
+	int opt;
+
+	last_do_help = do_help;
 	bin_name = argv[0];
 	bin_name = argv[0];
-	NEXT_ARG();
+
+	while ((opt = getopt_long(argc, argv, "Vh",
+				  options, NULL)) >= 0) {
+		switch (opt) {
+		case 'V':
+			return do_version(argc, argv);
+		case 'h':
+			return do_help(argc, argv);
+		default:
+			usage();
+		}
+	}
+
+	argc -= optind;
+	argv += optind;
+	if (argc < 0)
+		usage();
 
 
 	bfd_init();
 	bfd_init();