module Directory (getCurrentDirectory) where import NHC.FFI import Monad foreign import ccall getcwd :: Addr -> Int -> IO Addr foreign import cast addrToCString :: Addr -> PackedString getCurrentDirectory :: IO FilePath getCurrentDirectory = do a <- getcwd nullAddr 1024 when (a == nullAddr) (do errno <- getErrNo throwIOError "getCurrentDirectory" (Just (show a)) Nothing errno) return (fromCString (addrToCString a))