Problem with ghc on Windows ME
Simon Marlow
simonmar at microsoft.com
Thu Jan 29 11:31:03 EST 2004
> So does that mean functionality has been lost in the move from
> ghc-6.0.1?
No, the behaviour is improved in 6.2 because we're now careful to escape
quotes before passing the command-line to the operating system.
I think confusion has arisen because Simon pointed out that there's no
way, on Windows, to pass this sequence of characters as an argument to a
command:
\"
This is not entirely true, I just discovered that the sequence \\\" will
turn into \". But in general, the sequence \\ does not turn into \.
Windows' command-line quoting rules are highly mysterious, to say the
least.
So the patch I posted is not complete. It looks like rawSystem should
additionally translate \" as \\\".
> Because that (on win98) happily accepts such useful
> contraptions as
>
> System.Cmd.rawSystem "\"c:\\silly
> space\\Vim\\vim62\\gvim.exe\" --servername GVIM --remote-send
> \":echo \\\"hi \\\\\\\" there\\\"<cr>\"" >>= print
The idea is that you should pass to rawSystem *exactly* the command and
arguments you want to run, with no quoting except that required by the
Haskell lexical syntax. You'll notice that rawSystem now takes the
command and list of arguments separately in 6.2. The implementation of
rawSystem will attempt to compensate for the internal translation that
Windows does on the command-line; on Unix no translation is necessary.
So clients of rawSystem should be more portable, because they don't have
to know about quoting that happens under the hood.
Your example will probably work once it's reformulated for 6.2's version
of rawSystem, and once we fix rawSystem in light of the \\\" hack I
discovered above.
Cheers,
Simon
More information about the Glasgow-haskell-users
mailing list