Documentation ¶
Overview ¶
Package syscallcompat wraps Linux-specific syscalls.
Index ¶
- Constants
- func Dup3(oldfd int, newfd int, flags int) (err error)
- func EnospcPrealloc(fd int, off int64, len int64) (err error)
- func Faccessat(dirfd int, path string, mode uint32) error
- func Fallocate(fd int, mode uint32, off int64, len int64) (err error)
- func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
- func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
- func Fstatat(dirfd int, path string, stat *unix.Stat_t, flags int) (err error)
- func Getdents(fd int) ([]fuse.DirEntry, error)
- func IsENOSPC(err error) bool
- func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
- func Mkdirat(dirfd int, path string, mode uint32) (err error)
- func Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
- func OpenNofollow(baseDir string, relPath string, flags int, mode uint32) (fd int, err error)
- func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
- func Readlinkat(dirfd int, path string) (string, error)
- func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
- func Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
- func Unix2syscall(u unix.Stat_t) syscall.Stat_t
- func Unlinkat(dirfd int, path string, flags int) (err error)
Constants ¶
const O_DIRECT = syscall.O_DIRECT
O_DIRECT means oncached I/O on Linux. No direct equivalent on MacOS and defined to zero there.
const PATH_MAX = 4096
PATH_MAX is the maximum allowed path length on Linux. It is not defined on Darwin, so we use the Linux value.
Variables ¶
This section is empty.
Functions ¶
func Dup3 ¶ added in v1.4.1
Dup3 wraps the Dup3 syscall. We want to use Dup3 rather than Dup2 because Dup2 is not implemented on arm64.
func EnospcPrealloc ¶
EnospcPrealloc preallocates ciphertext space without changing the file size. This guarantees that we don't run out of space while writing a ciphertext block (that would corrupt the block).
func Faccessat ¶ added in v1.4.3
Faccessat exists both in Linux and in MacOS 10.10+, but the Linux version DOES NOT support any flags. Emulate AT_SYMLINK_NOFOLLOW like glibc does.
func IsENOSPC ¶ added in v1.6.1
IsENOSPC tries to find out if "err" is a (potentially wrapped) ENOSPC error.
func OpenNofollow ¶ added in v1.4.3
OpenNofollow opens the file/dir at "relPath" in a way that is secure against symlink attacks. Symlinks that are part of "relPath" are never followed. This function is implemented by walking the directory tree, starting at "baseDir", using the Openat syscall with the O_NOFOLLOW flag. Symlinks that are part of the "baseDir" path are followed.
func Readlinkat ¶ added in v1.4.3
Readlinkat exists both in Linux and in MacOS 10.10+. We may add an emulated version for users on older MacOS versions if there is demand. Buffer allocation is handled internally, unlike the bare unix.Readlinkat.
func Unix2syscall ¶ added in v1.4.3
Unix2syscall converts a unix.Stat_t struct to a syscall.Stat_t struct. A direct cast does not work because the padding is named differently in unix.Stat_t for some reason ("X__unused" in syscall, "_" in unix).
Types ¶
This section is empty.