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:
parent
446978c1e6
commit
27619497ec
1 changed files with 8 additions and 1 deletions
|
@ -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]
|
||||||
|
|
Loading…
Add table
Reference in a new issue