diff options
| author | Joey Hess <joeyh@joeyh.name> | 2015-01-06 19:07:40 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2015-01-06 19:07:40 -0400 |
| commit | 16a5f561f52f35f95a59976b5ee61d99945b0d55 (patch) | |
| tree | 791803645efedbc481cafcd907d2bcf73c03d1af /src/Utility/Env.hs | |
| parent | f4a57ca27d2009b3069c6b33904d198e6aa73f79 (diff) | |
Merge Utiity modules from git-annex.
Except for a few that are using the other exception handling library,
that propellor has not switched to yet.
Diffstat (limited to 'src/Utility/Env.hs')
| -rw-r--r-- | src/Utility/Env.hs | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/Utility/Env.hs b/src/Utility/Env.hs index dd502fd3..ff6644fb 100644 --- a/src/Utility/Env.hs +++ b/src/Utility/Env.hs @@ -1,6 +1,6 @@ {- portable environment variables - - - Copyright 2013 Joey Hess <id@joeyh.name> + - Copyright 2013 Joey Hess <joey@kitenet.net> - - License: BSD-2-clause -} @@ -14,6 +14,7 @@ import Utility.Exception import Control.Applicative import Data.Maybe import qualified System.Environment as E +import qualified System.SetEnv #else import qualified System.Posix.Env as PE #endif @@ -39,27 +40,27 @@ getEnvironment = PE.getEnvironment getEnvironment = E.getEnvironment #endif -{- Returns True if it could successfully set the environment variable. +{- Sets an environment variable. To overwrite an existing variable, + - overwrite must be True. - - - There is, apparently, no way to do this in Windows. Instead, - - environment varuables must be provided when running a new process. -} -setEnv :: String -> String -> Bool -> IO Bool + - On Windows, setting a variable to "" unsets it. -} +setEnv :: String -> String -> Bool -> IO () #ifndef mingw32_HOST_OS -setEnv var val overwrite = do - PE.setEnv var val overwrite - return True +setEnv var val overwrite = PE.setEnv var val overwrite #else -setEnv _ _ _ = return False +setEnv var val True = System.SetEnv.setEnv var val +setEnv var val False = do + r <- getEnv var + case r of + Nothing -> setEnv var val True + Just _ -> return () #endif -{- Returns True if it could successfully unset the environment variable. -} -unsetEnv :: String -> IO Bool +unsetEnv :: String -> IO () #ifndef mingw32_HOST_OS -unsetEnv var = do - PE.unsetEnv var - return True +unsetEnv = PE.unsetEnv #else -unsetEnv _ = return False +unsetEnv = System.SetEnv.unsetEnv #endif {- Adds the environment variable to the input environment. If already |
