aboutsummaryrefslogtreecommitdiffstats
path: root/parse-options.c
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2018-08-02 21:18:14 +0200
committerJunio C Hamano <gitster@pobox.com>2018-08-03 08:36:20 -0700
commit5f0df44cd79a953c287ccb598896ea7aaa2cc9e3 (patch)
treed438018d4b5dec908b60bd46913e36a8e6304ade /parse-options.c
parentb8ade4c5766774207e05c8f92e262f8f6835bd3d (diff)
downloadgit-5f0df44cd79a953c287ccb598896ea7aaa2cc9e3.tar.gz
parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
Parseopt wraps argument help strings in a pair of angular brackets by default, to tell users that they need to replace it with an actual value. This is useful in most cases, because most option arguments are indeed single values of a certain type. The option PARSE_OPT_LITERAL_ARGHELP needs to be used in option definitions with arguments that have multiple parts or are literal strings. Stop adding these angular brackets if special characters are present, as they indicate that we don't deal with a simple placeholder. This simplifies the code a bit and makes defining special options slightly easier. Remove the flag PARSE_OPT_LITERAL_ARGHELP in the cases where the new and more cautious handling suffices. Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'parse-options.c')
-rw-r--r--parse-options.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/parse-options.c b/parse-options.c
index fca7159646..2a2b97aec9 100644
--- a/parse-options.c
+++ b/parse-options.c
@@ -562,7 +562,8 @@ int parse_options(int argc, const char **argv, const char *prefix,
static int usage_argh(const struct option *opts, FILE *outfile)
{
const char *s;
- int literal = (opts->flags & PARSE_OPT_LITERAL_ARGHELP) || !opts->argh;
+ int literal = (opts->flags & PARSE_OPT_LITERAL_ARGHELP) ||
+ !opts->argh || !!strpbrk(opts->argh, "()<>[]|");
if (opts->flags & PARSE_OPT_OPTARG)
if (opts->long_name)
s = literal ? "[=%s]" : "[=<%s>]";