diff options
| -rw-r--r-- | internal/eventfilter.go | 13 | ||||
| -rw-r--r-- | internal/eventloop_filter_test.go | 3 |
2 files changed, 12 insertions, 4 deletions
diff --git a/internal/eventfilter.go b/internal/eventfilter.go index d49e612..43a8f51 100644 --- a/internal/eventfilter.go +++ b/internal/eventfilter.go @@ -1,6 +1,7 @@ package internal import ( + "bytes" "fmt" "strings" @@ -11,8 +12,10 @@ import ( type eventFilter struct { commFilterEnable bool commFilter string + commFilterBytes []byte pathFilterEnable bool pathFilter string + pathFilterBytes []byte } func newEventFilter(commFilter, pathFilter string) (*eventFilter, error) { @@ -24,6 +27,7 @@ func newEventFilter(commFilter, pathFilter string) (*eventFilter, error) { } ef.commFilterEnable = true ef.commFilter = commFilter + ef.commFilterBytes = []byte(commFilter) } if pathFilter != "" { @@ -32,6 +36,7 @@ func newEventFilter(commFilter, pathFilter string) (*eventFilter, error) { } ef.pathFilterEnable = true ef.pathFilter = pathFilter + ef.pathFilterBytes = []byte(pathFilter) } return &ef, nil @@ -48,11 +53,11 @@ func (ef *eventFilter) eventPair(ev *event.Pair) bool { } func (ef *eventFilter) openEvent(ev *types.OpenEvent) (*types.OpenEvent, bool) { - if ef.commFilterEnable && !strings.Contains(string(ev.Comm[:]), ef.commFilter) { + if ef.commFilterEnable && !bytes.Contains(ev.Comm[:], ef.commFilterBytes) { return ev, false } - if ef.pathFilterEnable && !strings.Contains(string(ev.Filename[:]), ef.pathFilter) { + if ef.pathFilterEnable && !bytes.Contains(ev.Filename[:], ef.pathFilterBytes) { return ev, false } return ev, true @@ -60,14 +65,14 @@ func (ef *eventFilter) openEvent(ev *types.OpenEvent) (*types.OpenEvent, bool) { func (ef *eventFilter) pathEvent(ev *types.PathEvent) (*types.PathEvent, bool) { if ef.pathFilterEnable { - return ev, strings.Contains(string(ev.Pathname[:]), ef.pathFilter) + return ev, bytes.Contains(ev.Pathname[:], ef.pathFilterBytes) } return ev, true } func (ef *eventFilter) nameEvent(ev *types.NameEvent) (*types.NameEvent, bool) { if ef.pathFilterEnable { - return ev, strings.Contains(string(ev.Oldname[:]), ef.pathFilter) || strings.Contains(string(ev.Newname[:]), ef.pathFilter) + return ev, bytes.Contains(ev.Oldname[:], ef.pathFilterBytes) || bytes.Contains(ev.Newname[:], ef.pathFilterBytes) } return ev, true } diff --git a/internal/eventloop_filter_test.go b/internal/eventloop_filter_test.go index e9fa91b..6418adf 100644 --- a/internal/eventloop_filter_test.go +++ b/internal/eventloop_filter_test.go @@ -475,6 +475,7 @@ func TestCommFilterToggle(t *testing.T) { filter: &eventFilter{ commFilterEnable: true, commFilter: "test", + commFilterBytes: []byte("test"), }, enterEvs: make(map[uint32]*event.Pair), files: make(map[int32]file.File), @@ -507,8 +508,10 @@ func newEventLoopWithFilter(commFilter, pathFilter string) *eventLoop { filter: &eventFilter{ commFilterEnable: commFilter != "", commFilter: commFilter, + commFilterBytes: []byte(commFilter), pathFilterEnable: pathFilter != "", pathFilter: pathFilter, + pathFilterBytes: []byte(pathFilter), }, enterEvs: make(map[uint32]*event.Pair), files: make(map[int32]file.File), |
