fix windows build

This commit is contained in:
Joey Hess 2013-05-12 12:24:46 -05:00
parent abe8d549df
commit 4fe293bddf

18
Utility/Env.hs Normal file → Executable file
View file

@ -9,31 +9,31 @@
module Utility.Env where module Utility.Env where
#ifdef __WINDOWS__ #ifdef mingw32_HOST_OS
import Utility.Exception import Utility.Exception
import Control.Applicative
import Data.Maybe
import qualified System.Environment as E import qualified System.Environment as E
#else #else
import qualified System.Posix.Env as PE import qualified System.Posix.Env as PE
#endif #endif
{- Posix getEnv is faster than the one in System.Environment,
- so use when available. -}
getEnv :: String -> IO (Maybe String) getEnv :: String -> IO (Maybe String)
#ifndef __WINDOWS__ #ifndef mingw32_HOST_OS
getEnv = PE.getEnv getEnv = PE.getEnv
#else #else
getEnv = catchMaybeIO . E.getEnv getEnv = catchMaybeIO . E.getEnv
#endif #endif
getEnvDefault :: String -> String -> IO String getEnvDefault :: String -> String -> IO String
#ifndef __WINDOWS__ #ifndef mingw32_HOST_OS
getEnvDefault = PE.getEnvDefault getEnvDefault = PE.getEnvDefault
#else #else
getEnvDefault var fallback = fromMaybe fallback <$> getEnv var getEnvDefault var fallback = fromMaybe fallback <$> getEnv var
#endif #endif
getEnvironment :: IO [(String, String)] getEnvironment :: IO [(String, String)]
#ifndef __WINDOWS__ #ifndef mingw32_HOST_OS
getEnvironment = PE.getEnvironment getEnvironment = PE.getEnvironment
#else #else
getEnvironment = E.getEnvironment getEnvironment = E.getEnvironment
@ -44,7 +44,7 @@ getEnvironment = E.getEnvironment
- There is, apparently, no way to do this in Windows. Instead, - There is, apparently, no way to do this in Windows. Instead,
- environment varuables must be provided when running a new process. -} - environment varuables must be provided when running a new process. -}
setEnv :: String -> String -> Bool -> IO Bool setEnv :: String -> String -> Bool -> IO Bool
#ifndef __WINDOWS__ #ifndef mingw32_HOST_OS
setEnv var val overwrite = do setEnv var val overwrite = do
PE.setEnv var val overwrite PE.setEnv var val overwrite
return True return True
@ -54,10 +54,10 @@ setEnv _ _ _ = return False
{- Returns True if it could successfully unset the environment variable. -} {- Returns True if it could successfully unset the environment variable. -}
unsetEnv :: String -> IO Bool unsetEnv :: String -> IO Bool
#ifndef __WINDOWS__ #ifndef mingw32_HOST_OS
unsetEnv var = do unsetEnv var = do
PE.unsetEnv var PE.unsetEnv var
return True return True
#else #else
unsetEnv _ _ _ = return False unsetEnv _ = return False
#endif #endif