module Haddock.Compat
( getProcessID
, setEncoding
) where
import GHC.IO.Encoding.CodePage (mkLocaleEncoding)
import GHC.IO.Encoding.Failure (CodingFailureMode(TransliterateCodingFailure))
import System.IO (hSetEncoding, stdout, stderr)
import System.Win32.Process (ProcessId)
import qualified System.Win32.Process as Windows
setEncoding :: IO ()
setEncoding :: IO ()
setEncoding = do
Handle -> TextEncoding -> IO ()
hSetEncoding Handle
stdout (TextEncoding -> IO ()) -> TextEncoding -> IO ()
forall a b. (a -> b) -> a -> b
$ CodingFailureMode -> TextEncoding
mkLocaleEncoding CodingFailureMode
TransliterateCodingFailure
Handle -> TextEncoding -> IO ()
hSetEncoding Handle
stderr (TextEncoding -> IO ()) -> TextEncoding -> IO ()
forall a b. (a -> b) -> a -> b
$ CodingFailureMode -> TextEncoding
mkLocaleEncoding CodingFailureMode
TransliterateCodingFailure
getProcessID :: IO Int
getProcessID :: IO Int
getProcessID = forall a b. (Integral a, Num b) => a -> b
fromIntegral @ProcessId @Int (ProcessId -> Int) -> IO ProcessId -> IO Int
forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
<$> IO ProcessId
Windows.getCurrentProcessId