diff options
author | Joey Hess <joey@kitenet.net> | 2011-01-04 22:17:18 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-01-04 22:17:18 -0400 |
commit | 27619497ec02685b740c838e512fc61e013c4ec3 (patch) | |
tree | d2602329c27b59665f45cff617007936733262a8 /CopyFile.hs | |
parent | 446978c1e6de0996144ba30adc178d358ed877b7 (diff) |
remove file before running cp
This way, if a temp file was left behind, and permissions don't allow it
to be written, cp won't fail.
Diffstat (limited to 'CopyFile.hs')
-rw-r--r-- | CopyFile.hs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/CopyFile.hs b/CopyFile.hs index 8bd07dc35..e913aa070 100644 --- a/CopyFile.hs +++ b/CopyFile.hs @@ -7,13 +7,20 @@ module CopyFile (copyFile) where +import Control.Monad (when) +import System.Directory (doesFileExist, removeFile) + import Utility import qualified SysConfig {- The cp command is used, because I hate reinventing the wheel, - and because this allows easy access to features like cp --reflink. -} copyFile :: FilePath -> FilePath -> IO Bool -copyFile src dest = boolSystem "cp" opts +copyFile src dest = do + e <- doesFileExist dest + when e $ + removeFile dest + boolSystem "cp" opts where opts = if SysConfig.cp_reflink_auto then ["--reflink=auto", src, dest] |