aboutsummaryrefslogtreecommitdiff
path: root/CmdLine.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-03-08 18:05:20 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-03-08 18:05:20 -0400
commit26544de9463291b8185fdd1a7c1b33710ef7db3c (patch)
treeab7d626afd1908f6f089e154f87e2585dff703d6 /CmdLine.hs
parentb85c91743c73597f41cae73b042ffa86be929ed3 (diff)
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.
Diffstat (limited to 'CmdLine.hs')
-rw-r--r--CmdLine.hs2
1 files changed, 2 insertions, 0 deletions
diff --git a/CmdLine.hs b/CmdLine.hs
index 475ca99e7..1c01aa75f 100644
--- a/CmdLine.hs
+++ b/CmdLine.hs
@@ -11,6 +11,7 @@ module CmdLine (
shutdown
) where
+import System.IO
import System.IO.Error (try)
import System.Console.GetOpt
import Control.Monad.State (liftIO)
@@ -30,6 +31,7 @@ import UUID
{- Runs the passed command line. -}
dispatch :: Git.Repo -> [String] -> [Command] -> [Option] -> String -> IO ()
dispatch gitrepo args cmds options header = do
+ forceUtf8
state <- Annex.new gitrepo allBackends
(actions, state') <- Annex.run state $ parseCmd args header cmds options
tryRun state' $ [startup, upgrade] ++ actions ++ [shutdown]