[commit: base] master: Fix handling of suffixes for GNU iconv (4d36327)

Repository : ssh://darcs.haskell.org//srv/darcs/packages/base On branch : master http://hackage.haskell.org/trac/ghc/changeset/4d3632720af9016d0099896d155e96...
---------------------------------------------------------------
commit 4d3632720af9016d0099896d155e96b0957acd4b
Author: Max Bolingbroke
---------------------------------------------------------------
GHC/IO/Encoding/Iconv.hs | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/GHC/IO/Encoding/Iconv.hs b/GHC/IO/Encoding/Iconv.hs index 0316698..440344a 100644 --- a/GHC/IO/Encoding/Iconv.hs +++ b/GHC/IO/Encoding/Iconv.hs @@ -41,6 +41,7 @@ import Data.Maybe import GHC.Base import GHC.IO.Buffer import GHC.IO.Encoding.Types +import GHC.List (span) import GHC.Num import GHC.Show import GHC.Real @@ -138,8 +139,12 @@ mkTextEncoding :: String -> IO TextEncoding mkTextEncoding charset = do return (TextEncoding { textEncodingName = charset, - mkTextDecoder = newIConv charset haskellChar iconvDecode, - mkTextEncoder = newIConv haskellChar charset iconvEncode}) + mkTextDecoder = newIConv raw_charset (haskellChar ++ suffix) (iconvDecode cfm), + mkTextEncoder = newIConv haskellChar charset (iconvEncode cfm)}) + where + -- An annoying feature of GNU iconv is that the //PREFIXES only take + -- effect when they appear on the tocode parameter to iconv_open: + (raw_charset, suffix) = span (/= '/') charset newIConv :: String -> String -> (IConv -> Buffer a -> Buffer b -> IO (Buffer a, Buffer b))
participants (1)
-
Max Bolingbroke