aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hswg/main.go16
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 {