diff --git a/Distribution/Simple/Utils.hs b/Distribution/Simple/Utils.hs index 139ca8cb5f73806258c5c254a67999dfd4bac997..5e55608086850375d7e38222680b336c66c1a8af 100644 --- a/Distribution/Simple/Utils.hs +++ b/Distribution/Simple/Utils.hs @@ -137,7 +137,7 @@ import System.IO import System.IO.Error as IO.Error ( try ) import qualified Control.Exception as Exception - ( bracket, bracket_, bracketOnError, catch, finally ) + ( bracket, bracket_, catch, handle, finally, throwIO ) import Distribution.Text ( display ) @@ -154,10 +154,6 @@ import System.Process (runInteractiveProcess, waitForProcess) import System.Cmd (system) import System.Directory (getTemporaryDirectory) #endif -#if mingw32_HOST_OS || mingw32_TARGET_OS -import qualified Control.Exception as Exception - ( throwIO ) -#endif import Distribution.Compat.TempFile (openTempFile, openBinaryTempFile) import Distribution.Verbosity @@ -571,11 +567,10 @@ withTempDirectory verbosity tmpDir = -- writeFileAtomic :: FilePath -> String -> IO () writeFileAtomic targetFile content = do - Exception.bracketOnError - (openBinaryTempFile targetDir template) - (\(tmpFile, tmpHandle) -> IO.Error.try (hClose tmpHandle) - >> IO.Error.try (removeFile tmpFile)) - $ \(tmpFile, tmpHandle) -> do + (tmpFile, tmpHandle) <- openBinaryTempFile targetDir template + Exception.handle (\err -> do hClose tmpHandle + removeFile tmpFile + Exception.throwIO err) $ do hPutStr tmpHandle content hClose tmpHandle #if mingw32_HOST_OS || mingw32_TARGET_OS