diff options
| -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 {  | 
