podman-build/vendor/github.com/hugelgupf/p9/fsimpl/xattr/xattr.go
2025-10-11 12:30:35 +09:00

40 lines
847 B
Go

//go:build unix && !openbsd && !solaris
package xattr
import (
"io/fs"
"strings"
"golang.org/x/sys/unix"
)
func List(p string) ([]string, error) {
sz, err := unix.Listxattr(p, nil)
if err != nil {
return nil, &fs.PathError{Op: "listxattr-get-size", Path: p, Err: err}
}
b := make([]byte, sz)
sz, err = unix.Listxattr(p, b)
if err != nil {
return nil, &fs.PathError{Op: "listxattr", Path: p, Err: err}
}
return strings.Split(strings.Trim(string(b[:sz]), "\000"), "\000"), nil
}
func Get(p string, attr string) ([]byte, error) {
sz, err := unix.Getxattr(p, attr, nil)
if err != nil {
return nil, &fs.PathError{Op: "getxattr-get-size", Path: p, Err: err}
}
b := make([]byte, sz)
sz, err = unix.Getxattr(p, attr, b)
if err != nil {
return nil, &fs.PathError{Op: "getxattr", Path: p, Err: err}
}
return b[:sz], nil
}