parse-options: refactor flags for usage_with_options_internal

When reading or editing calls to usage_with_options_internal, it is
difficult to tell what trailing "0, 0", "0, 1", "1, 0" arguments mean
(NB there is never a "1, 1" case).

Give the flags readable names to improve call-sites without changing any
behavior.

Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
main
D. Ben Knoble 2025-08-03 12:10:26 -04:00 committed by Junio C Hamano
parent 5119721fe1
commit fe54b9ef02
1 changed files with 15 additions and 5 deletions

View File

@ -953,10 +953,16 @@ static void free_preprocessed_options(struct option *options)
free(options); free(options);
} }


#define USAGE_NORMAL 0
#define USAGE_FULL 1
#define USAGE_TO_STDOUT 0
#define USAGE_TO_STDERR 1

static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t *, static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t *,
const char * const *, const char * const *,
const struct option *, const struct option *,
int, int); int full_usage,
int usage_to_stderr);


enum parse_opt_result parse_options_step(struct parse_opt_ctx_t *ctx, enum parse_opt_result parse_options_step(struct parse_opt_ctx_t *ctx,
const struct option *options, const struct option *options,
@ -1088,7 +1094,8 @@ enum parse_opt_result parse_options_step(struct parse_opt_ctx_t *ctx,
} }


if (internal_help && !strcmp(arg + 2, "help-all")) if (internal_help && !strcmp(arg + 2, "help-all"))
return usage_with_options_internal(ctx, usagestr, options, 1, 0); return usage_with_options_internal(ctx, usagestr, options,
USAGE_FULL, USAGE_TO_STDOUT);
if (internal_help && !strcmp(arg + 2, "help")) if (internal_help && !strcmp(arg + 2, "help"))
goto show_usage; goto show_usage;
switch (parse_long_opt(ctx, arg + 2, options)) { switch (parse_long_opt(ctx, arg + 2, options)) {
@ -1129,7 +1136,8 @@ unknown:
return PARSE_OPT_DONE; return PARSE_OPT_DONE;


show_usage: show_usage:
return usage_with_options_internal(ctx, usagestr, options, 0, 0); return usage_with_options_internal(ctx, usagestr, options,
USAGE_NORMAL, USAGE_TO_STDOUT);
} }


int parse_options_end(struct parse_opt_ctx_t *ctx) int parse_options_end(struct parse_opt_ctx_t *ctx)
@ -1444,7 +1452,8 @@ static enum parse_opt_result usage_with_options_internal(struct parse_opt_ctx_t
void NORETURN usage_with_options(const char * const *usagestr, void NORETURN usage_with_options(const char * const *usagestr,
const struct option *opts) const struct option *opts)
{ {
usage_with_options_internal(NULL, usagestr, opts, 0, 1); usage_with_options_internal(NULL, usagestr, opts,
USAGE_NORMAL, USAGE_TO_STDERR);
exit(129); exit(129);
} }


@ -1453,7 +1462,8 @@ void show_usage_with_options_if_asked(int ac, const char **av,
const struct option *opts) const struct option *opts)
{ {
if (ac == 2 && !strcmp(av[1], "-h")) { if (ac == 2 && !strcmp(av[1], "-h")) {
usage_with_options_internal(NULL, usagestr, opts, 0, 0); usage_with_options_internal(NULL, usagestr, opts,
USAGE_NORMAL, USAGE_TO_STDOUT);
exit(129); exit(129);
} }
} }