aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Annex/Content/Direct.hs3
-rw-r--r--Annex/Link.hs10
-rw-r--r--Command/Fsck.hs7
-rw-r--r--Logs/Transfer.hs13
-rw-r--r--Remote/Bup.hs5
-rw-r--r--Utility/FileMode.hs4
6 files changed, 14 insertions, 28 deletions
diff --git a/Annex/Content/Direct.hs b/Annex/Content/Direct.hs
index 35d2c9b8d..f897cca6a 100644
--- a/Annex/Content/Direct.hs
+++ b/Annex/Content/Direct.hs
@@ -52,8 +52,7 @@ associatedFiles key = do
associatedFilesRelative :: Key -> Annex [FilePath]
associatedFilesRelative key = do
mapping <- calcRepo $ gitAnnexMapping key
- liftIO $ catchDefaultIO [] $ do
- h <- openFile mapping ReadMode
+ liftIO $ catchDefaultIO [] $ withFile mapping ReadMode $ \h -> do
fileEncoding h
lines <$> hGetContents h
diff --git a/Annex/Link.hs b/Annex/Link.hs
index 30d8c2ae8..234e4cb2a 100644
--- a/Annex/Link.hs
+++ b/Annex/Link.hs
@@ -51,19 +51,15 @@ getAnnexLinkTarget file = ifM (coreSymlinks <$> Annex.getGitConfig)
| otherwise -> return Nothing
Nothing -> fallback
- probefilecontent f = do
- h <- openFile f ReadMode
+ probefilecontent f = withFile f ReadMode $ \h -> do
fileEncoding h
-- The first 8k is more than enough to read; link
-- files are small.
s <- take 8192 <$> hGetContents h
-- If we got the full 8k, the file is too large
if length s == 8192
- then do
- hClose h
- return ""
- else do
- hClose h
+ then return ""
+ else
-- If there are any NUL or newline
-- characters, or whitespace, we
-- certianly don't have a link to a
diff --git a/Command/Fsck.hs b/Command/Fsck.hs
index f6e4fe273..dfe1a9ab6 100644
--- a/Command/Fsck.hs
+++ b/Command/Fsck.hs
@@ -478,10 +478,9 @@ recordStartTime = do
createAnnexDirectory $ parentDir f
liftIO $ do
nukeFile f
- h <- openFile f WriteMode
- t <- modificationTime <$> getFileStatus f
- hPutStr h $ showTime $ realToFrac t
- hClose h
+ withFile f WriteMode $ \h -> do
+ t <- modificationTime <$> getFileStatus f
+ hPutStr h $ showTime $ realToFrac t
where
showTime :: POSIXTime -> String
showTime = show
diff --git a/Logs/Transfer.hs b/Logs/Transfer.hs
index fbfd0a427..e998a56b1 100644
--- a/Logs/Transfer.hs
+++ b/Logs/Transfer.hs
@@ -340,11 +340,8 @@ parseTransferFile file
bits = splitDirectories file
writeTransferInfoFile :: TransferInfo -> FilePath -> IO ()
-writeTransferInfoFile info tfile = do
- h <- openFile tfile WriteMode
- fileEncoding h
- hPutStr h $ writeTransferInfo info
- hClose h
+writeTransferInfoFile info tfile = writeFileAnyEncoding tfile $
+ writeTransferInfo info
{- File format is a header line containing the startedTime and any
- bytesComplete value. Followed by a newline and the associatedFile.
@@ -365,10 +362,8 @@ writeTransferInfo info = unlines
]
readTransferInfoFile :: Maybe PID -> FilePath -> IO (Maybe TransferInfo)
-readTransferInfoFile mpid tfile = catchDefaultIO Nothing $ do
- h <- openFile tfile ReadMode
- fileEncoding h
- hClose h `after` (readTransferInfo mpid <$> hGetContentsStrict h)
+readTransferInfoFile mpid tfile = catchDefaultIO Nothing $
+ readTransferInfo mpid <$> readFileStrictAnyEncoding tfile
readTransferInfo :: Maybe PID -> String -> Maybe TransferInfo
readTransferInfo mpid s = TransferInfo
diff --git a/Remote/Bup.hs b/Remote/Bup.hs
index 370cbc1c0..7395b7428 100644
--- a/Remote/Bup.hs
+++ b/Remote/Bup.hs
@@ -145,9 +145,8 @@ storeEncrypted r buprepo (cipher, enck) k _p =
retrieve :: BupRepo -> Key -> AssociatedFile -> FilePath -> MeterUpdate -> Annex Bool
retrieve buprepo k _f d _p = do
let params = bupParams "join" buprepo [Param $ bupRef k]
- liftIO $ catchBoolIO $ do
- tofile <- openFile d WriteMode
- pipeBup params Nothing (Just tofile)
+ liftIO $ catchBoolIO $ withFIle d WriteMode $
+ pipeBup params Nothing . Just
retrieveCheap :: BupRepo -> Key -> FilePath -> Annex Bool
retrieveCheap _ _ _ = return False
diff --git a/Utility/FileMode.hs b/Utility/FileMode.hs
index 46c6a31f5..b17cadc3b 100644
--- a/Utility/FileMode.hs
+++ b/Utility/FileMode.hs
@@ -133,10 +133,8 @@ setSticky f = modifyFileMode f $ addModes [stickyMode]
- as writeFile.
-}
writeFileProtected :: FilePath -> String -> IO ()
-writeFileProtected file content = do
- h <- openFile file WriteMode
+writeFileProtected file content = withFile file WriteMode $ \h -> do
void $ tryIO $
modifyFileMode file $
removeModes [groupReadMode, otherReadMode]
hPutStr h content
- hClose h