Add makeRelativeToCurrentDirectory
[haskell-directory.git] / System / Directory.hs
index 9b70480..beed879 100644 (file)
@@ -39,6 +39,7 @@ module System.Directory
     , copyFile                  -- :: FilePath -> FilePath -> IO ()
     
     , canonicalizePath
+    , makeRelativeToCurrentDirectory
     , findExecutable
 
     -- * Existence tests
@@ -67,6 +68,7 @@ module System.Directory
 
 import System.Directory.Internals
 import System.Environment      ( getEnv )
+import System.FilePath
 import System.IO.Error
 import Control.Monad           ( when, unless )
 
@@ -81,7 +83,7 @@ import Hugs.Directory
 import Foreign
 import Foreign.C
 
-{-# CFILES cbits/PrelIOUtils.c #-}
+{-# CFILES cbits/directory.c #-}
 
 #ifdef __GLASGOW_HASKELL__
 import Prelude
@@ -596,6 +598,12 @@ foreign import ccall unsafe "realpath"
                               -> IO CString
 #endif
 
+-- | 'makeRelative' the current directory.
+makeRelativeToCurrentDirectory :: FilePath -> IO FilePath
+makeRelativeToCurrentDirectory x = do
+    cur <- getCurrentDirectory
+    return $ makeRelative cur x
+
 -- | Given an executable file name, searches for such file
 -- in the directories listed in system PATH. The returned value 
 -- is the path to the found executable or Nothing if there isn't
@@ -862,9 +870,9 @@ fileNameEndClean name =
       i  = (length name) - 1
       ec = name !! i
 
-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
+foreign import ccall unsafe "__hscore_R_OK" r_OK :: CInt
+foreign import ccall unsafe "__hscore_W_OK" w_OK :: CInt
+foreign import ccall unsafe "__hscore_X_OK" x_OK :: CInt
 
 foreign import ccall unsafe "__hscore_S_IRUSR" s_IRUSR :: CMode
 foreign import ccall unsafe "__hscore_S_IWUSR" s_IWUSR :: CMode
@@ -875,7 +883,7 @@ foreign import ccall unsafe "__hscore_long_path_size"
 
 #else
 long_path_size :: Int
-long_path_size = 2048  /* guess? */
+long_path_size = 2048  --  // guess?
 
 #endif /* __GLASGOW_HASKELL__ */