summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LocationLog.hs7
-rw-r--r--Utility.hs4
2 files changed, 7 insertions, 4 deletions
diff --git a/LocationLog.hs b/LocationLog.hs
index db1fac144..c921a2005 100644
--- a/LocationLog.hs
+++ b/LocationLog.hs
@@ -12,7 +12,6 @@
-
- A line of the log will look like: "date N reponame"
- Where N=1 when the repo has the file, and 0 otherwise.
- -
-}
module LocationLog where
@@ -69,8 +68,8 @@ readLog file = do
if exists
then do
h <- openLocked file ReadMode
- s <- hGetContents h
- -- hClose handle' -- TODO disabled due to lazy IO issue
+ s <- hGetContentsStrict h
+ hClose h
-- filter out any unparsable lines
return $ filter (\l -> (status l) /= Undefined )
$ map read $ lines s
@@ -95,7 +94,7 @@ logNow status repo = do
logFile :: String -> IO String
logFile annexedFile = do
repo <- repoTop
- return $ repo ++ "/.git-annex/" ++
+ return $ (gitStateDir repo) ++
(gitRelative repo annexedFile) ++ ".log"
{- Returns a list of repositories that, according to the log, have
diff --git a/Utility.hs b/Utility.hs
index 05b06dea7..ab9ce04f3 100644
--- a/Utility.hs
+++ b/Utility.hs
@@ -19,6 +19,10 @@ openLocked file mode = do
lockType ReadMode = ReadLock
lockType _ = WriteLock
+{- A version of hgetContents that is not lazy. Ensures file is
+ - all read before it gets closed. -}
+hGetContentsStrict h = hGetContents h >>= \s -> length s `seq` return s
+
{- Returns the parent directory of a path. Parent of / is "" -}
parentDir :: String -> String
parentDir dir =