module System.Environment.UTF8
  (getArgs, getProgName, getEnv, withArgs, withProgName, getEnvironment)
  where

import Codec.Binary.UTF8.String (decodeString)
import qualified System.Environment as Sys

getArgs :: IO [String]
getArgs = map decodeString `fmap` Sys.getArgs

getProgName :: IO String
getProgName = decodeString `fmap` Sys.getProgName

getEnv :: String -> IO String
getEnv x = decodeString `fmap` Sys.getEnv x

withArgs :: [String] -> IO a -> IO a
withArgs = Sys.withArgs

withProgName :: String -> IO a -> IO a
withProgName = Sys.withProgName

getEnvironment :: IO [(String,String)]
getEnvironment = map f `fmap` Sys.getEnvironment
  where f (a,b) = (decodeString a, decodeString b)