remove conflicting import for nhc98
[haskell-directory.git] / System / Directory.hs
index e5e988f..2a80587 100644 (file)
@@ -72,17 +72,16 @@ import Control.Monad           ( when, unless )
 
 #ifdef __NHC__
 import Directory
-import NHC.FFI
 #endif /* __NHC__ */
 
 #ifdef __HUGS__
 import Hugs.Directory
 #endif /* __HUGS__ */
 
-#if defined(__GLASGOW_HASKELL__) || defined(mingw32_HOST_OS)
 import Foreign
 import Foreign.C
-#endif
+
+{-# CFILES cbits/PrelIOUtils.c #-}
 
 #ifdef __GLASGOW_HASKELL__
 import Prelude
@@ -564,7 +563,6 @@ copyFile fromFPath toFPath =
                                copyContents hFrom hTo buffer
 #endif
 
-#ifdef __GLASGOW_HASKELL__
 -- | Given path referring to a file or directory, returns a
 -- canonicalized path, with the intent that two paths referring
 -- to the same file\/directory will map to the same canonicalized
@@ -597,11 +595,6 @@ foreign import ccall unsafe "realpath"
                               -> CString
                               -> IO CString
 #endif
-#else /* !__GLASGOW_HASKELL__ */
--- dummy implementation
-canonicalizePath :: FilePath -> IO FilePath
-canonicalizePath fpath = return fpath
-#endif /* !__GLASGOW_HASKELL__ */
 
 -- | Given an executable file name, searches for such file
 -- in the directories listed in system PATH. The returned value 
@@ -629,10 +622,6 @@ foreign import stdcall unsafe "SearchPathA"
                          -> CString
                          -> Ptr CString
                          -> IO CInt
-# if !defined(__GLASGOW_HASKELL__)
-long_path_size :: Int
-long_path_size = 4096
-# endif
 #else
  do
   path <- getEnv "PATH"
@@ -873,9 +862,6 @@ fileNameEndClean name =
       i  = (length name) - 1
       ec = name !! i
 
-foreign import ccall unsafe "__hscore_long_path_size"
-  long_path_size :: Int
-
 foreign import ccall unsafe "__hscore_R_OK" r_OK :: CMode
 foreign import ccall unsafe "__hscore_W_OK" w_OK :: CMode
 foreign import ccall unsafe "__hscore_X_OK" x_OK :: CMode
@@ -886,6 +872,9 @@ foreign import ccall unsafe "__hscore_S_IXUSR" s_IXUSR :: CMode
 
 #endif /* __GLASGOW_HASKELL__ */
 
+foreign import ccall unsafe "__hscore_long_path_size"
+  long_path_size :: Int
+
 {- | Returns the current user's home directory.
 
 The directory returned is expected to be writable by the current user,
@@ -909,7 +898,7 @@ cannot be found.
 -}
 getHomeDirectory :: IO FilePath
 getHomeDirectory =
-#if __GLASGOW_HASKELL__ && defined(mingw32_HOST_OS)
+#if defined(mingw32_HOST_OS)
   allocaBytes long_path_size $ \pPath -> do
      r <- c_SHGetFolderPath nullPtr csidl_PROFILE nullPtr 0 pPath
      if (r < 0)
@@ -951,7 +940,7 @@ cannot be found.
 -}
 getAppUserDataDirectory :: String -> IO FilePath
 getAppUserDataDirectory appName = do
-#if __GLASGOW_HASKELL__ && defined(mingw32_HOST_OS)
+#if defined(mingw32_HOST_OS)
   allocaBytes long_path_size $ \pPath -> do
      r <- c_SHGetFolderPath nullPtr csidl_APPDATA nullPtr 0 pPath
      when (r<0) (raiseUnsupported "System.Directory.getAppUserDataDirectory")
@@ -985,7 +974,7 @@ cannot be found.
 -}
 getUserDocumentsDirectory :: IO FilePath
 getUserDocumentsDirectory = do
-#if __GLASGOW_HASKELL__ && defined(mingw32_HOST_OS)
+#if defined(mingw32_HOST_OS)
   allocaBytes long_path_size $ \pPath -> do
      r <- c_SHGetFolderPath nullPtr csidl_PERSONAL nullPtr 0 pPath
      when (r<0) (raiseUnsupported "System.Directory.getUserDocumentsDirectory")
@@ -1022,7 +1011,7 @@ The function doesn\'t verify whether the path exists.
 -}
 getTemporaryDirectory :: IO FilePath
 getTemporaryDirectory = do
-#if __GLASGOW_HASKELL__ && defined(mingw32_HOST_OS)
+#if defined(mingw32_HOST_OS)
   allocaBytes long_path_size $ \pPath -> do
      r <- c_GetTempPath (fromIntegral long_path_size) pPath
      peekCString pPath
@@ -1030,7 +1019,7 @@ getTemporaryDirectory = do
   catch (getEnv "TMPDIR") (\ex -> return "/tmp")
 #endif
 
-#if __GLASGOW_HASKELL__ && defined(mingw32_HOST_OS)
+#if defined(mingw32_HOST_OS)
 foreign import ccall unsafe "__hscore_getFolderPath"
             c_SHGetFolderPath :: Ptr () 
                               -> CInt