parse-options: factor out usage_indent() and usage_padding()
Extract functions for printing spaces before and after options. We'll need them in the next commit. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
e8e5d294dc
commit
652a6b15bc
|
@ -1020,9 +1020,28 @@ static int usage_argh(const struct option *opts, FILE *outfile)
|
||||||
return utf8_fprintf(outfile, s, opts->argh ? _(opts->argh) : _("..."));
|
return utf8_fprintf(outfile, s, opts->argh ? _(opts->argh) : _("..."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int usage_indent(FILE *outfile)
|
||||||
|
{
|
||||||
|
return fprintf(outfile, " ");
|
||||||
|
}
|
||||||
|
|
||||||
#define USAGE_OPTS_WIDTH 24
|
#define USAGE_OPTS_WIDTH 24
|
||||||
#define USAGE_GAP 2
|
#define USAGE_GAP 2
|
||||||
|
|
||||||
|
static void usage_padding(FILE *outfile, size_t pos)
|
||||||
|
{
|
||||||
|
int pad;
|
||||||
|
if (pos == USAGE_OPTS_WIDTH + 1)
|
||||||
|
pad = -1;
|
||||||
|
else if (pos <= USAGE_OPTS_WIDTH)
|
||||||
|
pad = USAGE_OPTS_WIDTH - pos;
|
||||||
|
else {
|
||||||
|
fputc('\n', outfile);
|
||||||
|
pad = USAGE_OPTS_WIDTH;
|
||||||
|
}
|
||||||
|
fprintf(outfile, "%*s", pad + USAGE_GAP, "");
|
||||||
|
}
|
||||||
|
|
||||||
static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t *ctx,
|
static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t *ctx,
|
||||||
const char * const *usagestr,
|
const char * const *usagestr,
|
||||||
const struct option *opts,
|
const struct option *opts,
|
||||||
|
@ -1108,7 +1127,6 @@ static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t
|
||||||
|
|
||||||
for (; opts->type != OPTION_END; opts++) {
|
for (; opts->type != OPTION_END; opts++) {
|
||||||
size_t pos;
|
size_t pos;
|
||||||
int pad;
|
|
||||||
const char *cp, *np;
|
const char *cp, *np;
|
||||||
|
|
||||||
if (opts->type == OPTION_SUBCOMMAND)
|
if (opts->type == OPTION_SUBCOMMAND)
|
||||||
|
@ -1128,7 +1146,7 @@ static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t
|
||||||
need_newline = 0;
|
need_newline = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pos = fprintf(outfile, " ");
|
pos = usage_indent(outfile);
|
||||||
if (opts->short_name) {
|
if (opts->short_name) {
|
||||||
if (opts->flags & PARSE_OPT_NODASH)
|
if (opts->flags & PARSE_OPT_NODASH)
|
||||||
pos += fprintf(outfile, "%c", opts->short_name);
|
pos += fprintf(outfile, "%c", opts->short_name);
|
||||||
|
@ -1152,16 +1170,8 @@ static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t
|
||||||
!(opts->flags & PARSE_OPT_NOARG))
|
!(opts->flags & PARSE_OPT_NOARG))
|
||||||
pos += usage_argh(opts, outfile);
|
pos += usage_argh(opts, outfile);
|
||||||
|
|
||||||
if (pos == USAGE_OPTS_WIDTH + 1)
|
|
||||||
pad = -1;
|
|
||||||
else if (pos <= USAGE_OPTS_WIDTH)
|
|
||||||
pad = USAGE_OPTS_WIDTH - pos;
|
|
||||||
else {
|
|
||||||
fputc('\n', outfile);
|
|
||||||
pad = USAGE_OPTS_WIDTH;
|
|
||||||
}
|
|
||||||
if (opts->type == OPTION_ALIAS) {
|
if (opts->type == OPTION_ALIAS) {
|
||||||
fprintf(outfile, "%*s", pad + USAGE_GAP, "");
|
usage_padding(outfile, pos);
|
||||||
fprintf_ln(outfile, _("alias of --%s"),
|
fprintf_ln(outfile, _("alias of --%s"),
|
||||||
(const char *)opts->value);
|
(const char *)opts->value);
|
||||||
continue;
|
continue;
|
||||||
|
@ -1169,12 +1179,11 @@ static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t
|
||||||
|
|
||||||
for (cp = _(opts->help); *cp; cp = np) {
|
for (cp = _(opts->help); *cp; cp = np) {
|
||||||
np = strchrnul(cp, '\n');
|
np = strchrnul(cp, '\n');
|
||||||
fprintf(outfile,
|
usage_padding(outfile, pos);
|
||||||
"%*s%.*s\n", pad + USAGE_GAP, "",
|
fprintf(outfile, "%.*s\n", (int)(np - cp), cp);
|
||||||
(int)(np - cp), cp);
|
|
||||||
if (*np)
|
if (*np)
|
||||||
np++;
|
np++;
|
||||||
pad = USAGE_OPTS_WIDTH;
|
pos = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fputc('\n', outfile);
|
fputc('\n', outfile);
|
||||||
|
|
Loading…
Reference in New Issue