From: Ian Lynagh Date: Wed, 31 Jan 2007 15:10:58 +0000 (+0000) Subject: Always pay attention to -keep-tmp-files when we want to delete files X-Git-Tag: 2007-02-05~23 X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=80ce44f764633347ea15b570e3f758b6e7aecd63 Always pay attention to -keep-tmp-files when we want to delete files --- diff --git a/compiler/main/GHC.hs b/compiler/main/GHC.hs index 6855f94..169a99f 100644 --- a/compiler/main/GHC.hs +++ b/compiler/main/GHC.hs @@ -339,9 +339,8 @@ defaultErrorHandler dflags inner = defaultCleanupHandler :: DynFlags -> IO a -> IO a defaultCleanupHandler dflags inner = -- make sure we clean up after ourselves - later (unless (dopt Opt_KeepTmpFiles dflags) $ - do cleanTempFiles dflags - cleanTempDirs dflags + later (do cleanTempFiles dflags + cleanTempDirs dflags ) -- exceptions will be blocked while we clean the temporary files, -- so there shouldn't be any difficulty if we receive further diff --git a/compiler/main/SysTools.lhs b/compiler/main/SysTools.lhs index 43de6d1..e44ed6d 100644 --- a/compiler/main/SysTools.lhs +++ b/compiler/main/SysTools.lhs @@ -494,22 +494,25 @@ GLOBAL_VAR(v_DirsToClean, emptyFM, FiniteMap FilePath FilePath ) \begin{code} cleanTempDirs :: DynFlags -> IO () cleanTempDirs dflags - = do ds <- readIORef v_DirsToClean + = unless (dopt Opt_KeepTmpFiles dflags) + $ do ds <- readIORef v_DirsToClean removeTmpDirs dflags (eltsFM ds) writeIORef v_DirsToClean emptyFM cleanTempFiles :: DynFlags -> IO () cleanTempFiles dflags - = do fs <- readIORef v_FilesToClean - removeTmpFiles dflags fs - writeIORef v_FilesToClean [] + = unless (dopt Opt_KeepTmpFiles dflags) + $ do fs <- readIORef v_FilesToClean + removeTmpFiles dflags fs + writeIORef v_FilesToClean [] cleanTempFilesExcept :: DynFlags -> [FilePath] -> IO () cleanTempFilesExcept dflags dont_delete - = do files <- readIORef v_FilesToClean - let (to_keep, to_delete) = partition (`elem` dont_delete) files - removeTmpFiles dflags to_delete - writeIORef v_FilesToClean to_keep + = unless (dopt Opt_KeepTmpFiles dflags) + $ do files <- readIORef v_FilesToClean + let (to_keep, to_delete) = partition (`elem` dont_delete) files + removeTmpFiles dflags to_delete + writeIORef v_FilesToClean to_keep -- find a temporary name that doesn't already exist.