diff options
author | Takano Akio <aljee@hyper.cx> | 2012-02-22 10:18:29 +0800 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2012-02-27 14:35:08 +0000 |
commit | ffe282cef4213ab8de515a8574d366994d38d5dd (patch) | |
tree | 019b4599a285dd8d4d141c458f708cc1fb129b4c /compiler/main | |
parent | ebd0ac736a305a5cd573e60f177b2995b37d964b (diff) | |
download | haskell-ffe282cef4213ab8de515a8574d366994d38d5dd.tar.gz |
Replace createDirectoryHierarchy with createDirectoryIfMissing True
createDirectoryHierarchy consisted of an existence test followed by
createDirectory, which failed if that directory was creted just after
the test. createDirectoryifMissing does not have this problem.
Diffstat (limited to 'compiler/main')
-rw-r--r-- | compiler/main/CodeOutput.lhs | 3 | ||||
-rw-r--r-- | compiler/main/DriverPipeline.hs | 6 | ||||
-rw-r--r-- | compiler/main/ErrUtils.lhs | 3 |
3 files changed, 6 insertions, 6 deletions
diff --git a/compiler/main/CodeOutput.lhs b/compiler/main/CodeOutput.lhs index a9ab3f66b7..88ba0b5741 100644 --- a/compiler/main/CodeOutput.lhs +++ b/compiler/main/CodeOutput.lhs @@ -17,7 +17,6 @@ import Finder ( mkStubPaths ) import PprC ( writeCs ) import CmmLint ( cmmLint ) import Packages -import Util import OldCmm ( RawCmmGroup ) import HscTypes import DynFlags @@ -190,7 +189,7 @@ outputForeignStubs dflags mod location stubs stub_h_output_w = showSDoc stub_h_output_d -- in - createDirectoryHierarchy (takeDirectory stub_h) + createDirectoryIfMissing True (takeDirectory stub_h) dumpIfSet_dyn dflags Opt_D_dump_foreign "Foreign export header file" stub_h_output_d diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs index 16cd2c7709..fab7600c01 100644 --- a/compiler/main/DriverPipeline.hs +++ b/compiler/main/DriverPipeline.hs @@ -1191,7 +1191,7 @@ runPhase As input_fn dflags -- we create directories for the object file, because it -- might be a hierarchical module. - io $ createDirectoryHierarchy (takeDirectory output_fn) + io $ createDirectoryIfMissing True (takeDirectory output_fn) io $ as_prog dflags (map SysTools.Option as_opts @@ -1230,7 +1230,7 @@ runPhase SplitAs _input_fn dflags osuf = objectSuf dflags split_odir = base_o ++ "_" ++ osuf ++ "_split" - io $ createDirectoryHierarchy split_odir + io $ createDirectoryIfMissing True split_odir -- remove M_split/ *.o, because we're going to archive M_split/ *.o -- later and we don't want to pick up any old objects. @@ -2137,6 +2137,6 @@ hscPostBackendPhase dflags _ hsc_lang = touchObjectFile :: DynFlags -> FilePath -> IO () touchObjectFile dflags path = do - createDirectoryHierarchy $ takeDirectory path + createDirectoryIfMissing True $ takeDirectory path SysTools.touch dflags "Touching object file" path diff --git a/compiler/main/ErrUtils.lhs b/compiler/main/ErrUtils.lhs index 52d05d0fdc..be7f2544e6 100644 --- a/compiler/main/ErrUtils.lhs +++ b/compiler/main/ErrUtils.lhs @@ -41,6 +41,7 @@ import SrcLoc import DynFlags import StaticFlags ( opt_ErrorSpans ) +import System.Directory import System.Exit ( ExitCode(..), exitWith ) import System.FilePath import Data.List @@ -236,7 +237,7 @@ dumpSDoc dflags dflag hdr doc mode = if append then AppendMode else WriteMode when (not append) $ writeIORef gdref (Set.insert fileName gd) - createDirectoryHierarchy (takeDirectory fileName) + createDirectoryIfMissing True (takeDirectory fileName) handle <- openFile fileName mode hPrintDump handle doc hClose handle |