On Thu, Jan 29, 2004 at 02:53:21PM -0000, Simon Marlow wrote:
> After Googling around a bit, I found this description of exactly how
> Windows interprets command lines in the C runtime:
> 
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng
> /htm/progs_12.asp
> 
> As you can see, the rules are indeed very strange,

Very strange indeed.

> but they are
> invertible.  I think this code should do the trick:
> 
> translate :: String -> String
> translate str = '"' : snd (foldr escape (True,"\"") str)
>   where escape '"'  (_,     str) = (True,  '\\' : '"'  : str)
>         escape '\\' (True,  str) = (True,  '\\' : '\\' : str)
>         escape '\\' (False, str) = (False, '\\' : str)
>         escape c    (_,     str) = (False, c : str)
> 

Neat.  If I understand the specs correctly, the following should also
work.

translate str = '"' : foldr escape ('"':[]) str
  where escape '"'  t = '\\':'"':t
        escape '\\' t = '\\':'\\':'"':'"':t
        escape c    t = c:t

Who is going to write the unit test for that?

And assuming both of our solutions satisfy the specs, which one will
work for more versions of Windows?  :-)

Greetings,

Carsten

-- 
Carsten Schultz (2:38, 33:47), FB Mathematik, FU Berlin
http://carsten.codimi.de/
PGP/GPG key on the pgp.net key servers, 
fingerprint on my home page.

Attachment: pgp00000.pgp
Description: PGP signature

_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to