[commit: directory] master: Update for a mutable localeEncoding (f2ea0c2)
Max Bolingbroke
batterseapower at hotmail.com
Sat Nov 19 12:23:32 CET 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/directory
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/f2ea0c24217d0edb84dbe204f4625bb88981d3a6
>---------------------------------------------------------------
commit f2ea0c24217d0edb84dbe204f4625bb88981d3a6
Author: Max Bolingbroke <batterseapower at hotmail.com>
Date: Fri Nov 18 17:49:00 2011 +0000
Update for a mutable localeEncoding
>---------------------------------------------------------------
System/Directory.hs | 24 +++++++++++++++---------
1 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/System/Directory.hs b/System/Directory.hs
index 6d16dfd..bd73849 100644
--- a/System/Directory.hs
+++ b/System/Directory.hs
@@ -128,6 +128,11 @@ import qualified System.Win32 as Win32
import qualified System.Posix as Posix
#endif
+#if __GLASGOW_HASKELL__ < 703
+getFileSystemEncoding :: IO TextEncoding
+getFileSystemEncoding = return fileSystemEncoding
+#endif
+
#endif /* __GLASGOW_HASKELL__ */
{- $intro
@@ -716,21 +721,22 @@ copyFile fromFPath toFPath =
canonicalizePath :: FilePath -> IO FilePath
canonicalizePath fpath =
#if defined(mingw32_HOST_OS)
- do path <- Win32.getFullPathName fpath
+ do path <- Win32.getFullPathName fpath
#else
#if __GLASGOW_HASKELL__ > 700
- GHC.withCString fileSystemEncoding fpath $ \pInPath ->
- allocaBytes long_path_size $ \pOutPath ->
- do throwErrnoPathIfNull "canonicalizePath" fpath $ c_realpath pInPath pOutPath
- path <- GHC.peekCString fileSystemEncoding pOutPath
+ do enc <- getFileSystemEncoding
+ GHC.withCString enc fpath $ \pInPath ->
+ allocaBytes long_path_size $ \pOutPath ->
+ do throwErrnoPathIfNull "canonicalizePath" fpath $ c_realpath pInPath pOutPath
+ path <- GHC.peekCString enc pOutPath
#else
withCString fpath $ \pInPath ->
- allocaBytes long_path_size $ \pOutPath ->
- do throwErrnoPathIfNull "canonicalizePath" fpath $ c_realpath pInPath pOutPath
- path <- peekCString pOutPath
+ allocaBytes long_path_size $ \pOutPath ->
+ do throwErrnoPathIfNull "canonicalizePath" fpath $ c_realpath pInPath pOutPath
+ path <- peekCString pOutPath
#endif
#endif
- return (normalise path)
+ return (normalise path)
-- normalise does more stuff, like upper-casing the drive letter
#if !defined(mingw32_HOST_OS)
More information about the Cvs-libraries
mailing list