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