X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FTmpFiles.hs;h=adf6835b879652470de523b9d3df927c333c5928;hb=a237946da277f10bd3d223e5926d118044d24194;hp=5ec340b82dfc644b1752b8c3b2c14e06a1923f2a;hpb=015975f75c98a9ffff6881cfa13a742545765948;p=ghc-hetmet.git diff --git a/ghc/compiler/main/TmpFiles.hs b/ghc/compiler/main/TmpFiles.hs index 5ec340b..adf6835 100644 --- a/ghc/compiler/main/TmpFiles.hs +++ b/ghc/compiler/main/TmpFiles.hs @@ -1,5 +1,5 @@ ----------------------------------------------------------------------------- --- $Id: TmpFiles.hs,v 1.1 2000/10/10 13:21:10 simonmar Exp $ +-- $Id: TmpFiles.hs,v 1.2 2000/10/11 11:54:58 simonmar Exp $ -- -- Temporary file management -- @@ -11,10 +11,12 @@ module TmpFiles ( Suffix, initTempFileStorage, -- :: IO () cleanTempFiles, -- :: IO () - newTempName -- :: Suffix -> IO FilePath + newTempName, -- :: Suffix -> IO FilePath + addFilesToClean -- :: [FilePath] -> IO () ) where -- main +import DriverState import Config import Util @@ -31,13 +33,12 @@ import Monad #include "HsVersions.h" -GLOBAL_VAR( v_FilesToClean, [], [String] ) -GLOBAL_VAR( v_TmpDir, cDEFAULT_TMPDIR, String ) +GLOBAL_VAR(v_FilesToClean, [], [String] ) initTempFileStorage = do -- check whether TMPDIR is set in the environment IO.try (do dir <- getEnv "TMPDIR" -- fails if not set - writeIORef tmpdir dir) + writeIORef v_TmpDir dir) cleanTempFiles :: Bool -> IO () @@ -65,5 +66,14 @@ newTempName extn = do let filename = tmp_dir ++ "/ghc" ++ show x ++ '.':extn b <- doesFileExist filename if b then findTempName tmp_dir (x+1) - else return filename + else do add v_FilesToClean filename -- clean it up later + return filename + +addFilesToClean :: [FilePath] -> IO () +addFilesToClean files = mapM_ (add v_FilesToClean) files + +add :: IORef [a] -> a -> IO () +add var x = do + xs <- readIORef var + writeIORef var (x:xs)