diff --git a/go.mod b/go.mod index a03c2bf..b30772a 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,6 @@ require ( github.com/gilbertchen/gopass v0.0.0-20170109162249-bf9dde6d0d2c github.com/gilbertchen/highwayhash v0.0.0-20221109044721-eeab1f4799d8 github.com/gilbertchen/keyring v0.0.0-20221004152639-1661cbebc508 - github.com/gilbertchen/xattr v0.0.0-20160926155429-68e7a6806b01 github.com/hirochachacha/go-smb2 v1.1.0 github.com/klauspost/compress v1.16.3 github.com/klauspost/reedsolomon v1.9.9 diff --git a/go.sum b/go.sum index 6ec8e48..acc7b69 100644 --- a/go.sum +++ b/go.sum @@ -47,8 +47,6 @@ github.com/gilbertchen/highwayhash v0.0.0-20221109044721-eeab1f4799d8 h1:ijgl4Y+ github.com/gilbertchen/highwayhash v0.0.0-20221109044721-eeab1f4799d8/go.mod h1:0lQcVva56+L1PuUFXLOsJ6arJQaU0baIH8q+IegeBhg= github.com/gilbertchen/keyring v0.0.0-20221004152639-1661cbebc508 h1:SqTyk5KkNXp7zTdTttIZSDcTrL5uau4K/2OpKvgBZVI= github.com/gilbertchen/keyring v0.0.0-20221004152639-1661cbebc508/go.mod h1:w/pisxUZezf2XzU9Ewjphcf6q1mZtOzKPHhJiuc8cag= -github.com/gilbertchen/xattr v0.0.0-20160926155429-68e7a6806b01 h1:LqwS9qL6SrDkp0g0iwUkETrDdtB9gTKaIbSn9imUq5o= -github.com/gilbertchen/xattr v0.0.0-20160926155429-68e7a6806b01/go.mod h1:TMlibuxKfkdtHyltooAw7+DHqRpaXs9nxaffk00Sh1Q= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/goamz/goamz v0.0.0-20180131231218-8b901b531db8 h1:G1U0vew/vA/1/hBmf1XNeyIzJJbPFVv+kb+HPl6rj6c= diff --git a/src/duplicacy_entry_test.go b/src/duplicacy_entry_test.go index 670a16b..0326734 100644 --- a/src/duplicacy_entry_test.go +++ b/src/duplicacy_entry_test.go @@ -5,6 +5,8 @@ package duplicacy import ( + "bytes" + "encoding/json" "io/ioutil" "math/rand" "os" @@ -13,11 +15,10 @@ import ( "sort" "strings" "testing" - "bytes" - "encoding/json" - "github.com/gilbertchen/xattr" - "github.com/vmihailenco/msgpack" + "github.com/pkg/xattr" + + "github.com/vmihailenco/msgpack" ) func TestEntrySort(t *testing.T) { @@ -175,7 +176,7 @@ func TestEntryOrder(t *testing.T) { directories = append(directories, CreateEntry("", 0, 0, 0)) entries := make([]*Entry, 0, 4) - entryChannel := make(chan *Entry, 1024) + entryChannel := make(chan *Entry, 1024) entries = append(entries, CreateEntry("", 0, 0, 0)) for len(directories) > 0 { @@ -233,8 +234,16 @@ func TestEntryOrder(t *testing.T) { // TestEntryExcludeByAttribute tests the excludeByAttribute parameter to the ListEntries function func TestEntryExcludeByAttribute(t *testing.T) { - if !(runtime.GOOS == "darwin" || runtime.GOOS == "linux") { - t.Skip("skipping test not darwin or linux") + var excludeAttrName string + var excludeAttrValue []byte + + if runtime.GOOS == "darwin" { + excludeAttrName = "com.apple.metadata:com_apple_backup_excludeItem" + excludeAttrValue = []byte("com.apple.backupd") + } else if runtime.GOOS == "linux" || runtime.GOOS == "freebsd" || runtime.GOOS == "netbsd" || runtime.GOOS == "solaris" { + excludeAttrName = "user.duplicacy_exclude" + } else { + t.Skip("skipping test, not darwin, linux, freebsd, netbsd, or solaris") } testDir := filepath.Join(os.TempDir(), "duplicacy_test") @@ -273,7 +282,7 @@ func TestEntryExcludeByAttribute(t *testing.T) { for _, file := range DATA { fullPath := filepath.Join(testDir, file) if strings.Contains(file, "exclude") { - xattr.Setxattr(fullPath, "com.apple.metadata:com_apple_backup_excludeItem", []byte("com.apple.backupd")) + xattr.Set(fullPath, excludeAttrName, excludeAttrValue) } } @@ -372,4 +381,4 @@ func TestEntryEncoding(t *testing.T) { t.Error("Decoded entry is different than the original one") } -} \ No newline at end of file +} diff --git a/src/duplicacy_utils_darwin.go b/src/duplicacy_utils_darwin.go index 38e2a51..6c69d55 100644 --- a/src/duplicacy_utils_darwin.go +++ b/src/duplicacy_utils_darwin.go @@ -8,7 +8,7 @@ import ( "strings" ) -func excludedByAttribute(attirbutes map[string][]byte) bool { - value, ok := attirbutes["com.apple.metadata:com_apple_backup_excludeItem"] +func excludedByAttribute(attributes map[string][]byte) bool { + value, ok := attributes["com.apple.metadata:com_apple_backup_excludeItem"] return ok && strings.Contains(string(value), "com.apple.backupd") } diff --git a/src/duplicacy_utils_freebsd.go b/src/duplicacy_utils_freebsd.go deleted file mode 100644 index a129284..0000000 --- a/src/duplicacy_utils_freebsd.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) Acrosync LLC. All rights reserved. -// Free for personal use and commercial trial -// Commercial use requires per-user licenses available from https://duplicacy.com - -package duplicacy - -import ( -) - -func excludedByAttribute(attirbutes map[string][]byte) bool { - _, ok := attirbutes["duplicacy_exclude"] - return ok -} \ No newline at end of file diff --git a/src/duplicacy_utils_linux.go b/src/duplicacy_utils_posix.go similarity index 60% rename from src/duplicacy_utils_linux.go rename to src/duplicacy_utils_posix.go index 223f32c..20bf9fe 100644 --- a/src/duplicacy_utils_linux.go +++ b/src/duplicacy_utils_posix.go @@ -2,12 +2,14 @@ // Free for personal use and commercial trial // Commercial use requires per-user licenses available from https://duplicacy.com +// +build freebsd netbsd linux solaris + package duplicacy import ( ) -func excludedByAttribute(attirbutes map[string][]byte) bool { - _, ok := attirbutes["duplicacy_exclude"] +func excludedByAttribute(attributes map[string][]byte) bool { + _, ok := attributes["user.duplicacy_exclude"] return ok } diff --git a/src/duplicacy_utils_windows.go b/src/duplicacy_utils_windows.go index 3a01682..5a4d8d1 100644 --- a/src/duplicacy_utils_windows.go +++ b/src/duplicacy_utils_windows.go @@ -132,6 +132,6 @@ func SplitDir(fullPath string) (dir string, file string) { return fullPath[:i+1], fullPath[i+1:] } -func excludedByAttribute(attirbutes map[string][]byte) bool { +func excludedByAttribute(attributes map[string][]byte) bool { return false }