packages feed

pugs-compat-0.0.1: src/Pugs/Compat/Global.hs

module Pugs.Compat.Global (
    _GlobalFinalizer,
    safeMode
) where

import Data.IORef
import System.IO.Unsafe
import Pugs.Compat.Posix
import Pugs.Compat.Monads

{-|
Returns @True@ if the environment variable @PUGS_SAFEMODE@ is set to a
true value. Most IO primitives are disabled under safe mode.
-}
safeMode :: Bool
safeMode = case (inlinePerformIO $ getEnv "PUGS_SAFEMODE") of
    Nothing     -> False
    Just ""     -> False
    Just "0"    -> False
    _           -> True

{-# NOINLINE _GlobalFinalizer #-}
_GlobalFinalizer :: IORef (IO ())
_GlobalFinalizer = unsafePerformIO $ newIORef (return ())