Skip to content

Commit fba55e4

Browse files
committed
Include generic xattr syncmeta application
1 parent 406ff8b commit fba55e4

File tree

4 files changed

+42
-4
lines changed

4 files changed

+42
-4
lines changed

common/hash_data_other.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
//go:build !windows
2-
// +build !windows
1+
//go:build !windows && !linux && !darwin && !freebsd && !netbsd && !solaris
32

43
package common
54

common/hash_data_unix.go

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//go:build linux || darwin || freebsd || netbsd || solaris
2+
3+
// additional *NIX based OSes included since it uses a generic xattr implementation.
4+
5+
package common
6+
7+
import (
8+
"encoding/json"
9+
"github.com/pkg/xattr"
10+
)
11+
12+
var AzCopySyncMetaXAttr = "azcopy.syncmeta"
13+
14+
func TryGetHashData(fullpath string) (SyncHashData, error) {
15+
// LGet because we want to target the file we actually specify, not what's on the other end.
16+
buf, err := xattr.LGet(fullpath, AzCopySyncMetaXAttr)
17+
if err != nil {
18+
return SyncHashData{}, err
19+
}
20+
21+
var out SyncHashData
22+
err = json.Unmarshal(buf, &out)
23+
24+
return out, err
25+
}
26+
27+
func PutHashData(fullpath string, data SyncHashData) error {
28+
buf, err := json.Marshal(data)
29+
if err != nil {
30+
return err
31+
}
32+
33+
// LSet because we want to target the file we actually specify, not what's on the other end.
34+
return xattr.LSet(fullpath, AzCopySyncMetaXAttr, buf)
35+
}

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ require (
1414
github.com/mattn/go-ieproxy v0.0.3
1515
github.com/minio/minio-go v6.0.14+incompatible
1616
github.com/pkg/errors v0.9.1
17-
github.com/pkg/xattr v0.4.6
17+
github.com/pkg/xattr v0.4.9
1818
github.com/rogpeppe/go-internal v1.8.1 // indirect
1919
github.com/spf13/cobra v1.4.0
2020
github.com/wastore/keychain v0.0.0-20180920053336-f2c902a3d807
2121
github.com/wastore/keyctl v0.3.1
2222
golang.org/x/crypto v0.0.0-20220314234724-5d542ad81a58
2323
golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a
2424
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
25-
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5
25+
golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f
2626
google.golang.org/api v0.72.0
2727
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
2828
)

go.sum

+4
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
240240
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
241241
github.com/pkg/xattr v0.4.6 h1:0vqthLIMxQKA9VscyMcxjvAUGvyfzlk009vwLE8OZJg=
242242
github.com/pkg/xattr v0.4.6/go.mod h1:sBD3RAqlr8Q+RC3FutZcikpT8nyDrIEEBw2J744gVWs=
243+
github.com/pkg/xattr v0.4.9 h1:5883YPCtkSd8LFbs13nXplj9g9tlrwoJRjgpgMu1/fE=
244+
github.com/pkg/xattr v0.4.9/go.mod h1:di8WF84zAKk8jzR1UBTEWh9AUlIZZ7M/JNt8e9B6ktU=
243245
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
244246
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
245247
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -460,6 +462,8 @@ golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBc
460462
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
461463
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 h1:y/woIyUBFbpQGKS0u1aHF/40WUDnek3fPOyD08H5Vng=
462464
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
465+
golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f h1:8w7RhxzTVgUzw/AH/9mUV5q0vMgy40SQRursCcfmkCw=
466+
golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
463467
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
464468
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
465469
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

0 commit comments

Comments
 (0)