Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [PATH/RFC] parse-options: report invalid UTF-8 switches

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:56:07

Jeff King [off-list ref] writes:
On Mon, Feb 11, 2013 at 09:07:53AM -0800, Junio C Hamano wrote:
quoted
Erik Faye-Lund [off-list ref] writes:
quoted
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).
Yup, that is what I meant.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help