From d30575274909d0b8af6999e7635b9020b8c3e69e Mon Sep 17 00:00:00 2001 From: Audrius Butkevicius Date: Wed, 29 Oct 2014 11:19:48 +0000 Subject: [PATCH] Cleanup temporary files during directory removal (fixes #919) --- internal/model/puller.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/internal/model/puller.go b/internal/model/puller.go index 8b4affe1e..d8251c4b2 100644 --- a/internal/model/puller.go +++ b/internal/model/puller.go @@ -412,6 +412,16 @@ func (p *Puller) handleDir(file protocol.FileInfo) { // deleteDir attempts to delete the given directory func (p *Puller) deleteDir(file protocol.FileInfo) { realName := filepath.Join(p.dir, file.Name) + // Delete any temporary files lying around in the directory + dir, _ := os.Open(realName) + if dir != nil { + files, _ := dir.Readdirnames(-1) + for _, file := range files { + if defTempNamer.IsTemporary(file) { + osutil.InWritableDir(os.Remove, filepath.Join(realName, file)) + } + } + } err := osutil.InWritableDir(os.Remove, realName) if err == nil || os.IsNotExist(err) { p.model.updateLocal(p.folder, file)