aboutsummaryrefslogtreecommitdiff
path: root/Remote/Directory.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Remote/Directory.hs')
-rw-r--r--Remote/Directory.hs4
1 files changed, 3 insertions, 1 deletions
diff --git a/Remote/Directory.hs b/Remote/Directory.hs
index 8ca2a2875..23265dabc 100644
--- a/Remote/Directory.hs
+++ b/Remote/Directory.hs
@@ -98,11 +98,13 @@ storeEncrypted d (cipher, enck) k = do
storeHelper :: FilePath -> Key -> (FilePath -> IO Bool) -> IO Bool
storeHelper d key a = do
let dest = Prelude.head $ locations d key
+ let tmpdest = dest ++ ".tmp"
let dir = parentDir dest
createDirectoryIfMissing True dir
allowWrite dir
- ok <- a dest
+ ok <- a tmpdest
when ok $ do
+ renameFile tmpdest dest
preventWrite dest
preventWrite dir
return ok