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.
This commit is contained in:
Joey Hess 2011-01-04 22:17:18 -04:00
parent 446978c1e6
commit 27619497ec

View file

@ -7,13 +7,20 @@
module CopyFile (copyFile) where module CopyFile (copyFile) where
import Control.Monad (when)
import System.Directory (doesFileExist, removeFile)
import Utility import Utility
import qualified SysConfig import qualified SysConfig
{- The cp command is used, because I hate reinventing the wheel, {- The cp command is used, because I hate reinventing the wheel,
- and because this allows easy access to features like cp --reflink. -} - and because this allows easy access to features like cp --reflink. -}
copyFile :: FilePath -> FilePath -> IO Bool 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 where
opts = if SysConfig.cp_reflink_auto opts = if SysConfig.cp_reflink_auto
then ["--reflink=auto", src, dest] then ["--reflink=auto", src, dest]