1 -----------------------------------------------------------------------------
2 -- $Id: TmpFiles.hs,v 1.1 2000/10/10 13:21:10 simonmar Exp $
4 -- Temporary file management
6 -- (c) The University of Glasgow 2000
8 -----------------------------------------------------------------------------
12 initTempFileStorage, -- :: IO ()
13 cleanTempFiles, -- :: IO ()
14 newTempName -- :: Suffix -> IO FilePath
32 #include "HsVersions.h"
34 GLOBAL_VAR( v_FilesToClean, [], [String] )
35 GLOBAL_VAR( v_TmpDir, cDEFAULT_TMPDIR, String )
37 initTempFileStorage = do
38 -- check whether TMPDIR is set in the environment
39 IO.try (do dir <- getEnv "TMPDIR" -- fails if not set
40 writeIORef tmpdir dir)
43 cleanTempFiles :: Bool -> IO ()
44 cleanTempFiles verbose = do
45 fs <- readIORef v_FilesToClean
48 (do when verbose (hPutStrLn stderr ("removing: " ++ f))
49 if '*' `elem` f then system ("rm -f " ++ f) >> return ()
52 (\_ -> when verbose (hPutStrLn stderr
53 ("warning: can't remove tmp file" ++ f)))
58 -- find a temporary name that doesn't already exist.
59 newTempName :: Suffix -> IO FilePath
62 tmp_dir <- readIORef v_TmpDir
63 findTempName tmp_dir x
64 where findTempName tmp_dir x = do
65 let filename = tmp_dir ++ "/ghc" ++ show x ++ '.':extn
66 b <- doesFileExist filename
67 if b then findTempName tmp_dir (x+1)