diff --git a/System/Console/Haskeline/Directory.hsc b/System/Console/Haskeline/Directory.hsc
--- a/System/Console/Haskeline/Directory.hsc
+++ b/System/Console/Haskeline/Directory.hsc
@@ -72,6 +72,13 @@
         else peekCWString pathPtr
 #endif
 
+#else 
+-- POSIX
+-- On 7.2.1 and later, getDirectoryContents uses the locale encoding
+-- But previous version don't, so we need to decode manually.
+
+#if __GLASGOW_HASKELL__ >= 701
+import System.Directory
 #else
 
 import Data.ByteString.Char8 (pack, unpack)
@@ -101,4 +108,5 @@
     decoder <- openDecoder codeset
     handle (\(_::IOException) -> return "")
         $ D.getHomeDirectory >>= decoder . pack
+#endif
 #endif
diff --git a/haskeline.cabal b/haskeline.cabal
--- a/haskeline.cabal
+++ b/haskeline.cabal
@@ -1,6 +1,6 @@
 Name:           haskeline
 Cabal-Version:  >=1.6
-Version:        0.6.4.2
+Version:        0.6.4.3
 Category:       User Interfaces
 License:        BSD3
 License-File:   LICENSE
