On 2020-03-04, at 00:23:41 +0100, Pablo Neira Ayuso wrote: > From: Jeremy Sowden <jeremy@xxxxxxxxxx> > > In addition to the package-version and release-name, output the CLI > implementation (if any) and whether mini-gmp was used, e.g.: > > $ ./src/nft -V > nftables v0.9.3 (Topsy) > cli: linenoise > minigmp: no > > Signed-off-by: Jeremy Sowden <jeremy@xxxxxxxxxx> > Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> > --- > Hi Jeremy et al. > > I'm revisiting this one, it's basically your patch with a few > mangling. > > I wonder if it's probably a good idea to introduce a long version > mode. I have seen other tools providing more verbose information > about all build information. > > The idea would be to leave -v/--version as it is, and introduce -V > which would be more verbose. > > Thanks. Fine by me. Btw, I notice that OPTSTRING contains a couple of duplicates. I've attached a patch to remove them. It applies on top of this one. > src/Makefile.am | 3 +++ > src/main.c | 32 +++++++++++++++++++++++++++++++- > 2 files changed, 34 insertions(+), 1 deletion(-) > > diff --git a/src/Makefile.am b/src/Makefile.am > index 9142ab4484f2..b4b9142bf6b0 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -13,6 +13,9 @@ endif > if BUILD_XTABLES > AM_CPPFLAGS += ${XTABLES_CFLAGS} > endif > +if BUILD_MINIGMP > +AM_CPPFLAGS += -DHAVE_MINIGMP > +endif > > AM_CFLAGS = -Wall \ > -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations \ > diff --git a/src/main.c b/src/main.c > index 6ab1b89f4dd5..6a88e777cc1f 100644 > --- a/src/main.c > +++ b/src/main.c > @@ -27,6 +27,7 @@ static struct nft_ctx *nft; > enum opt_vals { > OPT_HELP = 'h', > OPT_VERSION = 'v', > + OPT_VERSION_LONG = 'V', > OPT_CHECK = 'c', > OPT_FILE = 'f', > OPT_INTERACTIVE = 'i', > @@ -46,7 +47,7 @@ enum opt_vals { > OPT_TERSE = 't', > OPT_INVALID = '?', > }; > -#define OPTSTRING "+hvd:cf:iI:jvnsNaeSupypTt" > +#define OPTSTRING "+hvVd:cf:iI:jvnsNaeSupypTt" > > static const struct option options[] = { > { > @@ -141,6 +142,7 @@ static void show_help(const char *name) > "Options:\n" > " -h, --help Show this help\n" > " -v, --version Show version information\n" > +" -V Show extended version information\n" > "\n" > " -c, --check Check commands validity without actually applying the changes.\n" > " -f, --file <filename> Read input from <filename>\n" > @@ -164,6 +166,31 @@ static void show_help(const char *name) > name, DEFAULT_INCLUDE_PATH); > } > > +static void show_version(void) > +{ > + const char *cli, *minigmp; > + > +#if defined(HAVE_LIBREADLINE) > + cli = "readline"; > +#elif defined(HAVE_LIBLINENOISE) > + cli = "linenoise"; > +#else > + cli = "no"; > +#endif > + > +#if defined(HAVE_MINIGMP) > + minigmp = "yes"; > +#else > + minigmp = "no"; > +#endif > + > + printf("%s v%s (%s)\n" > + " cli: %s\n" > + " minigmp: %s\n", > + PACKAGE_NAME, PACKAGE_VERSION, RELEASE_NAME, > + cli, minigmp); > +} > + > static const struct { > const char *name; > enum nft_debug_level level; > @@ -272,6 +299,9 @@ int main(int argc, char * const *argv) > printf("%s v%s (%s)\n", > PACKAGE_NAME, PACKAGE_VERSION, RELEASE_NAME); > exit(EXIT_SUCCESS); > + case OPT_VERSION_LONG: > + show_version(); > + exit(EXIT_SUCCESS); > case OPT_CHECK: > nft_ctx_set_dry_run(nft, true); > break; > -- > 2.11.0 J.
From a0ddf69b9ef82ccc3f3c3174f960da3d58201e31 Mon Sep 17 00:00:00 2001 From: Jeremy Sowden <jeremy@xxxxxxxxxx> Date: Wed, 4 Mar 2020 08:40:15 +0000 Subject: [PATCH] main: remove duplicates from option string. The string of options passed to getopt_long(3) contains duplicates. Update it to match the opt_vals enum which immediately precedes it. Signed-off-by: Jeremy Sowden <jeremy@xxxxxxxxxx> --- src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index 6a88e777cc1f..90208691557f 100644 --- a/src/main.c +++ b/src/main.c @@ -47,7 +47,7 @@ enum opt_vals { OPT_TERSE = 't', OPT_INVALID = '?', }; -#define OPTSTRING "+hvVd:cf:iI:jvnsNaeSupypTt" +#define OPTSTRING "+hvVcf:iI:jnsNSd:aeuypTt" static const struct option options[] = { { -- 2.25.1
Attachment:
signature.asc
Description: PGP signature