X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=System%2FDirectory.hs;h=1f38b1461b6764329b7e356b96653bac72557cfe;hb=5f753ccb8ebe2a630aaf7da2399565547d006d49;hp=7cfb090048bda874acf235f9137e49d9e39f2f56;hpb=ba9a368b96a4ae622fe463c178f223dffdd5a38f;p=haskell-directory.git diff --git a/System/Directory.hs b/System/Directory.hs index 7cfb090..1f38b14 100644 --- a/System/Directory.hs +++ b/System/Directory.hs @@ -800,30 +800,11 @@ The operating system has no notion of current directory. getCurrentDirectory :: IO FilePath getCurrentDirectory = do #ifdef mingw32_HOST_OS - -- XXX: should use something from Win32 - p <- mallocBytes long_path_size - go p long_path_size - where go p bytes = do - p' <- c_getcwd p (fromIntegral bytes) - if p' /= nullPtr - then do s <- peekCString p' - free p' - return s - else do errno <- getErrno - if errno == eRANGE - then do let bytes' = bytes * 2 - p'' <- reallocBytes p bytes' - go p'' bytes' - else throwErrno "getCurrentDirectory" + System.Win32.getCurrentDirectory #else System.Posix.getWorkingDirectory #endif -#ifdef mingw32_HOST_OS -foreign import ccall unsafe "getcwd" - c_getcwd :: Ptr CChar -> CSize -> IO (Ptr CChar) -#endif - {- |If the operating system has a notion of current directories, @'setCurrentDirectory' dir@ changes the current directory of the calling process to /dir/. @@ -1092,9 +1073,7 @@ The function doesn\'t verify whether the path exists. getTemporaryDirectory :: IO FilePath getTemporaryDirectory = do #if defined(mingw32_HOST_OS) - allocaBytes long_path_size $ \pPath -> do - _r <- c_GetTempPath (fromIntegral long_path_size) pPath - peekCString pPath + System.Win32.getTemporaryDirectory #else getEnv "TMPDIR" #if !__NHC__ @@ -1118,8 +1097,6 @@ foreign import ccall unsafe "__hscore_CSIDL_APPDATA" csidl_APPDATA :: CInt foreign import ccall unsafe "__hscore_CSIDL_WINDOWS" csidl_WINDOWS :: CInt foreign import ccall unsafe "__hscore_CSIDL_PERSONAL" csidl_PERSONAL :: CInt -foreign import stdcall unsafe "GetTempPathA" c_GetTempPath :: CInt -> CString -> IO CInt - raiseUnsupported :: String -> IO () raiseUnsupported loc = ioException (ioeSetErrorString (mkIOError UnsupportedOperation loc Nothing Nothing) "unsupported operation")