android3p import of golang-pkg-xattr Third-Party Import of: https://github.com/pkg/xattr Request Document: go/android3p For CL Reviewers: go/android3p#reviewing-a-cl For Build Team: go/ab-third-party-imports Bug: http://b/333928018 Original import of the code can be found at: https://googleplex-android.googlesource.com/platform/external/golang-pkg-xattr/+/refs/heads/third-party-review. Security Questionnaire: http://b/333928018#comment1 Change-Id: I5c6472d6f31dbe112482ccef1c5ca147165d1785 
3 files changed
tree: 1d95e8f9f08ad1483121682723aab38da093091e
  1. .github/
  2. .gitignore
  3. go.mod
  4. go.sum
  5. LICENSE
  6. METADATA
  7. MODULE_LICENSE_BSD
  8. OWNERS
  9. README.md
  10. xattr.go
  11. xattr_bsd.go
  12. xattr_darwin.go
  13. xattr_flags_test.go
  14. xattr_linux.go
  15. xattr_linux_test.go
  16. xattr_solaris.go
  17. xattr_test.go
  18. xattr_unsupported.go
README.md

GoDoc Go Report Card Build Status Codecov

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...

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 for details.

Example

 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) }