summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Database/Handle.hs2
-rw-r--r--Utility/FileSystemEncoding.hs8
2 files changed, 9 insertions, 1 deletions
diff --git a/Database/Handle.hs b/Database/Handle.hs
index 9071cd538..d84ce5b62 100644
--- a/Database/Handle.hs
+++ b/Database/Handle.hs
@@ -69,7 +69,7 @@ openDb db tablename = do
worker <- async (workerThread (T.pack db) tablename jobs)
-- work around https://github.com/yesodweb/persistent/issues/474
- liftIO useFileSystemEncoding
+ liftIO $ fileEncoding stderr
return $ DbHandle worker jobs
diff --git a/Utility/FileSystemEncoding.hs b/Utility/FileSystemEncoding.hs
index be43ace95..ae3bd35d7 100644
--- a/Utility/FileSystemEncoding.hs
+++ b/Utility/FileSystemEncoding.hs
@@ -10,6 +10,7 @@
module Utility.FileSystemEncoding (
useFileSystemEncoding,
+ fileEncoding,
withFilePath,
md5FilePath,
decodeBS,
@@ -63,6 +64,13 @@ useFileSystemEncoding = do
hSetEncoding stderr e
Encoding.setLocaleEncoding e
+fileEncoding :: Handle -> IO ()
+#ifndef mingw32_HOST_OS
+fileEncoding h = hSetEncoding h =<< Encoding.getFileSystemEncoding
+#else
+fileEncoding h = hSetEncoding h Encoding.utf8
+#endif
+
{- 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