{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -fno-warn-duplicate-exports #-} -- | Extra functions for "System.Environment". All these functions are available in later GHC versions, -- but this code works all the way back to GHC 7.2. module System.Environment.Extra( module System.Environment, getExecutablePath, lookupEnv ) where import System.Environment #if __GLASGOW_HASKELL__ < 706 import Control.Exception.Extra import System.IO.Error import Data.Functor -- | Alias for 'getProgName' in GHC 7.4 and below, otherwise -- returns the absolute pathname of the current executable. getExecutablePath :: IO FilePath getExecutablePath = getProgName -- | Return the value of the environment variable var, or Nothing if there is no such value. lookupEnv :: String -> IO (Maybe String) lookupEnv x = catchBool isDoesNotExistError (Just <$> getEnv x) (const $ return Nothing) #endif