⬆️ Update dependencies

This commit is contained in:
2026-11-01 15:12:52 +01:00
parent fd0d7ddee6
commit 312884dd59
501 changed files with 98424 additions and 35494 deletions
+79 -39
View File
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build freebsd netbsd
//go:build freebsd || netbsd
package unix
@@ -35,9 +35,14 @@ func xattrnamespace(fullattr string) (ns int, attr string, err error) {
func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {
if len(dest) > idx {
return unsafe.Pointer(&dest[idx])
} else {
return unsafe.Pointer(_zero)
}
if dest != nil {
// extattr_get_file and extattr_list_file treat NULL differently from
// a non-NULL pointer of length zero. Preserve the property of nilness,
// even if we can't use dest directly.
return unsafe.Pointer(&_zero)
}
return nil
}
// FreeBSD and NetBSD implement their own syscalls to handle extended attributes
@@ -51,7 +56,7 @@ func Getxattr(file string, attr string, dest []byte) (sz int, err error) {
return -1, err
}
return ExtattrGetFile(file, nsid, a, uintptr(d), destsize)
return extattrGetFile(file, nsid, a, d, destsize)
}
func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
@@ -63,7 +68,7 @@ func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {
return -1, err
}
return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)
return extattrGetFd(fd, nsid, a, d, destsize)
}
func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
@@ -75,7 +80,7 @@ func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {
return -1, err
}
return ExtattrGetLink(link, nsid, a, uintptr(d), destsize)
return extattrGetLink(link, nsid, a, d, destsize)
}
// flags are unused on FreeBSD
@@ -92,7 +97,7 @@ func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {
return
}
_, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)
_, err = extattrSetFd(fd, nsid, a, d, datasiz)
return
}
@@ -108,7 +113,7 @@ func Setxattr(file string, attr string, data []byte, flags int) (err error) {
return
}
_, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)
_, err = extattrSetFile(file, nsid, a, d, datasiz)
return
}
@@ -124,7 +129,7 @@ func Lsetxattr(link string, attr string, data []byte, flags int) (err error) {
return
}
_, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)
_, err = extattrSetLink(link, nsid, a, d, datasiz)
return
}
@@ -159,13 +164,12 @@ func Lremovexattr(link string, attr string) (err error) {
}
func Listxattr(file string, dest []byte) (sz int, err error) {
d := initxattrdest(dest, 0)
destsiz := len(dest)
// FreeBSD won't allow you to list xattrs from multiple namespaces
s := 0
s, pos := 0, 0
for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)
stmp, e := ListxattrNS(file, nsid, dest[pos:])
/* Errors accessing system attrs are ignored so that
* we can implement the Linux-like behavior of omitting errors that
@@ -174,66 +178,102 @@ func Listxattr(file string, dest []byte) (sz int, err error) {
* Linux will still error if we ask for user attributes on a file that
* we don't have read permissions on, so don't ignore those errors
*/
if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
continue
} else if e != nil {
if e != nil {
if e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
continue
}
return s, e
}
s += stmp
destsiz -= s
if destsiz < 0 {
destsiz = 0
pos = s
if pos > destsiz {
pos = destsiz
}
d = initxattrdest(dest, s)
}
return s, nil
}
func ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) {
d := initxattrdest(dest, 0)
destsiz := len(dest)
s, e := extattrListFile(file, nsid, d, destsiz)
if e != nil {
return 0, e
}
return s, nil
}
func Flistxattr(fd int, dest []byte) (sz int, err error) {
d := initxattrdest(dest, 0)
destsiz := len(dest)
s := 0
s, pos := 0, 0
for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)
if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
continue
} else if e != nil {
stmp, e := FlistxattrNS(fd, nsid, dest[pos:])
if e != nil {
if e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
continue
}
return s, e
}
s += stmp
destsiz -= s
if destsiz < 0 {
destsiz = 0
pos = s
if pos > destsiz {
pos = destsiz
}
d = initxattrdest(dest, s)
}
return s, nil
}
func FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) {
d := initxattrdest(dest, 0)
destsiz := len(dest)
s, e := extattrListFd(fd, nsid, d, destsiz)
if e != nil {
return 0, e
}
return s, nil
}
func Llistxattr(link string, dest []byte) (sz int, err error) {
d := initxattrdest(dest, 0)
destsiz := len(dest)
s := 0
s, pos := 0, 0
for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {
stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)
if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
continue
} else if e != nil {
stmp, e := LlistxattrNS(link, nsid, dest[pos:])
if e != nil {
if e == EPERM && nsid != EXTATTR_NAMESPACE_USER {
continue
}
return s, e
}
s += stmp
destsiz -= s
if destsiz < 0 {
destsiz = 0
pos = s
if pos > destsiz {
pos = destsiz
}
d = initxattrdest(dest, s)
}
return s, nil
}
func LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) {
d := initxattrdest(dest, 0)
destsiz := len(dest)
s, e := extattrListLink(link, nsid, d, destsiz)
if e != nil {
return 0, e
}
return s, nil