diff options
Diffstat (limited to 'hswg/main.go')
-rw-r--r-- | hswg/main.go | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/hswg/main.go b/hswg/main.go index 9eaca84..6cec971 100644 --- a/hswg/main.go +++ b/hswg/main.go @@ -334,6 +334,15 @@ func dispatchEvents(dirname string, r io.Reader, ch chan<- *watchEvent) error { return err } + base := make([]byte, e.Len) + if e.Len != 0 { + if n, err := r.Read(base); err != nil { + return err + } else if n < int(e.Len) { + return fmt.Errorf("short read") + } + } + switch { case e.Mask&syscall.IN_IGNORED != 0: return fmt.Errorf("watch removed by kernel") @@ -345,13 +354,6 @@ func dispatchEvents(dirname string, r io.Reader, ch chan<- *watchEvent) error { continue } - base := make([]byte, e.Len) - if n, err := r.Read(base); err != nil { - return err - } else if n < int(e.Len) { - return fmt.Errorf("short read") - } - basename, interesting := string(base[:bytes.IndexByte(base, 0)]), false for _, glob := range globs { if matches, _ := filepath.Match(glob, basename); matches { |