> From: Bruno Haible <[email protected]> > Cc: [email protected] > Date: Wed, 09 May 2012 03:43:22 +0200 > > The test suite of the module 'system-quote' reveals that the '*' is also > special for CreateProcess on Windows and needs to be escaped
What about '?'? Should we quote it as well? Btw, the issue of quoting wildcard characters is tricky, because it changes the semantics of the argument wrt to wildcard expansion. What if an argument includes both special characters, like whitespace, _and_ wildcards? It gets worse, see below. > otherwise CreateProcess may fail (at least on Windows XP). Failures should be avoided, of course. However, it might be a good idea to add a warning to the commentary, to the effect that wildcard characters ? and * _cannot_ be protected from expansions on Windows Vista and later. According to this: http://connect.microsoft.com/VisualStudio/feedback/details/98756/vs2005-setargv-obj-wildcard-handling-broken MS modified their implementation of command-line globbing in versions of MSVCRT starting with those systems, such that the wildcards are expanded even if they are inside quotes. This thread on the MinGW list: http://sourceforge.net/mailarchive/forum.php?thread_name=83ipgb656k.fsf%40gnu.org&forum_name=mingw-users indicates that MinGW in some future version will probably invoke its own globbing code instead, so at least MinGW programs will soon be exempt from this terrible misfeature. But other programs, and in particularly those supplied as part of Windows or compiled with the MS compilers, cannot benefit from MinGW workarounds. So I think a caveat is in order here, because sooner or later people will bump into this and will be mightily surprised.
