diff options
author | Joey Hess <joey@kitenet.net> | 2010-10-10 11:08:40 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2010-10-10 11:08:40 -0400 |
commit | f98fa53d7f6d851b8a1ae804c02780769c98e07c (patch) | |
tree | d82ad5c4bd8037c8ae548c21946930d21cadf528 /LocationLog.hs | |
parent | 11ad93f023fa5e867b5b7bd47f45393caceb401a (diff) |
fixed close after locking
Diffstat (limited to 'LocationLog.hs')
-rw-r--r-- | LocationLog.hs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/LocationLog.hs b/LocationLog.hs index c921a2005..1523901df 100644 --- a/LocationLog.hs +++ b/LocationLog.hs @@ -12,6 +12,11 @@ - - A line of the log will look like: "date N reponame" - Where N=1 when the repo has the file, and 0 otherwise. + - + - TOOD: compact logs, by storing only current presence infomation when + - writing them. + - + - TODO: use ByteString -} module LocationLog where @@ -67,9 +72,8 @@ readLog file = do exists <- doesFileExist file if exists then do - h <- openLocked file ReadMode - s <- hGetContentsStrict h - hClose h + s <- withFileLocked file ReadMode $ \h -> + hGetContentsStrict h -- filter out any unparsable lines return $ filter (\l -> (status l) /= Undefined ) $ map read $ lines s @@ -80,9 +84,8 @@ readLog file = do writeLog :: String -> LogLine -> IO () writeLog file line = do createDirectoryIfMissing True (parentDir file) - h <- openLocked file AppendMode - hPutStrLn h $ show line - hClose h + withFileLocked file AppendMode $ \h -> + hPutStrLn h $ show line {- Generates a new LogLine with the current date. -} logNow :: LogStatus -> String -> IO LogLine |