1
0
Fork 0
mirror of https://github.com/vbatts/go-mtree.git synced 2024-11-05 16:35:58 +00:00
go-mtree/xattr/xattr.go
Vincent Batts 2d3aea8623 xattr: simple wrapper for syscalls
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2016-03-24 16:35:09 -04:00

35 lines
863 B
Go

// +build linux
package xattr
import (
"strings"
"syscall"
)
// Get returns the extended attributes (xattr) on file `path`, for the given `name`.
func Get(path, name string) ([]byte, error) {
dest := make([]byte, 1024)
i, err := syscall.Getxattr(path, name, dest)
if err != nil {
return nil, err
}
return dest[:i], nil
}
// Set sets the extended attributes (xattr) on file `path`, for the given `name` and `value`
func Set(path, name string, value []byte) error {
return syscall.Setxattr(path, name, value, 0)
}
// List returns a list of all the extended attributes (xattr) for file `path`
func List(path string) ([]string, error) {
dest := make([]byte, 1024)
i, err := syscall.Listxattr(path, dest)
if err != nil {
return nil, err
}
return strings.Split(strings.TrimRight(string(dest[:i]), nilByte), nilByte), nil
}
const nilByte = "\x00"