diff options
author | Stephen Boyd <bebarino@gmail.com> | 2010-12-05 23:57:42 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-12-06 16:51:36 -0800 |
commit | 9ca1169fd92c71ebbef92ff18aa5d91a2157d1bd (patch) | |
tree | a1490182bae47da917a1d64a3ce1a52dbece0425 /parse-options.c | |
parent | 16529f2e5630d3d155e4dff0ebd3c7c5daa882f9 (diff) | |
download | git-9ca1169fd92c71ebbef92ff18aa5d91a2157d1bd.tar.gz |
parse-options: Don't call parse_options_check() so much
parse_options_check() is being called for each invocation of
parse_options_step which can be quite a bit for some commands. The
commit introducing this function cb9d398 (parse-options: add
parse_options_check to validate option specs., 2009-06-09) had the
correct motivation and explicitly states that parse_options_check()
should be called from parse_options_start(). However, the implementation
differs from the motivation. Fix it.
Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'parse-options.c')
-rw-r--r-- | parse-options.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/parse-options.c b/parse-options.c index 0fa79bc31d..9bbbc6a5fe 100644 --- a/parse-options.c +++ b/parse-options.c @@ -338,7 +338,7 @@ static void parse_options_check(const struct option *opts) void parse_options_start(struct parse_opt_ctx_t *ctx, int argc, const char **argv, const char *prefix, - int flags) + const struct option *options, int flags) { memset(ctx, 0, sizeof(*ctx)); ctx->argc = argc - 1; @@ -350,6 +350,7 @@ void parse_options_start(struct parse_opt_ctx_t *ctx, if ((flags & PARSE_OPT_KEEP_UNKNOWN) && (flags & PARSE_OPT_STOP_AT_NON_OPTION)) die("STOP_AT_NON_OPTION and KEEP_UNKNOWN don't go together"); + parse_options_check(options); } static int usage_with_options_internal(struct parse_opt_ctx_t *, @@ -362,8 +363,6 @@ int parse_options_step(struct parse_opt_ctx_t *ctx, { int internal_help = !(ctx->flags & PARSE_OPT_NO_INTERNAL_HELP); - parse_options_check(options); - /* we must reset ->opt, unknown short option leave it dangling */ ctx->opt = NULL; @@ -452,7 +451,7 @@ int parse_options(int argc, const char **argv, const char *prefix, { struct parse_opt_ctx_t ctx; - parse_options_start(&ctx, argc, argv, prefix, flags); + parse_options_start(&ctx, argc, argv, prefix, options, flags); switch (parse_options_step(&ctx, options, usagestr)) { case PARSE_OPT_HELP: exit(129); |