From 903fc9d077a81d9224de4207d1672c0b1127cf42 Mon Sep 17 00:00:00 2001 From: Ankush Patel Date: Thu, 5 Feb 2026 14:42:40 +1300 Subject: Added basic support for FreeBSD. --- .../fusefrontend_reverse/node_xattr_freebsd.go | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 internal/fusefrontend_reverse/node_xattr_freebsd.go (limited to 'internal/fusefrontend_reverse/node_xattr_freebsd.go') diff --git a/internal/fusefrontend_reverse/node_xattr_freebsd.go b/internal/fusefrontend_reverse/node_xattr_freebsd.go new file mode 100644 index 0000000..0577521 --- /dev/null +++ b/internal/fusefrontend_reverse/node_xattr_freebsd.go @@ -0,0 +1,43 @@ +package fusefrontend_reverse + +import ( + "fmt" + + "golang.org/x/sys/unix" + + "github.com/hanwen/go-fuse/v2/fs" + + "github.com/rfjakob/gocryptfs/v2/internal/syscallcompat" +) + +const noSuchAttributeError = unix.ENOATTR + +func (n *Node) getXAttr(cAttr string) (out []byte, errno unix.Errno) { + d, errno := n.prepareAtSyscall("") + if errno != 0 { + return + } + defer unix.Close(d.dirfd) + + procPath := fmt.Sprintf("/proc/self/fd/%d/%s", d.dirfd, d.pName) + pData, err := syscallcompat.Lgetxattr(procPath, cAttr) + if err != nil { + return nil, fs.ToErrno(err) + } + return pData, 0 +} + +func (n *Node) listXAttr() (out []string, errno unix.Errno) { + d, errno := n.prepareAtSyscall("") + if errno != 0 { + return + } + defer unix.Close(d.dirfd) + + procPath := fmt.Sprintf("/proc/self/fd/%d/%s", d.dirfd, d.pName) + pNames, err := syscallcompat.Llistxattr(procPath) + if err != nil { + return nil, fs.ToErrno(err) + } + return pNames, 0 +} -- cgit v1.2.3