From 04f50cda93cbb67f2afa353c52f342100e80e625 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 26 Jun 2019 23:29:17 +0200 Subject: [PATCH] unix: add missing dirent* helper functions on aix These are needed by ParseDirent and were missing in CL 183897. Change-Id: I5b340fea9c0dc1b65b717b0d3cfd8cbb40d3cae9 Reviewed-on: https://go-review.googlesource.com/c/sys/+/183997 Run-TryBot: Tobias Klauser TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- unix/syscall_aix.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/unix/syscall_aix.go b/unix/syscall_aix.go index a079243d..1aa065f9 100644 --- a/unix/syscall_aix.go +++ b/unix/syscall_aix.go @@ -280,6 +280,22 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e return -1, ENOSYS } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + //sys getdirent(fd int, buf []byte) (n int, err error) func Getdents(fd int, buf []byte) (n int, err error) { return getdirent(fd, buf)