strictness and handle closing
This commit is contained in:
		
					parent
					
						
							
								c67521741a
							
						
					
				
			
			
				commit
				
					
						60c672e444
					
				
			
		
					 2 changed files with 7 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 =
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue