Thread (4 messages) flat view 4 messages, 3 authors, 2016-06-15

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

From: Erik Faye-Lund <hidden>
Date: 2016-06-15 22:56:07

On Mon, Feb 11, 2013 at 6:19 PM, Jeff King [off-list ref] wrote:
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).
Yes. This is IMO a much better approach, and it doesn't involve trying
to figure out what encoding the string is. Thanks!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help