import System.Environment ( getEnv )
import System.FilePath
+import System.IO
import System.IO.Error hiding ( catch, try )
import Control.Monad ( when, unless )
import Control.Exception
import System.Posix.Types
import System.Posix.Internals
import System.Time ( ClockTime(..) )
-import System.IO
import GHC.IOBase ( IOException(..), IOErrorType(..), ioException )
bracketOnError openTmp cleanTmp $ \(tmpFPath, hTmp) ->
do allocaBytes bufferSize $ copyContents hFrom hTmp
hClose hTmp
- try (copyPermissions fromFPath toFPath)
+ try (copyPermissions fromFPath tmpFPath)
renameFile tmpFPath toFPath
openTmp = openBinaryTempFile (takeDirectory toFPath) ".copyFile.tmp"
cleanTmp (tmpFPath, hTmp) = do try $ hClose hTmp