X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=System%2FEnvironment.hs;h=a0761d59951bdbb1710a976edecd3058c815a6cb;hb=dbe5ad2718b2133d8c4205589905cf14acd73dcf;hp=19bccf35453b7ae01fbcdf97292685251d03a6e0;hpb=75ea0fa2485c169f0546d5d40477d2f6747efe29;p=ghc-base.git diff --git a/System/Environment.hs b/System/Environment.hs index 19bccf3..a0761d5 100644 --- a/System/Environment.hs +++ b/System/Environment.hs @@ -33,6 +33,7 @@ import Foreign import Foreign.C import Control.Monad import GHC.IOBase +#include "config.h" #endif #ifdef __HUGS__ @@ -50,7 +51,7 @@ import System -- --------------------------------------------------------------------------- -- getArgs, getProgName, getEnv --- Computation `getArgs' returns a list of the program's command +-- | Computation 'getArgs' returns a list of the program's command -- line arguments (not including the program name). #ifdef __GLASGOW_HASKELL__ @@ -106,11 +107,13 @@ unpackProgName argv = do isPathSeparator _ = False --- Computation `getEnv var' returns the value --- of the environment variable {\em var}. - --- This computation may fail with --- NoSuchThing: The environment variable does not exist. +-- | Computation 'getEnv' @var@ returns the value +-- of the environment variable @var@. +-- +-- This computation may fail with: +-- +-- * 'System.IO.Error.isDoesNotExistError' if the environment variable +-- does not exist. getEnv :: String -> IO String getEnv name = @@ -128,6 +131,7 @@ foreign import ccall unsafe "getenv" @withArgs args act@ - while executing action @act@, have 'System.getArgs' return @args@ (GHC only). -} +withArgs :: [String] -> IO a -> IO a withArgs xs act = do p <- System.Environment.getProgName withArgv (p:xs) act @@ -136,6 +140,7 @@ withArgs xs act = do @withProgName name act@ - while executing action @act@, have 'System.getProgName' return @name@ (GHC only). -} +withProgName :: String -> IO a -> IO a withProgName nm act = do xs <- System.Environment.getArgs withArgv (nm:xs) act @@ -143,6 +148,7 @@ withProgName nm act = do -- Worker routine which marshals and replaces an argv vector for -- the duration of an action. +withArgv :: [String] -> IO a -> IO a withArgv new_args act = do pName <- System.Environment.getProgName existing_args <- System.Environment.getArgs