X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=parse-options.c;h=d9562ba5047ff1c9994755a4dbec5162b551c788;hb=1fb328947c8e3ace9df7d2d5374e26e2510a4e93;hp=7a08a0c64f9f447e09ef6771d83dbf95f8f3545d;hpb=144126abf99f2eac48e63b7ea85a8f3f99f814db;p=git.git diff --git a/parse-options.c b/parse-options.c index 7a08a0c64..d9562ba50 100644 --- a/parse-options.c +++ b/parse-options.c @@ -216,6 +216,26 @@ is_abbreviated: return error("unknown option `%s'", arg); } +void check_typos(const char *arg, const struct option *options) +{ + if (strlen(arg) < 3) + return; + + if (!prefixcmp(arg, "no-")) { + error ("did you mean `--%s` (with two dashes ?)", arg); + exit(129); + } + + for (; options->type != OPTION_END; options++) { + if (!options->long_name) + continue; + if (!prefixcmp(options->long_name, arg)) { + error ("did you mean `--%s` (with two dashes ?)", arg); + exit(129); + } + } +} + static NORETURN void usage_with_options_internal(const char * const *, const struct option *, int); @@ -235,12 +255,18 @@ int parse_options(int argc, const char **argv, const struct option *options, if (arg[1] != '-') { args.opt = arg + 1; - do { + if (*args.opt == 'h') + usage_with_options(usagestr, options); + if (parse_short_opt(&args, options) < 0) + usage_with_options(usagestr, options); + if (args.opt) + check_typos(arg + 1, options); + while (args.opt) { if (*args.opt == 'h') usage_with_options(usagestr, options); if (parse_short_opt(&args, options) < 0) usage_with_options(usagestr, options); - } while (args.opt); + } continue; }