put in utf8 forcing workaround

Haskell's IO layer crashes on characters > 255 when in a non-unicode (latin1)
locale. Until Haskell gets better behavior, put in an admittedly ugly
workaround for that: git-annex forces utf8 output mode no matter what
locale is selected. So if you use a non-utf8 locale, your filenames with
characters > 127 will not be displayed as you'd expect. But at least it
won't crash.
This commit is contained in:
Joey Hess 2011-03-08 18:05:20 -04:00
parent b85c91743c
commit 26544de946
5 changed files with 20 additions and 0 deletions

View file

@ -64,3 +64,12 @@ indent s = join "\n" $ map (\l -> " " ++ l) $ lines s
- non-decoded form. -}
filePathToString :: FilePath -> String
filePathToString = if SysConfig.unicodefilepath then id else UTF8.decodeString
{- Workaround to avoid crashes displaying filenames containing
- characters > 255 in non-utf8 locales. Force encodings to utf-8,
- even though this may mean some characters in the encoding
- are mangled. -}
forceUtf8 :: IO ()
forceUtf8 = do
hSetEncoding stdout utf8
hSetEncoding stderr utf8