https://github.com/pkg/xattr
Extended attribute support for Go (linux + darwin + freebsd)
https://github.com/pkg/xattr
extended-attributes golang golang-library linux-darwin-freebsd system xattr
Last synced: 5 months ago
JSON representation
Extended attribute support for Go (linux + darwin + freebsd)
- Host: GitHub
- URL: https://github.com/pkg/xattr
- Owner: pkg
- License: bsd-2-clause
- Created: 2016-10-29T23:45:56.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-07-21T21:53:22.000Z (about 1 year ago)
- Last Synced: 2025-04-15T05:32:08.719Z (6 months ago)
- Topics: extended-attributes, golang, golang-library, linux-darwin-freebsd, system, xattr
- Language: Go
- Size: 95.7 KB
- Stars: 180
- Watchers: 10
- Forks: 30
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](http://godoc.org/github.com/pkg/xattr)
[](https://goreportcard.com/report/github.com/pkg/xattr)
[](https://github.com/pkg/xattr/actions?query=workflow%3Abuild)
[](https://codecov.io/gh/pkg/xattr)xattr
=====
Extended attribute support for Go (linux + darwin + freebsd + netbsd + solaris)."Extended attributes are name:value pairs associated permanently with files and directories, similar to the environment strings associated with a process. An attribute may be defined or undefined. If it is defined, its value may be empty or non-empty." [See more...](https://en.wikipedia.org/wiki/Extended_file_attributes)
`SetWithFlags` allows to additionally pass system flags to be forwarded to the underlying calls. FreeBSD and NetBSD do not support this and the parameter will be ignored.
The `L` variants of all functions (`LGet/LSet/...`) are identical to `Get/Set/...` except that they
do not reference a symlink that appears at the end of a path. See
[GoDoc](http://godoc.org/github.com/pkg/xattr) for details.### Example
```go
const path = "/tmp/myfile"
const prefix = "user."if err := xattr.Set(path, prefix+"test", []byte("test-attr-value")); err != nil {
log.Fatal(err)
}var list []string
if list, err = xattr.List(path); err != nil {
log.Fatal(err)
}var data []byte
if data, err = xattr.Get(path, prefix+"test"); err != nil {
log.Fatal(err)
}if err = xattr.Remove(path, prefix+"test"); err != nil {
log.Fatal(err)
}// One can also specify the flags parameter to be passed to the OS.
if err := xattr.SetWithFlags(path, prefix+"test", []byte("test-attr-value"), xattr.XATTR_CREATE); err != nil {
log.Fatal(err)
}
```