1package system // import "github.com/ory/dockertest/docker/pkg/system" 2 3import "golang.org/x/sys/unix" 4 5// Lgetxattr retrieves the value of the extended attribute identified by attr 6// and associated with the given path in the file system. 7// It will returns a nil slice and nil error if the xattr is not set. 8func Lgetxattr(path string, attr string) ([]byte, error) { 9 dest := make([]byte, 128) 10 sz, errno := unix.Lgetxattr(path, attr, dest) 11 if errno == unix.ENODATA { 12 return nil, nil 13 } 14 if errno == unix.ERANGE { 15 dest = make([]byte, sz) 16 sz, errno = unix.Lgetxattr(path, attr, dest) 17 } 18 if errno != nil { 19 return nil, errno 20 } 21 22 return dest[:sz], nil 23} 24 25// Lsetxattr sets the value of the extended attribute identified by attr 26// and associated with the given path in the file system. 27func Lsetxattr(path string, attr string, data []byte, flags int) error { 28 return unix.Lsetxattr(path, attr, data, flags) 29} 30