summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Bolingbroke <batterseapower@hotmail.com>2011-11-02 13:46:24 +0000
committerMax Bolingbroke <batterseapower@hotmail.com>2011-11-02 13:46:24 +0000
commitde77751141cda79b35a17c07b4135b9d2540f6d4 (patch)
tree96898dec498c532e623216d564d5b45ad4589900
parent2043afcb0b938bc89257ab64d72a75b44a475c82 (diff)
downloadhaskell-de77751141cda79b35a17c07b4135b9d2540f6d4.tar.gz
Be more forgiving about encoding name capitalization/hyphenization
-rw-r--r--libraries/base/GHC/IO/Encoding.hs17
1 files changed, 9 insertions, 8 deletions
diff --git a/libraries/base/GHC/IO/Encoding.hs b/libraries/base/GHC/IO/Encoding.hs
index df14c0014c..1012290a99 100644
--- a/libraries/base/GHC/IO/Encoding.hs
+++ b/libraries/base/GHC/IO/Encoding.hs
@@ -45,6 +45,7 @@ import qualified GHC.IO.Encoding.UTF8 as UTF8
import qualified GHC.IO.Encoding.UTF16 as UTF16
import qualified GHC.IO.Encoding.UTF32 as UTF32
+import Data.Char (toUpper)
import Data.List
import Data.Maybe
@@ -192,14 +193,14 @@ mkTextEncoding e = case mb_coding_failure_mode of
("unknown encoding:" ++ e) Nothing Nothing)
mkTextEncoding' :: CodingFailureMode -> String -> IO TextEncoding
-mkTextEncoding' cfm enc = case enc of
- "UTF-8" -> return $ UTF8.mkUTF8 cfm
- "UTF-16" -> return $ UTF16.mkUTF16 cfm
- "UTF-16LE" -> return $ UTF16.mkUTF16le cfm
- "UTF-16BE" -> return $ UTF16.mkUTF16be cfm
- "UTF-32" -> return $ UTF32.mkUTF32 cfm
- "UTF-32LE" -> return $ UTF32.mkUTF32le cfm
- "UTF-32BE" -> return $ UTF32.mkUTF32be cfm
+mkTextEncoding' cfm enc = case [toUpper c | c <- enc, c /= '-'] of
+ "UTF8" -> return $ UTF8.mkUTF8 cfm
+ "UTF16" -> return $ UTF16.mkUTF16 cfm
+ "UTF16LE" -> return $ UTF16.mkUTF16le cfm
+ "UTF16BE" -> return $ UTF16.mkUTF16be cfm
+ "UTF32" -> return $ UTF32.mkUTF32 cfm
+ "UTF32LE" -> return $ UTF32.mkUTF32le cfm
+ "UTF32BE" -> return $ UTF32.mkUTF32be cfm
#if defined(mingw32_HOST_OS)
'C':'P':n | [(cp,"")] <- reads n -> return $ CodePage.mkCodePageEncoding cfm cp
_ -> unknown_encoding