From 6be08d77e01ae418634897de62d44b5b1782566a Mon Sep 17 00:00:00 2001 From: krasimir Date: Mon, 23 Feb 2009 14:17:16 +0000 Subject: fix the handling of flag coding --- src/GFI.hs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'src/GFI.hs') diff --git a/src/GFI.hs b/src/GFI.hs index 748fcfe55..e5926f5e9 100644 --- a/src/GFI.hs +++ b/src/GFI.hs @@ -21,6 +21,7 @@ import PGF.Macros import PGF.Expr (readTree) import Data.Char +import Data.Maybe import Data.List(isPrefixOf) import qualified Data.Map as Map import qualified Text.ParserCombinators.ReadP as RP @@ -140,15 +141,19 @@ loop opts gfenv0 = do "ph":_ -> mapM_ (putStrLn . enc) (reverse (history gfenv0)) >> loopNewCPU gfenv - "se":c:_ -> do + "se":c:_ -> + case lookup c encodings of + Just cod -> do #ifdef mingw32_HOST_OS - case c of - 'c':'p':c -> case reads c of - [(cp,"")] -> setConsoleCP cp >> setConsoleOutputCP cp - _ -> return () - _ -> return () + case c of + 'c':'p':c -> case reads c of + [(cp,"")] -> setConsoleCP cp >> setConsoleOutputCP cp + _ -> return () + _ -> return () #endif - loopNewCPU $ gfenv {coding = c} + loopNewCPU $ gfenv {coding = cod} + Nothing -> do putStrLn "unknown encoding" + loopNewCPU gfenv -- ordinary commands, working on CommandEnv _ -> do @@ -208,16 +213,16 @@ data GFEnv = GFEnv { commandenv :: CommandEnv, history :: [String], cputime :: Integer, - coding :: String + coding :: Encoding } emptyGFEnv :: IO GFEnv emptyGFEnv = do #ifdef mingw32_HOST_OS codepage <- getACP - let coding = "cp"++show codepage + let coding = fromMaybe UTF_8 (lookup ("cp"++show codepage) encodings) #else - let coding = "utf8" + let coding = UTF_8 #endif return $ GFEnv emptyGrammar (mkCommandEnv coding emptyPGF) [] 0 coding -- cgit v1.2.3