git.iko.soy/typeable/pandoc
on master help sign in
Encode filenames as UTF8.

Resolves Issue #252 (pandoc doesn't properly handle unicode filenames).

commitca5217881de1be672ac855a1979e9436aa6ced35 authorJohn MacFarlane <jgm@berkeley.edu> dateFri 10 Sep 2010, 19:53 (16 years ago) parent6ccdde5
2 files changed+5−4
src/Text/Pandoc/UTF8.hs+3−2 src/pandoc.hs+2−2
src/Text/Pandoc/UTF8.hs+3−2
@@ -38,6 +38,7 @@ module Text.Pandoc.UTF8 ( readFile
3838
3939where
4040import qualified Data.ByteString as B
41+import Codec.Binary.UTF8.String (encodeString)
4142import Data.ByteString.UTF8 (toString, fromString)
4243import Prelude hiding (readFile, writeFile, getContents, putStr, putStrLn)
4344import System.IO (Handle)
@@ -51,10 +52,10 @@ stripBOM s | bom `B.isPrefixOf` s = B.drop 3 s
5152stripBOM s = s
5253
5354readFile :: FilePath -> IO String
54−readFile = liftM (toString . stripBOM) . B.readFile
55+readFile = liftM (toString . stripBOM) . B.readFile . encodeString
5556
5657writeFile :: FilePath -> String -> IO ()
57−writeFile f = B.writeFile f . fromString
58+writeFile f = B.writeFile (encodeString f) . fromString
5859
5960getContents :: IO String
6061getContents = liftM (toString . stripBOM) B.getContents
src/pandoc.hs+2−2
@@ -54,7 +54,7 @@ import Network.HTTP (simpleHTTP, mkRequest, getResponseBody, RequestMethod(..))
5454import Network.URI (parseURI, isURI)
5555import qualified Data.ByteString.Lazy as B
5656import Data.ByteString.Lazy.UTF8 (toString, fromString)
57−import Codec.Binary.UTF8.String (decodeString)
57+import Codec.Binary.UTF8.String (decodeString, encodeString)
5858
5959copyrightMessage :: String
6060copyrightMessage = "\nCopyright (C) 2006-2010 John MacFarlane\n" ++
@@ -850,4 +850,4 @@ main = do
850850
851851 if outputFile == "-"
852852 then B.putStr writerOutput
853− else B.writeFile outputFile writerOutput
853+ else B.writeFile (encodeString outputFile) writerOutput