From 7c634a1f51c580b370b6f6b6e1aa5fdec5422ef5 Mon Sep 17 00:00:00 2001 From: Michael Mayer Date: Wed, 2 Nov 2022 18:02:18 +0100 Subject: [PATCH] Index: Ignore paths starting with _. and __ like "__MACOSX" #2844 Signed-off-by: Michael Mayer --- pkg/fs/name.go | 21 +++++++++++++++------ pkg/fs/name_test.go | 2 ++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/pkg/fs/name.go b/pkg/fs/name.go index 079946d8c..c0eb40045 100644 --- a/pkg/fs/name.go +++ b/pkg/fs/name.go @@ -56,18 +56,27 @@ func RelName(fileName, dir string) string { // FileNameHidden tests is a file name belongs to a hidden file. func FileNameHidden(name string) bool { - if name == "" { + if len(name) == 0 { return false } name = filepath.Base(name) - prefix := name[0:1] - - switch prefix { + // Hidden files and folders starting with "." or "@" should be ignored. + switch name[0:1] { case ".", "@": return true - default: - return strings.HasPrefix(name, "_.") } + + if len(name) == 1 { + return false + } + + // File paths starting with _. and __ like __MACOSX should be ignored. + switch name[0:2] { + case "_.", "__": + return true + } + + return false } diff --git a/pkg/fs/name_test.go b/pkg/fs/name_test.go index 5664aa8d2..1290231ab 100644 --- a/pkg/fs/name_test.go +++ b/pkg/fs/name_test.go @@ -85,6 +85,8 @@ func TestFileNameHidden(t *testing.T) { assert.False(t, FileNameHidden("_folder")) assert.True(t, FileNameHidden("/some/_.folder")) assert.True(t, FileNameHidden("_.folder")) + assert.True(t, FileNameHidden("/some/__MACOSX")) + assert.True(t, FileNameHidden("__MACOSX")) }) t.Run("At", func(t *testing.T) { assert.False(t, FileNameHidden("/some/path/ea@Dir"))