summaryrefslogtreecommitdiff
path: root/Remote/Directory.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Remote/Directory.hs')
-rw-r--r--Remote/Directory.hs17
1 files changed, 10 insertions, 7 deletions
diff --git a/Remote/Directory.hs b/Remote/Directory.hs
index 922742099..3070a530b 100644
--- a/Remote/Directory.hs
+++ b/Remote/Directory.hs
@@ -183,12 +183,14 @@ storeHelper d chunksize key storer = check <&&> go
void $ tryIO $ removeDirectoryRecursive dest -- or not exist
createDirectoryIfMissing True (parentDir dest)
renameDirectory tmp dest
- mapM_ preventWrite =<< dirContents dest
- preventWrite dest
+ -- may fail on some filesystems
+ void $ tryIO $ do
+ mapM_ preventWrite =<< dirContents dest
+ preventWrite dest
recorder f s = do
void $ tryIO $ allowWrite f
writeFile f s
- preventWrite f
+ void $ tryIO $ preventWrite f
retrieve :: FilePath -> ChunkSize -> Key -> AssociatedFile -> FilePath -> Annex Bool
retrieve d chunksize k _ f = metered Nothing k $ \meterupdate ->
@@ -215,10 +217,11 @@ retrieveCheap d _ k f = liftIO $ withStoredFiles Nothing d k go
go _files = return False
remove :: FilePath -> Key -> Annex Bool
-remove d k = liftIO $ catchBoolIO $ do
- allowWrite dir
- removeDirectoryRecursive dir
- return True
+remove d k = liftIO $ do
+ void $ tryIO $ allowWrite dir
+ catchBoolIO $ do
+ removeDirectoryRecursive dir
+ return True
where
dir = storeDir d k