xattr_darwin.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package sysx
  2. // These functions will be generated by generate.sh
  3. // $ GOOS=darwin GOARCH=386 ./generate.sh xattr
  4. // $ GOOS=darwin GOARCH=amd64 ./generate.sh xattr
  5. //sys getxattr(path string, attr string, dest []byte, pos int, options int) (sz int, err error)
  6. //sys setxattr(path string, attr string, data []byte, flags int) (err error)
  7. //sys removexattr(path string, attr string, options int) (err error)
  8. //sys listxattr(path string, dest []byte, options int) (sz int, err error)
  9. const (
  10. xattrNoFollow = 0x01
  11. )
  12. func listxattrFollow(path string, dest []byte) (sz int, err error) {
  13. return listxattr(path, dest, 0)
  14. }
  15. // Listxattr calls syscall getxattr
  16. func Listxattr(path string) ([]string, error) {
  17. return listxattrAll(path, listxattrFollow)
  18. }
  19. // Removexattr calls syscall getxattr
  20. func Removexattr(path string, attr string) (err error) {
  21. return removexattr(path, attr, 0)
  22. }
  23. // Setxattr calls syscall setxattr
  24. func Setxattr(path string, attr string, data []byte, flags int) (err error) {
  25. return setxattr(path, attr, data, flags)
  26. }
  27. func getxattrFollow(path, attr string, dest []byte) (sz int, err error) {
  28. return getxattr(path, attr, dest, 0, 0)
  29. }
  30. // Getxattr calls syscall getxattr
  31. func Getxattr(path, attr string) ([]byte, error) {
  32. return getxattrAll(path, attr, getxattrFollow)
  33. }
  34. func listxattrNoFollow(path string, dest []byte) (sz int, err error) {
  35. return listxattr(path, dest, xattrNoFollow)
  36. }
  37. // LListxattr calls syscall listxattr with XATTR_NOFOLLOW
  38. func LListxattr(path string) ([]string, error) {
  39. return listxattrAll(path, listxattrNoFollow)
  40. }
  41. // LRemovexattr calls syscall removexattr with XATTR_NOFOLLOW
  42. func LRemovexattr(path string, attr string) (err error) {
  43. return removexattr(path, attr, xattrNoFollow)
  44. }
  45. // Setxattr calls syscall setxattr with XATTR_NOFOLLOW
  46. func LSetxattr(path string, attr string, data []byte, flags int) (err error) {
  47. return setxattr(path, attr, data, flags|xattrNoFollow)
  48. }
  49. func getxattrNoFollow(path, attr string, dest []byte) (sz int, err error) {
  50. return getxattr(path, attr, dest, 0, xattrNoFollow)
  51. }
  52. // LGetxattr calls syscall getxattr with XATTR_NOFOLLOW
  53. func LGetxattr(path, attr string) ([]byte, error) {
  54. return getxattrAll(path, attr, getxattrNoFollow)
  55. }