perhaps more clear type

This commit is contained in:
Joey Hess 2012-03-10 11:38:38 -04:00
parent 10d9315b59
commit f9d44cccd9
2 changed files with 6 additions and 6 deletions

View file

@ -12,6 +12,7 @@ import qualified GHC.IO.Encoding as Encoding
import Foreign.C
import System.IO
import System.IO.Unsafe
import qualified Data.Hash.MD5 as MD5
{- Sets a Handle to use the filesystem encoding. This causes data
- written or read from it to be encoded/decoded the same
@ -28,8 +29,7 @@ withFilePath :: FilePath -> (CString -> IO a) -> IO a
withFilePath fp f = Encoding.getFileSystemEncoding
>>= \enc -> GHC.withCString enc fp f
{- Encodes a FilePath into a String of encoded bytes, applying the
- filesystem encoding.
{- Encodes a FilePath into a Str, applying the filesystem encoding.
-
- This use of unsafePerformIO is belived to be safe; GHC's interface
- only allows doing this conversion with CStrings, and the CString buffer
@ -37,7 +37,7 @@ withFilePath fp f = Encoding.getFileSystemEncoding
- effects.
-}
{-# NOINLINE encodeFilePath #-}
encodeFilePath :: FilePath -> String
encodeFilePath fp = unsafePerformIO $ do
encodeFilePath :: FilePath -> MD5.Str
encodeFilePath fp = MD5.Str $ unsafePerformIO $ do
enc <- Encoding.getFileSystemEncoding
GHC.withCString enc fp $ GHC.peekCString Encoding.char8