[project @ 2005-01-28 12:55:17 by simonmar]
[ghc-hetmet.git] / ghc / lib / compat / Compat / Directory.hs
index 866a09f..ecd5a99 100644 (file)
@@ -21,25 +21,29 @@ module Compat.Directory (
        createDirectoryIfMissing
   ) where
 
-#if __GLASGOW_HASKELL__ < 603
-#include "config.h"
-#endif
+#include "../../includes/ghcconfig.h"
 
-import Control.Exception       ( bracket )
-import Control.Monad           ( when )
 import System.Environment (getEnv)
-import System.FilePath
-import System.IO
-import Foreign
-import Foreign.C
-import System.Directory(doesFileExist, doesDirectoryExist, getPermissions, setPermissions, createDirectory)
-#if defined(__GLASGOW_HASKELL__)
+import System.Directory.Internals
+#if __GLASGOW_HASKELL__ > 600
+import Control.Exception       ( bracket )
+import Control.Monad           ( when )
+import Foreign.Marshal.Alloc   ( allocaBytes )
+import System.IO (IOMode(..), openBinaryFile, hGetBuf, hPutBuf, hClose)
+import System.IO.Error         ( try )
 import GHC.IOBase ( IOException(..) )
+#else
+import System.IO               ( try )
 #endif
+#if __GLASGOW_HASKELL__ && defined(mingw32_HOST_OS)
+import Foreign.Ptr
+import Foreign.C
+#endif
+import System.Directory(doesFileExist, doesDirectoryExist, getPermissions, setPermissions, createDirectory)
 
 getAppUserDataDirectory :: String -> IO FilePath
 getAppUserDataDirectory appName = do
-#if __GLASGOW_HASKELL__ && defined(mingw32_TARGET_OS)
+#if __GLASGOW_HASKELL__ && defined(mingw32_HOST_OS)
   allocaBytes long_path_size $ \pPath -> do
      r <- c_SHGetFolderPath nullPtr csidl_APPDATA nullPtr 0 pPath
      s <- peekCString pPath
@@ -49,7 +53,7 @@ getAppUserDataDirectory appName = do
   return (path++'/':'.':appName)
 #endif
 
-#if __GLASGOW_HASKELL__ && defined(mingw32_TARGET_OS)
+#if __GLASGOW_HASKELL__ && defined(mingw32_HOST_OS)
 foreign import stdcall unsafe "SHGetFolderPathA"
             c_SHGetFolderPath :: Ptr () 
                               -> CInt 
@@ -97,7 +101,7 @@ findExecutable binary = do
   path <- getEnv "PATH"
   search (parseSearchPath path)
   where
-#ifdef mingw32_TARGET_OS
+#ifdef mingw32_HOST_OS
     fileName = binary `joinFileExt` "exe"
 #else
     fileName = binary