-- | A locale-aware replacement for the standard IO routines module LocaleIO( putStr, putStrLn, putErr, putErrLn, putErrDie, LocaleIO.readFile, LocaleIO.print, LocaleIO.hGetContents ) where import Prelude hiding(putStr, putStrLn) import qualified Prelude import IO hiding(putStr, putStrLn) import IConv import System import Char toUTF8 s = stringToBytes s >>= return . map (chr . fromIntegral) fromUTF8 s = bytesToString (map (fromIntegral . ord) s) putStr x = toUTF8 x >>= Prelude.putStr putStrLn x = toUTF8 x >>= Prelude.putStrLn putErr s = hFlush stdout >> toUTF8 s >>= IO.hPutStr IO.stderr putErrLn s = hFlush stdout >> toUTF8 s >>= IO.hPutStrLn IO.stderr putErrDie s = hFlush stdout >> (toUTF8 s >>= IO.hPutStrLn IO.stderr) >> System.exitFailure print x = putStrLn $ show x readFile fn = Prelude.readFile fn >>= \s -> fromUTF8 s hGetContents h = IO.hGetContents h >>= \s -> fromUTF8 s