[ccan] [PATCH 2/2] opt: add an int decrementing helper function

Rusty Russell rusty at rustcorp.com.au
Sat Jun 21 17:20:51 EST 2014


Douglas Bagnall <douglas at halo.gen.nz> writes:
> opt_dec_intval decrements an int value, just as opt_inc_intval
> increments.

Thanksm applied.

Cheers,
Rusty.

> There is not much more to say, other than it allows this
> kind of thing, with balanced opposing options:
>
>     static int opt_verbosity = 0;
>     static struct opt_table options[] = {
>             OPT_WITHOUT_ARG("-q|--quiet", opt_dec_intval,
>                             &opt_verbosity, "print less"),
>             OPT_WITHOUT_ARG("-v|--verbose", opt_inc_intval,
>                             &opt_verbosity, "print more"),
>             OPT_ENDTABLE
>     };
>
> which is an occasionally seen idiom.  It allows, e.g., people who like
> quiet to use `alias foo='foo -q'`, while letting them get back to
> normal and verbose modes with various amounts of '-v's.
>
> Signed-off-by: Douglas Bagnall <douglas at halo.gen.nz>
> ---
>  ccan/opt/helpers.c | 6 ++++++
>  ccan/opt/opt.h     | 3 ++-
>  2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/ccan/opt/helpers.c b/ccan/opt/helpers.c
> index e531a7d..c557f96 100644
> --- a/ccan/opt/helpers.c
> +++ b/ccan/opt/helpers.c
> @@ -165,6 +165,12 @@ char *opt_inc_intval(int *i)
>  	return NULL;
>  }
>  
> +char *opt_dec_intval(int *i)
> +{
> +	(*i)--;
> +	return NULL;
> +}
> +
>  /* Display version string. */
>  char *opt_version_and_exit(const char *version)
>  {
> diff --git a/ccan/opt/opt.h b/ccan/opt/opt.h
> index f891002..727dacd 100644
> --- a/ccan/opt/opt.h
> +++ b/ccan/opt/opt.h
> @@ -450,8 +450,9 @@ void opt_show_ulonglongval_si(char buf[OPT_SHOW_LEN], const unsigned long long *
>  
>  
>  
> -/* Increment. */
> +/* Increment and decrement. */
>  char *opt_inc_intval(int *i);
> +char *opt_dec_intval(int *i);
>  
>  /* Display version string to stdout, exit(0). */
>  char *opt_version_and_exit(const char *version);
> -- 
> 1.8.3.2
>
> _______________________________________________
> ccan mailing list
> ccan at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/ccan


More information about the ccan mailing list