Re: [PATH/RFC] parse-options: report invalid UTF-8 switches
- From
Jeff King <peff@peff.net>
- Date
- Feb 11, 2013, 17:19 UTC
- Message-ID
- <20130211171957.GG16402@sigill.intra.peff.net>
- In-Reply-To
- <7v7gmeok2e.fsf@alter.siamese.dyndns.org>
On Mon, Feb 11, 2013 at 09:07:53AM -0800, Junio C Hamano wrote:
Show 8 quoted lines
> Erik Faye-Lund <kusmabite@gmail.com> writes: > > > However, since git only looks at one byte at the time for > > short-options, it ends up reporting a partial UTF-8 sequence > > in such cases, leading to corruption of the output. > > Isn't it a workable, easier and more robust alternative to punt and > use the entire ctx.argv[0] as unrecognized?
Yes, but it regresses the usability:
[before] $ git foobar -qrxs unknown switch: x
[after] $ git foobar -qrxs unknown switch: -qrxs
One is much more informative than the other, and you are punishing the common ascii case for the extremely uncommon case of utf-8. Maybe:
if (isascii(*ctx.opt))
error("unknown option `%c'", *ctx.opt);
else
error("unknown multi-byte short option in string: `%s'", ctx.argv[0]);which only kicks in in the uncommon case (and extends the error message to make it more clear why we are showing the whole string).
-Peff