From 78e9bb9c0d6e2d952b021fc7544eed0b17532c59 Mon Sep 17 00:00:00 2001 From: sof Date: Wed, 17 Dec 2003 17:15:12 +0000 Subject: [PATCH] [project @ 2003-12-17 17:15:12 by sof] merge rev. 1.13.2.1 --- System/Cmd.hs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/System/Cmd.hs b/System/Cmd.hs index 0b093da..6fe8fa1 100644 --- a/System/Cmd.hs +++ b/System/Cmd.hs @@ -100,6 +100,8 @@ foreign import ccall unsafe "rawSystem" -- a single string. Command-line parsing is done by the executable -- itself. rawSystem cmd args = do + -- NOTE: 'cmd' is assumed to contain the application to run _only_, + -- as it'll be quoted surrounded in quotes here. let cmdline = translate cmd ++ concat (map ((' ':) . translate) args) withCString cmdline $ \pcmdline -> do status <- throwErrnoIfMinus1 "rawSystem" (c_rawSystem pcmdline) @@ -108,6 +110,7 @@ rawSystem cmd args = do n -> return (ExitFailure n) translate :: String -> String +translate str@('"':_) = str -- already escaped. translate str = '"' : foldr escape "\"" str where escape '"' str = '\\' : '"' : str escape '\\' str = '\\' : '\\' : str -- 1.7.10.4