b04ba2bb42
It is natural to expect that an option defined with OPT_BOOLEAN() could be
used in this way:
int option = -1; /* unspecified */
struct option options[] = {
OPT_BOOLEAN(0, "option", &option, "set option"),
OPT_END()
};
parse_options(ac, av, prefix, options, usage, 0);
if (option < 0)
... do the default thing ...
else if (!option)
... --no-option was given ...
else
... --option was given ...
to easily tell three cases apart:
- There is no mention of the `--option` on the command line;
- The variable is positively set with `--option`; or
- The variable is explicitly negated with `--no-option`.
Unfortunately, this is not the case. OPT_BOOLEAN() increments the variable
every time `--option` is given, and resets it to zero when `--no-option`
is given.
As a first step to remedy this, introduce a true boolean OPT_BOOL(), and
rename OPT_BOOLEAN() to OPT_COUNTUP(). To help transitioning, OPT_BOOLEAN
and OPTION_BOOLEAN are defined as deprecated synonyms to OPT_COUNTUP and
OPTION_COUNTUP respectively.
This is what
|
||
---|---|---|
.. | ||
.gitignore | ||
api-allocation-growing.txt | ||
api-builtin.txt | ||
api-decorate.txt | ||
api-diff.txt | ||
api-directory-listing.txt | ||
api-gitattributes.txt | ||
api-grep.txt | ||
api-hash.txt | ||
api-history-graph.txt | ||
api-in-core-index.txt | ||
api-index-skel.txt | ||
api-index.sh | ||
api-lockfile.txt | ||
api-merge.txt | ||
api-object-access.txt | ||
api-parse-options.txt | ||
api-quote.txt | ||
api-ref-iteration.txt | ||
api-remote.txt | ||
api-revision-walking.txt | ||
api-run-command.txt | ||
api-setup.txt | ||
api-sigchain.txt | ||
api-strbuf.txt | ||
api-string-list.txt | ||
api-tree-walking.txt | ||
api-xdiff-interface.txt | ||
index-format.txt | ||
pack-format.txt | ||
pack-heuristics.txt | ||
pack-protocol.txt | ||
protocol-capabilities.txt | ||
protocol-common.txt | ||
racy-git.txt | ||
send-pack-pipeline.txt | ||
shallow.txt | ||
trivial-merge.txt |