On 05/05/2012 09:54 AM, Eli Zaretskii wrote:
When quoting a shell command argument (using shell_quoting_style or
shell_always_quoting_style), quotearg.c uses the '..' style of
quoting.  This doesn't work for MinGW, which supports only the ".."
style.  This causes, e.g., diff3 to fail for file names with embedded
whitespace or other special characters, when compiled for MinGW.

Unfortunately quotearg is used not just to quote
strings for the shell, but also to quote strings POSIX-shell-style
for stdout.  That is, in practice shell_quoting_style doesn't mean
"quote this safely for whatever shell the current system happens to
be using", it means "quote this safely for POSIX shell syntax".

I suggest instead  putting a wrapper around popen and system,
so that they translate quotes from the POSIX syntax to the
syntax expected by mingw.  That would fix the problem with diff,
and it would be a more-useful fix anyway, as it would catch
instances of this problem that can occur even when quotearg is
not used.  This wrapper would be at the gnulib level.

Reply via email to