-- Copyright 2023 Lennart Augustsson -- See LICENSE file for full license. {-# OPTIONS_GHC -Wno-orphans #-} {-# LANGUAGE DataKinds #-} -- Functions for GHC that are defined in the UHS libs. module Compat(module Compat, Type) where import Data.Maybe import Control.Exception import GHC.Types import System.Environment import System.IO ------- IO -------- openFileM :: FilePath -> IOMode -> IO (Maybe Handle) openFileM path m = do r <- (try $ openFile path m) :: IO (Either IOError Handle) case r of Left _ -> return Nothing Right h -> return (Just h) openTmpFile :: String -> IO (String, Handle) openTmpFile tmplt = do mtmp <- lookupEnv "TMPDIR" let tmp = fromMaybe "/tmp" mtmp res <- try $ openTempFile tmp tmplt case res of Right x -> return x Left (_::SomeException) -> openTempFile "." tmplt ------- Read -------- usingMhs :: Bool usingMhs = False _wordSize :: Int _wordSize = 64 _isWindows :: Bool _isWindows = False -- This cannot be implemented with GHC. rnfNoErr :: forall a . a -> () rnfNoErr _ = ()