summaryrefslogtreecommitdiff
path: root/copyFile.hs
diff options
context:
space:
mode:
Diffstat (limited to 'copyFile.hs')
-rw-r--r--copyFile.hs21
1 files changed, 21 insertions, 0 deletions
diff --git a/copyFile.hs b/copyFile.hs
new file mode 100644
index 0000000..0835b0e
--- /dev/null
+++ b/copyFile.hs
@@ -0,0 +1,21 @@
+import System.Environment
+import System.Directory
+import System.IO
+import Control.Exception
+import qualified Data.ByteString.Lazy as B
+
+main = do
+ (fileName1:fileName2:_) <- getArgs
+ copy fileName1 fileName2
+
+copy source dest = do
+ contents <- B.readFile source
+ bracketOnError
+ (openTempFile "." "temp")
+ (\(tempName, tempHandle) -> do
+ hClose tempHandle
+ removeFile tempName)
+ (\(tempName, tempHandle) -> do
+ B.hPutStr tempHandle contents
+ hClose tempHandle
+ renameFile tempName dest)