mirror of
https://github.com/octoleo/syncthing.git
synced 2024-12-22 10:58:57 +00:00
parent
1b32e9f858
commit
6aa04118a6
@ -2120,7 +2120,7 @@ func (f *sendReceiveFolder) checkToBeDeleted(file, cur protocol.FileInfo, hasCur
|
||||
func (f *sendReceiveFolder) setPlatformData(file *protocol.FileInfo, name string) error {
|
||||
if f.SyncXattrs {
|
||||
// Set extended attributes.
|
||||
if err := f.mtimefs.SetXattr(file.Name, file.Platform.Xattrs(), f.XattrFilter); errors.Is(err, fs.ErrXattrsNotSupported) {
|
||||
if err := f.mtimefs.SetXattr(name, file.Platform.Xattrs(), f.XattrFilter); errors.Is(err, fs.ErrXattrsNotSupported) {
|
||||
l.Debugf("Cannot set xattrs on %q: %v", file.Name, err)
|
||||
} else if err != nil {
|
||||
return err
|
||||
|
@ -14,6 +14,8 @@ import (
|
||||
|
||||
"github.com/syncthing/syncthing/lib/build"
|
||||
"github.com/syncthing/syncthing/lib/config"
|
||||
"github.com/syncthing/syncthing/lib/fs"
|
||||
"github.com/syncthing/syncthing/lib/protocol"
|
||||
)
|
||||
|
||||
type unifySubsCase struct {
|
||||
@ -149,3 +151,43 @@ func BenchmarkUnifySubs(b *testing.B) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetPlatformData(t *testing.T) {
|
||||
// Checks that setPlatformData runs without error when applied to a temp
|
||||
// file, named differently than the given FileInfo.
|
||||
|
||||
dir := t.TempDir()
|
||||
fs := fs.NewFilesystem(fs.FilesystemTypeBasic, dir)
|
||||
if fd, err := fs.Create("file.tmp"); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
fd.Close()
|
||||
}
|
||||
|
||||
xattr := []protocol.Xattr{{Name: "user.foo", Value: []byte("bar")}}
|
||||
fi := &protocol.FileInfo{
|
||||
Name: "should be ignored",
|
||||
Permissions: 0400,
|
||||
ModifiedS: 1234567890,
|
||||
Platform: protocol.PlatformData{
|
||||
Linux: &protocol.XattrData{Xattrs: xattr},
|
||||
Darwin: &protocol.XattrData{Xattrs: xattr},
|
||||
FreeBSD: &protocol.XattrData{Xattrs: xattr},
|
||||
NetBSD: &protocol.XattrData{Xattrs: xattr},
|
||||
},
|
||||
}
|
||||
|
||||
// Minimum required to support setPlatformData
|
||||
sr := &sendReceiveFolder{
|
||||
folder: folder{
|
||||
FolderConfiguration: config.FolderConfiguration{
|
||||
SyncXattrs: true,
|
||||
},
|
||||
mtimefs: fs,
|
||||
},
|
||||
}
|
||||
|
||||
if err := sr.setPlatformData(fi, "file.tmp"); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user