From: Junio C Hamano Date: Wed, 27 Feb 2013 18:04:26 +0000 (-0800) Subject: Merge branch 'ef/non-ascii-parse-options-error-diag' into maint X-Git-Tag: v1.8.1.5~5 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/6f0c33666300ccf95eb4b4e723e07a3c588d12db?ds=inline;hp=-c Merge branch 'ef/non-ascii-parse-options-error-diag' into maint * ef/non-ascii-parse-options-error-diag: parse-options: report uncorrupted multi-byte options --- 6f0c33666300ccf95eb4b4e723e07a3c588d12db diff --combined parse-options.c index 670bf09b45,052bf72bb8..7ca8f2caef --- a/parse-options.c +++ b/parse-options.c @@@ -3,7 -3,6 +3,7 @@@ #include "cache.h" #include "commit.h" #include "color.h" +#include "utf8.h" static int parse_options_usage(struct parse_opt_ctx_t *ctx, const char * const *usagestr, @@@ -471,8 -470,11 +471,11 @@@ int parse_options(int argc, const char default: /* PARSE_OPT_UNKNOWN */ if (ctx.argv[0][1] == '-') { error("unknown option `%s'", ctx.argv[0] + 2); - } else { + } else if (isascii(*ctx.opt)) { error("unknown switch `%c'", *ctx.opt); + } else { + error("unknown non-ascii option in string: `%s'", + ctx.argv[0]); } usage_with_options(usagestr, options); } @@@ -492,7 -494,7 +495,7 @@@ static int usage_argh(const struct opti s = literal ? "[%s]" : "[<%s>]"; else s = literal ? " %s" : " <%s>"; - return fprintf(outfile, s, opts->argh ? _(opts->argh) : _("...")); + return utf8_fprintf(outfile, s, opts->argh ? _(opts->argh) : _("...")); } #define USAGE_OPTS_WIDTH 24 @@@ -551,7 -553,7 +554,7 @@@ static int usage_with_options_internal( if (opts->long_name) pos += fprintf(outfile, "--%s", opts->long_name); if (opts->type == OPTION_NUMBER) - pos += fprintf(outfile, "-NUM"); + pos += utf8_fprintf(outfile, _("-NUM")); if ((opts->flags & PARSE_OPT_LITERAL_ARGHELP) || !(opts->flags & PARSE_OPT_NOARG))