summaryrefslogtreecommitdiff
path: root/Utility
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-05-11 18:23:41 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-05-11 18:23:41 -0400
commit618af8b6772d25ab27336d240ecddae7ae207561 (patch)
tree9e48ea32c7cbe11603ab599b5e0616457cd4de4e /Utility
parentdb56fab07ddd6910b1dc08f4fa242c267c469eb5 (diff)
clean up from windows porting
Diffstat (limited to 'Utility')
-rwxr-xr-xUtility/Daemon.hs3
-rwxr-xr-xUtility/Env.hs27
-rwxr-xr-xUtility/FileMode.hs5
-rwxr-xr-xUtility/Gpg.hs6
-rwxr-xr-xUtility/InodeCache.hs1
-rwxr-xr-xUtility/LogFile.hs1
-rw-r--r--Utility/Lsof.hs4
-rwxr-xr-xUtility/Url.hs1
-rwxr-xr-xUtility/UserInfo.hs1
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