Re: [PATCH v11 2/4] parse-options.c: make OPTION_COUNTUP respect "unspecified" values
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 31, 2016, 20:06 UTC
- Message-ID
- <xmqqegaqmmyr.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <CAFZEwPO4CJ-Q=52Es14CdD0mjG-qgy4=X2kU71npi=8x7FsSQw@mail.gmail.com>
Pranit Bauva <pranit.bauva@gmail.com> writes:
Show 16 quoted lines
> On Fri, Apr 1, 2016 at 12:11 AM, Junio C Hamano <gitster@pobox.com> wrote: >> >> case OPTION_COUNTUP: >> + if (*(int *)opt->value < 0) >> + *(int *)opt->value = 0; >> *(int *)opt->value = unset ? 0 : *(int *)opt->value + 1; >> >> That is, upon hitting this case arm, we know that an explicit option >> was given from the command line, so the "unspecified" initial value, >> if it is still there, gets reset to 0, and after doing that, we just >> do the usual thing. > > This does look cleaner. Nice thinking that there is no need to > actually specify when it gets 0. It gets 0 no matter what as long as > OPTION_COUNTUP is speficied in any format (with or without --no) and > variable is "unspecified".
I do not think there is any planned users of such an enhancement, but the above points us into a future possibility to be able to do this:
case OPTION_COUNTUP:
+ if (*(int *)opt->value < 0)
+ *(int *)opt->value = -*(int *)opt->value - 1;
*(int *)opt->value = unset ? 0 : *(int *)opt->value + 1;That is, by using "-2" as the "unspecified" value, you can start counting up from 2 (i.e. the presence of the option resets the variable to 1 and then the option being not "unset" increments it) if your application wants to.