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>
This commit is contained in:
Quentin Monnet 2017-10-23 09:24:06 -07:00 committed by David S. Miller
parent b66e907cfe
commit a2bc2e5c2c
4 changed files with 50 additions and 1 deletions

View File

@ -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**

View File

@ -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**

View File

@ -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)

View File

@ -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();