Re: [PATCH nft] main: add more information to `nft -V`.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux