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**
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
========
**# bpftool map show**

View File

@ -50,6 +50,14 @@ DESCRIPTION
**bpftool prog help**
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
========
**# bpftool prog show**

View File

@ -31,6 +31,14 @@ DESCRIPTION
Note that format of the output of all tools is not guaranteed to be
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
========
**bpftool-map**\ (8), **bpftool-prog**\ (8)

View File

@ -36,6 +36,7 @@
#include <bfd.h>
#include <ctype.h>
#include <errno.h>
#include <getopt.h>
#include <linux/bpf.h>
#include <linux/version.h>
#include <stdio.h>
@ -215,8 +216,32 @@ err_close:
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];
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();