On 03.4.2015 г. 03:52, Lex Trotman wrote:

To find proper quoting for Windows, you'll need to look no further than
spawn_append_argument() in the new spawn. :)

Well, thats obviously the name of a quoting function, perhaps it
should be spawn_append_argument_win_quoted() so I might have noticed
it :)

Its fine for appending an argument, but when replacing a placeholder
you can't be certain it isn't inside quotes already.  [...]

Sure.

But it doesn't put arguments containing tabs inside " either.

If you mean spawn_append_argument, it checks for at least one " or g_ascii_isspace(), and if so, quotes the entire argument. There's no way it'll miss a tab.

The only thing I'm not sure about are \n \v ... - the official VS 2013 msdn
says "arguments are delimited by white space, which is either a space or
a tab", [...]

It puts arguments containing \n and \v inside " which sounds
reasonable but yeah unexplained why.

Actually, I confused the blanks which *may* cause quoting with the ones should delimit the program name. The former set must be permissive to cope with stupid RTL-s, while the latter must be restrictive to avoid Win~1 to avoid running unexpected things.

So the actual blog error is that '\f' and especially '\r' are not included. But I'm not much better: after checking g_ascii_isspace(), it turns out that '\v' is not a spacing character for glib, despite both C and C++ standards saying it is. *facepalm*

"Everyone quotes command line arguments the wrong way" - truer words have never been said. I'll switch to isspace(), and even if it considers some non-ascii characters to be spaces, that'll do no harm. (I can even quote unconditionally - the resulting CL will be a bit ugly, but it's internal to spawn anyway.)

--
E-gards: Jimmy
_______________________________________________
Devel mailing list
Devel@lists.geany.org
https://lists.geany.org/cgi-bin/mailman/listinfo/devel

Reply via email to