From: Jeff King Date: Wed, 16 Mar 2016 23:16:26 GMT Subject: Re: parse-options does not recognize "unspecified" behavior Message-ID: <20160316231626.GA11808@sigill.intra.peff.net> In-Reply-To: On Wed, Mar 16, 2016 at 02:53:17PM -0700, Stefan Beller wrote: > On Wed, Mar 16, 2016 at 2:44 PM, Jeff King wrote: > > On Wed, Mar 16, 2016 at 05:37:03PM -0400, Eric Sunshine wrote: > > > >> A much easier solution would be to update OPT_VERBOSE() to understand > >> that negative values are "unspecified", and then --verbose would > >> (pseudocode): > >> > >> if (value < 0) > >> value = 0 > >> value++; > >> > >> and --no-verbose would: > >> > >> value = 0 > >> > >> That should be compatible with existing clients of OPT__VERBOSE() > >> which initialize the value to 0, and should satisfy Pranit's case; he > >> can initialize it to -1, and if it is still -1 when option parsing is > >> done, then he knows that neither --verbose nor --no-verbose was seen. > > > > Yes, that makes much more sense to me. Thanks for the back-story. > > Is there any command which needs more than one --no-verbose? > (as an abuse to stacking --quiet multiple times)? I'm not sure I understand. "--no-verbose" is just about resetting the value. So you might get it multiple times in: git commit -v --no-verbose -v --no-verbose but the caller would not care. Which makes me think I'm misunderstanding your question. You also mention "--quiet", but that is not handled by OPT__VERBOSE, but rather by OPT__QUIET. And there I do not think the "-1 is undefined" trick works as well there, because presumably "-1" is the same as one "--quiet". -Peff