diff options
Diffstat (limited to 'Utility')
-rwxr-xr-x | Utility/Daemon.hs | 3 | ||||
-rwxr-xr-x | Utility/Env.hs | 27 | ||||
-rwxr-xr-x | Utility/FileMode.hs | 5 | ||||
-rwxr-xr-x | Utility/Gpg.hs | 6 | ||||
-rwxr-xr-x | Utility/InodeCache.hs | 1 | ||||
-rwxr-xr-x | Utility/LogFile.hs | 1 | ||||
-rw-r--r-- | Utility/Lsof.hs | 4 | ||||
-rwxr-xr-x | Utility/Url.hs | 1 | ||||
-rwxr-xr-x | Utility/UserInfo.hs | 1 |
9 files changed, 31 insertions, 18 deletions
diff --git a/Utility/Daemon.hs b/Utility/Daemon.hs index a01b078b8..b23a654cd 100755 --- a/Utility/Daemon.hs +++ b/Utility/Daemon.hs @@ -14,8 +14,9 @@ import Utility.LogFile #ifndef __WINDOWS__ import System.Posix -#endif +#else import System.Posix.Types +#endif {- Run an action as a daemon, with all output sent to a file descriptor. - diff --git a/Utility/Env.hs b/Utility/Env.hs index c6f051052..e1ab52415 100755 --- a/Utility/Env.hs +++ b/Utility/Env.hs @@ -10,28 +10,35 @@ module Utility.Env where #ifdef __WINDOWS__ -import qualified System.Environment as E import Utility.Exception +import qualified System.Environment as E #else -import qualified System.Posix.Env as E +import qualified System.Posix.Env as PE #endif {- Posix getEnv is faster than the one in System.Environment, - so use when available. -} getEnv :: String -> IO (Maybe String) #ifndef __WINDOWS__ -getEnv = E.getEnv +getEnv = PE.getEnv #else getEnv = catchMaybeIO . E.getEnv #endif getEnvDefault :: String -> String -> IO String #ifndef __WINDOWS__ -getEnvDefault = E.getEnvDefault +getEnvDefault = PE.getEnvDefault #else getEnvDefault var fallback = fromMaybe fallback <$> getEnv var #endif +getEnvironment :: IO [(String, String)] +#ifndef __WINDOWS__ +getEnvironment = PE.getEnvironment +#else +getEnvironment = E.getEnvironment +#endif + {- Returns True if it could successfully set the environment variable. - - There is, apparently, no way to do this in Windows. Instead, @@ -39,8 +46,18 @@ getEnvDefault var fallback = fromMaybe fallback <$> getEnv var setEnv :: String -> String -> Bool -> IO Bool #ifndef __WINDOWS__ setEnv var val overwrite = do - E.setEnv var val overwrite + PE.setEnv var val overwrite return True #else setEnv _ _ _ = return False #endif + +{- Returns True if it could successfully unset the environment variable. -} +unsetEnv :: String -> IO Bool +#ifndef __WINDOWS__ +unsetEnv var = do + PE.unsetEnv var + return True +#else +unsetEnv _ _ _ = return False +#endif diff --git a/Utility/FileMode.hs b/Utility/FileMode.hs index e9701d967..47247e2a1 100755 --- a/Utility/FileMode.hs +++ b/Utility/FileMode.hs @@ -12,9 +12,10 @@ module Utility.FileMode where import Common import Control.Exception (bracket) -import Utility.Exception import System.PosixCompat.Types -import System.PosixCompat.Files +#ifndef __WINDOWS__ +import System.Posix.Files +#endif import Foreign (complement) {- Applies a conversion function to a file's mode. -} diff --git a/Utility/Gpg.hs b/Utility/Gpg.hs index 0ed4b85da..d3460bdf7 100755 --- a/Utility/Gpg.hs +++ b/Utility/Gpg.hs @@ -13,11 +13,9 @@ import System.Posix.Types import Control.Applicative import Control.Concurrent import Control.Exception (bracket) -#ifndef mingw32_HOST_OS -import System.Posix.Env (setEnv, unsetEnv, getEnv) -#endif import Common +import Utility.Env newtype KeyIds = KeyIds [String] deriving (Ord, Eq) @@ -229,7 +227,7 @@ testHarness a = do setup = do base <- getTemporaryDirectory dir <- mktmpdir $ base </> "gpgtmpXXXXXX" - setEnv var dir True + void $ setEnv var dir True _ <- pipeStrict [Params "--import -q"] $ unlines [testSecretKey, testKey] return dir diff --git a/Utility/InodeCache.hs b/Utility/InodeCache.hs index ec0f206d3..8037c61c8 100755 --- a/Utility/InodeCache.hs +++ b/Utility/InodeCache.hs @@ -9,7 +9,6 @@ module Utility.InodeCache where import Common import System.PosixCompat.Types -import System.PosixCompat.Files import Utility.QuickCheck data InodeCachePrim = InodeCachePrim FileID FileOffset EpochTime diff --git a/Utility/LogFile.hs b/Utility/LogFile.hs index ccda429fc..339d6e8b9 100755 --- a/Utility/LogFile.hs +++ b/Utility/LogFile.hs @@ -12,7 +12,6 @@ module Utility.LogFile where import Common import System.Posix.Types -import System.PosixCompat.Files openLog :: FilePath -> IO Fd #ifndef __WINDOWS__ diff --git a/Utility/Lsof.hs b/Utility/Lsof.hs index 31da6781e..6d6b353f2 100644 --- a/Utility/Lsof.hs +++ b/Utility/Lsof.hs @@ -11,9 +11,9 @@ module Utility.Lsof where import Common import Build.SysConfig as SysConfig +import Utility.Env import System.Posix.Types -import System.Posix.Env data LsofOpenMode = OpenReadWrite | OpenReadOnly | OpenWriteOnly | OpenUnknown deriving (Show, Eq) @@ -32,7 +32,7 @@ setupLsof = do when (isAbsolute cmd) $ do path <- getSearchPath let path' = takeDirectory cmd : path - setEnv "PATH" (intercalate [searchPathSeparator] path') True + void $ setEnv "PATH" (intercalate [searchPathSeparator] path') True {- Checks each of the files in a directory to find open files. - Note that this will find hard links to files elsewhere that are open. -} diff --git a/Utility/Url.hs b/Utility/Url.hs index 97862e370..b831b3f01 100755 --- a/Utility/Url.hs +++ b/Utility/Url.hs @@ -20,7 +20,6 @@ import Network.URI import qualified Network.Browser as Browser import Network.HTTP import Data.Either -import System.PosixCompat.Files import qualified Build.SysConfig diff --git a/Utility/UserInfo.hs b/Utility/UserInfo.hs index 9781f584e..bc94ea8a1 100755 --- a/Utility/UserInfo.hs +++ b/Utility/UserInfo.hs @@ -14,7 +14,6 @@ module Utility.UserInfo ( ) where import Control.Applicative -import System.Posix.Types import System.PosixCompat import Utility.Env |