
Go 1.19 started reformatting code in a way that makes it more obvious how it will be rendered on pkg.go.dev. It gets it almost right, but not entirely. Therefore, I had to modify some of the comments so that they are formatted correctly.
39 строки
1,1 КиБ
Go
39 строки
1,1 КиБ
Go
//go:build darwin
|
|
// +build darwin
|
|
|
|
package syscall
|
|
|
|
import (
|
|
"unsafe"
|
|
)
|
|
|
|
// The odd $INODE64 suffix is an Apple compatibility feature, see
|
|
// __DARWIN_INODE64 in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/cdefs.h
|
|
// and https://assert.cc/posts/darwin_use_64_bit_inode_vs_ctypes/
|
|
// Without it, you get the old, smaller struct stat from mac os 10.2 or so.
|
|
// It not needed on arm64.
|
|
|
|
// struct DIR * buf fdopendir(int fd);
|
|
//
|
|
//export fdopendir$INODE64
|
|
func libc_fdopendir(fd int32) unsafe.Pointer
|
|
|
|
// int readdir_r(struct DIR * buf, struct dirent *entry, struct dirent **result);
|
|
//
|
|
//export readdir_r$INODE64
|
|
func libc_readdir_r(unsafe.Pointer, unsafe.Pointer, unsafe.Pointer) int32
|
|
|
|
// int stat(const char *path, struct stat * buf);
|
|
//
|
|
//export stat$INODE64
|
|
func libc_stat(pathname *byte, ptr unsafe.Pointer) int32
|
|
|
|
// int fstat(int fd, struct stat * buf);
|
|
//
|
|
//export fstat$INODE64
|
|
func libc_fstat(fd int32, ptr unsafe.Pointer) int32
|
|
|
|
// int lstat(const char *path, struct stat * buf);
|
|
//
|
|
//export lstat$INODE64
|
|
func libc_lstat(pathname *byte, ptr unsafe.Pointer) int32
|