From a365ae51c47fa2bad19a0500c277b22f799bf85e Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Sat, 23 Sep 2017 13:47:51 +0000 Subject: [PATCH] lib/model: Hide temporary files on Windows while they are in use (fixes #4382) GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4394 --- lib/model/sharedpullerstate.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/model/sharedpullerstate.go b/lib/model/sharedpullerstate.go index 3ecf71ab8..e8165e9ea 100644 --- a/lib/model/sharedpullerstate.go +++ b/lib/model/sharedpullerstate.go @@ -164,6 +164,9 @@ func (s *sharedPullerState) tempFile() (io.WriterAt, error) { return nil, err } + // Hide the temporary file + s.fs.Hide(s.tempName) + // Don't truncate symlink files, as that will mean that the path will // contain a bunch of nulls. if s.sparse && !s.file.IsSymlink() { @@ -307,6 +310,12 @@ func (s *sharedPullerState) finalClose() (bool, error) { s.closed = true + // Unhide the temporary file when we close it, as it's likely to + // immediately be renamed to the final name. If this is a failed temp + // file we will also unhide it, but I'm fine with that as we're now + // leaving it around for potentially quite a while. + s.fs.Unhide(s.tempName) + return true, s.err }