summaryrefslogtreecommitdiff
path: root/Utility
diff options
context:
space:
mode:
authorJoey Hess <joeyh@joeyh.name>2017-12-14 12:55:53 -0400
committerJoey Hess <joeyh@joeyh.name>2017-12-14 12:55:53 -0400
commit5ca81d114d7ccf0ee984cb03f56ad6ec1d9499f0 (patch)
tree4b49c7c03e77f356dd3941070509a498d97a3290 /Utility
parent3a59749f2c0603872109a85c44234dd744d059cc (diff)
downloadgit-repair-5ca81d114d7ccf0ee984cb03f56ad6ec1d9499f0.tar.gz
Merge from git-annex.
Diffstat (limited to 'Utility')
-rw-r--r--Utility/Directory.hs2
-rw-r--r--Utility/FileMode.hs2
-rw-r--r--Utility/Misc.hs2
-rw-r--r--Utility/Path.hs9
-rw-r--r--Utility/Tmp.hs4
-rw-r--r--Utility/UserInfo.hs9
6 files changed, 18 insertions, 10 deletions
diff --git a/Utility/Directory.hs b/Utility/Directory.hs
index c24f36d..895581d 100644
--- a/Utility/Directory.hs
+++ b/Utility/Directory.hs
@@ -16,6 +16,7 @@ module Utility.Directory (
import System.IO.Error
import Control.Monad
import System.FilePath
+import System.PosixCompat.Files
import Control.Applicative
import Control.Concurrent
import System.IO.Unsafe (unsafeInterleaveIO)
@@ -31,7 +32,6 @@ import Control.Monad.IfElse
#endif
import Utility.SystemDirectory
-import Utility.PosixFiles
import Utility.Tmp
import Utility.Exception
import Utility.Monad
diff --git a/Utility/FileMode.hs b/Utility/FileMode.hs
index d9a2694..370bcf6 100644
--- a/Utility/FileMode.hs
+++ b/Utility/FileMode.hs
@@ -15,7 +15,7 @@ module Utility.FileMode (
import System.IO
import Control.Monad
import System.PosixCompat.Types
-import Utility.PosixFiles
+import System.PosixCompat.Files
#ifndef mingw32_HOST_OS
import System.Posix.Files
import Control.Monad.IO.Class (liftIO)
diff --git a/Utility/Misc.hs b/Utility/Misc.hs
index 4498c0a..2ae9928 100644
--- a/Utility/Misc.hs
+++ b/Utility/Misc.hs
@@ -112,7 +112,7 @@ hGetSomeString h sz = do
peekbytes :: Int -> Ptr Word8 -> IO [Word8]
peekbytes len buf = mapM (peekElemOff buf) [0..pred len]
-{- Reaps any zombie git processes.
+{- Reaps any zombie processes that may be hanging around.
-
- Warning: Not thread safe. Anything that was expecting to wait
- on a process and get back an exit status is going to be confused
diff --git a/Utility/Path.hs b/Utility/Path.hs
index 0779d16..dc91ce5 100644
--- a/Utility/Path.hs
+++ b/Utility/Path.hs
@@ -136,17 +136,22 @@ relPathDirToFile from to = relPathDirToFileAbs <$> absPath from <*> absPath to
-}
relPathDirToFileAbs :: FilePath -> FilePath -> FilePath
relPathDirToFileAbs from to
- | takeDrive from /= takeDrive to = to
+#ifdef mingw32_HOST_OS
+ | normdrive from /= normdrive to = to
+#endif
| otherwise = joinPath $ dotdots ++ uncommon
where
pfrom = sp from
pto = sp to
- sp = map dropTrailingPathSeparator . splitPath
+ sp = map dropTrailingPathSeparator . splitPath . dropDrive
common = map fst $ takeWhile same $ zip pfrom pto
same (c,d) = c == d
uncommon = drop numcommon pto
dotdots = replicate (length pfrom - numcommon) ".."
numcommon = length common
+#ifdef mingw32_HOST_OS
+ normdrive = map toLower . takeWhile (/= ':') . takeDrive
+#endif
prop_relPathDirToFile_basics :: FilePath -> FilePath -> Bool
prop_relPathDirToFile_basics from to
diff --git a/Utility/Tmp.hs b/Utility/Tmp.hs
index 6a541cf..7255c14 100644
--- a/Utility/Tmp.hs
+++ b/Utility/Tmp.hs
@@ -15,20 +15,20 @@ import Control.Monad.IfElse
import System.FilePath
import System.Directory
import Control.Monad.IO.Class
+import System.PosixCompat.Files
#ifndef mingw32_HOST_OS
import System.Posix.Temp (mkdtemp)
#endif
import Utility.Exception
import Utility.FileSystemEncoding
-import Utility.PosixFiles
type Template = String
{- Runs an action like writeFile, writing to a temp file first and
- then moving it into place. The temp file is stored in the same
- directory as the final file to avoid cross-device renames. -}
-viaTmp :: (MonadMask m, MonadIO m) => (FilePath -> String -> m ()) -> FilePath -> String -> m ()
+viaTmp :: (MonadMask m, MonadIO m) => (FilePath -> v -> m ()) -> FilePath -> v -> m ()
viaTmp a file content = bracketIO setup cleanup use
where
(dir, base) = splitFileName file
diff --git a/Utility/UserInfo.hs b/Utility/UserInfo.hs
index dd66c33..d504fa5 100644
--- a/Utility/UserInfo.hs
+++ b/Utility/UserInfo.hs
@@ -15,11 +15,13 @@ module Utility.UserInfo (
) where
import Utility.Env
-import Utility.Data
import Utility.Exception
+#ifndef mingw32_HOST_OS
+import Utility.Data
+import Control.Applicative
+#endif
import System.PosixCompat
-import Control.Applicative
import Prelude
{- Current user's home directory.
@@ -58,6 +60,7 @@ myVal envvars extract = go envvars
#ifndef mingw32_HOST_OS
go [] = Right . extract <$> (getUserEntryForID =<< getEffectiveUserID)
#else
- go [] = return $ Left ("environment not set: " ++ show envvars)
+ go [] = return $ either Left (Right . extract) $
+ Left ("environment not set: " ++ show envvars)
#endif
go (v:vs) = maybe (go vs) (return . Right) =<< getEnv v