From 89ee1afdf50885b4fbfb931793b5030b5682e4f0 Mon Sep 17 00:00:00 2001 From: xuzixx Date: Sun, 5 Mar 2017 18:55:54 +0800 Subject: [PATCH] Issue 111: TestReSeekInotify failed if "case fsnotify.Chmod" logic before "case fsnotify.Rename" always `return changes.NotifyDeleted()` Test case pass: macOs 10.11.6 + go 1.6.2 Centos 6.4 + go 1.8 --- watch/inotify.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/watch/inotify.go b/watch/inotify.go index 4f6c031..0e5d491 100644 --- a/watch/inotify.go +++ b/watch/inotify.go @@ -96,15 +96,6 @@ func (fw *InotifyFileWatcher) ChangeEvents(t *tomb.Tomb, pos int64) (*FileChange } switch { - //With an open fd, unlink(fd) - inotify returns IN_ATTRIB (==fsnotify.Chmod) - case evt.Op&fsnotify.Chmod == fsnotify.Chmod: - if _, err := os.Stat(fw.Filename); err != nil { - if ! os.IsNotExist(err) { - return - } - } - fallthrough - case evt.Op&fsnotify.Remove == fsnotify.Remove: fallthrough @@ -113,6 +104,10 @@ func (fw *InotifyFileWatcher) ChangeEvents(t *tomb.Tomb, pos int64) (*FileChange changes.NotifyDeleted() return + //With an open fd, unlink(fd) - inotify returns IN_ATTRIB (==fsnotify.Chmod) + case evt.Op&fsnotify.Chmod == fsnotify.Chmod: + fallthrough + case evt.Op&fsnotify.Write == fsnotify.Write: fi, err := os.Stat(fw.Filename) if err != nil {