summaryrefslogtreecommitdiff
path: root/RsyncFile.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-02-28 16:10:16 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-02-28 16:18:55 -0400
commitfcdc4797a9ab2b792a9bb20f2ca9802b8f6d5a1e (patch)
tree0471848c11df7c1481d8c735eab1280d7684eddc /RsyncFile.hs
parent7e5678bcf7cd78bd04520117201be37dc9d4d544 (diff)
use ShellParam type
So, I have a type checked safe handling of filenames starting with dashes, throughout the code.
Diffstat (limited to 'RsyncFile.hs')
-rw-r--r--RsyncFile.hs29
1 files changed, 16 insertions, 13 deletions
diff --git a/RsyncFile.hs b/RsyncFile.hs
index 9de2e2c59..149b45b11 100644
--- a/RsyncFile.hs
+++ b/RsyncFile.hs
@@ -14,8 +14,8 @@ import Utility
{- Generates parameters to make rsync use a specified command as its remote
- shell. -}
-rsyncShell :: [String] -> [String]
-rsyncShell command = ["-e", unwords $ map escape command]
+rsyncShell :: [ShellParam] -> [ShellParam]
+rsyncShell command = [Param "-e", Param $ unwords $ map escape (toShell command)]
where
{- rsync requires some weird, non-shell like quoting in
- here. A doubled single quote inside the single quoted
@@ -25,22 +25,25 @@ rsyncShell command = ["-e", unwords $ map escape command]
{- Runs rsync in server mode to send a file, and exits. -}
rsyncServerSend :: FilePath -> IO ()
rsyncServerSend file = rsyncExec $
- rsyncServerParams ++ ["--sender", utilityEscape file]
+ rsyncServerParams ++ [Param "--sender", File file]
{- Runs rsync in server mode to receive a file. -}
rsyncServerReceive :: FilePath -> IO Bool
-rsyncServerReceive file = rsync $ rsyncServerParams ++ [utilityEscape file]
+rsyncServerReceive file = rsync $ rsyncServerParams ++ [File file]
-rsyncServerParams :: [String]
+rsyncServerParams :: [ShellParam]
rsyncServerParams =
- [ "--server"
- , "-p" -- preserve permissions
- , "--inplace" -- allow resuming of transfers of big files
- , "-e.Lsf", "." -- other options rsync normally uses in server mode
+ [ Param "--server"
+ -- preserve permissions
+ , Param "-p"
+ -- allow resuming of transfers of big files
+ , Param "--inplace"
+ -- other options rsync normally uses in server mode
+ , Params "-e.Lsf ."
]
-rsync :: [String] -> IO Bool
-rsync params = boolSystem "rsync" params
+rsync :: [ShellParam] -> IO Bool
+rsync = boolSystem "rsync"
-rsyncExec :: [String] -> IO ()
-rsyncExec params = executeFile "rsync" True params Nothing
+rsyncExec :: [ShellParam] -> IO ()
+rsyncExec params = executeFile "rsync" True (toShell params) Nothing