19 lines
626 B
Haskell
19 lines
626 B
Haskell
|
{- File system encoding handling.
|
||
|
-
|
||
|
- Copyright 2012 Joey Hess <joey@kitenet.net>
|
||
|
-
|
||
|
- Licensed under the GNU GPL version 3 or higher.
|
||
|
-}
|
||
|
|
||
|
module Utility.FileSystemEncoding where
|
||
|
|
||
|
import GHC.IO.Encoding (getFileSystemEncoding)
|
||
|
import GHC.Foreign as GHC
|
||
|
|
||
|
{- Marshal a Haskell FilePath into a NUL terminated C string using temporary
|
||
|
- storage. The FilePath is encoded using the filesystem encoding,
|
||
|
- reversing the decoding that should have been done when the FilePath
|
||
|
- was obtained. -}
|
||
|
withFilePath :: FilePath -> (CString -> IO a) -> IO a
|
||
|
withFilePath fp f = getFileSystemEncoding >>= \enc -> GHC.withCString enc fp f
|