IO.hs revision 98890889ffb2e8f6f722b00e265a211f13b5a861
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias{-# LANGUAGE CPP #-}
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasModule : $Header$
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasDescription : wrapper module for changed IO handling since ghc-6.12.1
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasCopyright : (c) Christian Maeder DFKI GmbH 2010
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasLicense : GPLv2 or higher, see LICENSE.txt
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasMaintainer : Christian.Maeder@dfki.de
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasStability : provisional
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasPortability : portable
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogiasreading and writing files changed between ghc-6.10.4 and ghc-6.12.1 from
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogiaslatin1 to utf8.
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasThis module allows to continue reading and writing latin1 (HetCASL) files.
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasHowever, this module does not support to write utf8 files with ghc-6.10.4 or
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogiasearlier versions.
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasThe encoding only effects the contents. The encoding of file names is always
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias , readEncFile
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias , writeEncFile
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogiasdata Enc = Latin1 | Utf8
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasreadEncFile :: Enc -> String -> IO String
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiaswriteEncFile :: Enc -> String -> String -> IO ()
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias-- | set encoding of stdin and stdout
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiassetStdEnc :: Enc -> IO ()
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias#if __GLASGOW_HASKELL__ < 612
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasreadEncFile _ = readFile
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiaswriteEncFile _ = writeFile
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiassetStdEnc _ = return ()
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiasreadEncFile c f = case c of
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias Utf8 -> readFile f
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias hdl <- openFile f ReadMode
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias hSetEncoding hdl latin1
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias hGetContents hdl
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiaswriteEncFile c f txt = case c of
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias Utf8 -> writeFile f txt
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias Latin1 -> withFile f WriteMode $ \ hdl -> do
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias hSetEncoding hdl latin1
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias hPutStr hdl txt
658187feb755694eb5ff29561bda7109c22c743cAlexis TsogiassetStdEnc c = case c of
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias Utf8 -> return ()
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias hSetEncoding stdin latin1
658187feb755694eb5ff29561bda7109c22c743cAlexis Tsogias hSetEncoding stdout latin1