From: Jonathan Nieder <jrnieder@gmail.com>
To: git@vger.kernel.org
Cc: "Stephen Boyd" <bebarino@gmail.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Pierre Habouzit" <madcoder@debian.org>
Subject: [PATCH 04/10 v2] parse-options: sanity check PARSE_OPT_NOARG flag
Date: Thu, 2 Dec 2010 00:08:57 -0600 [thread overview]
Message-ID: <20101202060857.GD32125@burratino> (raw)
In-Reply-To: <20101201233020.GE31815@burratino>
Some option types cannot use an argument --- boolean options that
would set a bit or flag or increment a counter, for example. If
configured in the flag word to accept an argument anyway, the result
is an argument that is advertised in "program -h" output only to be
rejected by parse-options::get_value.
Luckily all current users of these option types use PARSE_OPT_NOARG
and do not use PARSE_OPT_OPTARG. Add a check to ensure that that
remains true. The check is run once for each invocation of
parse_option_start().
Improved-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Changes since v1:
- adapt for updated patch 2/10
parse-options.c | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/parse-options.c b/parse-options.c
index 9f6d305..74ab0c8 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -330,6 +330,19 @@ static void parse_options_check(const struct option *opts)
opts->long_name))
err |= optbug(opts, "uses feature "
"not supported for dashless options");
+ switch (opts->type) {
+ case OPTION_BOOLEAN:
+ case OPTION_BIT:
+ case OPTION_NEGBIT:
+ case OPTION_SET_INT:
+ case OPTION_SET_PTR:
+ case OPTION_NUMBER:
+ if ((opts->flags & PARSE_OPT_OPTARG) ||
+ !(opts->flags & PARSE_OPT_NOARG))
+ err |= optbug(opts, "should not accept an argument");
+ default:
+ ; /* ok. (usually accepts an argument) */
+ }
}
if (err)
exit(128);
--
1.7.2.3
next prev parent reply other threads:[~2010-12-02 6:09 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-01 23:27 [PATCH v3 00/10] update-index: migrate to parse-options API Jonathan Nieder
2010-12-01 23:28 ` [PATCH 01/10] parse-options: Don't call parse_options_check() so much Jonathan Nieder
2010-12-05 18:14 ` René Scharfe
2010-12-06 7:57 ` Stephen Boyd
2010-12-01 23:29 ` [PATCH 02/10] parse-options: clearer reporting of API misuse Jonathan Nieder
2010-12-02 4:57 ` Jonathan Nieder
2010-12-02 6:01 ` [PATCH 02/10 v2] " Jonathan Nieder
2010-12-02 6:13 ` [PATCH 02/10 v2 resend] " Jonathan Nieder
2010-12-01 23:29 ` [PATCH 03/10] parse-options: move NODASH sanity checks to parse_options_check Jonathan Nieder
2010-12-02 6:05 ` [PATCH 03/10 v2] " Jonathan Nieder
2010-12-01 23:30 ` [PATCH 04/10] parse-options: sanity check PARSE_OPT_NOARG flag Jonathan Nieder
2010-12-02 6:08 ` Jonathan Nieder [this message]
2010-12-01 23:30 ` [PATCH 05/10] parse-options: do not infer PARSE_OPT_NOARG from option type Jonathan Nieder
2010-12-01 23:31 ` [PATCH 06/10] parse-options: never suppress arghelp if LITERAL_ARGHELP is set Jonathan Nieder
2010-12-03 9:16 ` Stephen Boyd
2010-12-03 9:40 ` Jonathan Nieder
2010-12-03 17:53 ` Stephen Boyd
2010-12-01 23:32 ` [PATCH 07/10] parse-options: allow git commands to invent new option types Jonathan Nieder
2010-12-01 23:32 ` [PATCH 08/10] parse-options: make resuming easier after PARSE_OPT_STOP_AT_NON_OPTION Jonathan Nieder
2010-12-01 23:33 ` [PATCH 09/10] setup: save prefix (original cwd relative to toplevel) in startup_info Jonathan Nieder
2010-12-01 23:34 ` [PATCH 10/10] update-index: migrate to parse-options API Jonathan Nieder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101202060857.GD32125@burratino \
--to=jrnieder@gmail.com \
--cc=bebarino@gmail.com \
--cc=git@vger.kernel.org \
--cc=madcoder@debian.org \
--cc=pclouds@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.