Merge branch 'sb/show-branch-parse-options' into sb/opt-filename
* sb/show-branch-parse-options: show-branch: migrate to parse-options API parse-options: add PARSE_OPT_LITERAL_ARGHELP for complicated argh's Conflicts: parse-options.h
This commit is contained in:
@ -412,6 +412,20 @@ int parse_options(int argc, const char **argv, const struct option *options,
|
||||
return parse_options_end(&ctx);
|
||||
}
|
||||
|
||||
static int usage_argh(const struct option *opts)
|
||||
{
|
||||
const char *s;
|
||||
int literal = opts->flags & PARSE_OPT_LITERAL_ARGHELP;
|
||||
if (opts->flags & PARSE_OPT_OPTARG)
|
||||
if (opts->long_name)
|
||||
s = literal ? "[=%s]" : "[=<%s>]";
|
||||
else
|
||||
s = literal ? "[%s]" : "[<%s>]";
|
||||
else
|
||||
s = literal ? " %s" : " <%s>";
|
||||
return fprintf(stderr, s, opts->argh);
|
||||
}
|
||||
|
||||
#define USAGE_OPTS_WIDTH 24
|
||||
#define USAGE_GAP 2
|
||||
|
||||
@ -478,15 +492,9 @@ int usage_with_options_internal(const char * const *usagestr,
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
case OPTION_STRING:
|
||||
if (opts->argh) {
|
||||
if (opts->flags & PARSE_OPT_OPTARG)
|
||||
if (opts->long_name)
|
||||
pos += fprintf(stderr, "[=<%s>]", opts->argh);
|
||||
else
|
||||
pos += fprintf(stderr, "[<%s>]", opts->argh);
|
||||
else
|
||||
pos += fprintf(stderr, " <%s>", opts->argh);
|
||||
} else {
|
||||
if (opts->argh)
|
||||
pos += usage_argh(opts);
|
||||
else {
|
||||
if (opts->flags & PARSE_OPT_OPTARG)
|
||||
if (opts->long_name)
|
||||
pos += fprintf(stderr, "[=...]");
|
||||
|
Reference in New Issue
Block a user