From c5567b49c5d04a5f83870795b8c0e2df43a8ce32 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Mon, 24 Jun 2019 11:44:31 +0000 Subject: [PATCH] unix: add Getdents on dragonfly Add a syscall wrapper for Getdents on dragonfly and use it to implement ReadDirent Change-Id: Ie54c0edeaf89491cab2355557fb442bd5bec2987 Reviewed-on: https://go-review.googlesource.com/c/sys/+/183227 Run-TryBot: Tobias Klauser TryBot-Result: Gobot Gobot Reviewed-by: Benny Siegert --- unix/readdirent_getdents.go | 2 +- unix/readdirent_getdirentries.go | 2 +- unix/syscall_dragonfly.go | 1 + unix/zsyscall_dragonfly_amd64.go | 17 +++++++++++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/unix/readdirent_getdents.go b/unix/readdirent_getdents.go index 2c51af8c..3a90aa6d 100644 --- a/unix/readdirent_getdents.go +++ b/unix/readdirent_getdents.go @@ -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 aix freebsd linux netbsd openbsd +// +build aix dragonfly freebsd linux netbsd openbsd package unix diff --git a/unix/readdirent_getdirentries.go b/unix/readdirent_getdirentries.go index 161e95a7..5fdae40b 100644 --- a/unix/readdirent_getdirentries.go +++ b/unix/readdirent_getdirentries.go @@ -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 darwin dragonfly +// +build darwin package unix diff --git a/unix/syscall_dragonfly.go b/unix/syscall_dragonfly.go index 962eee30..bf537011 100644 --- a/unix/syscall_dragonfly.go +++ b/unix/syscall_dragonfly.go @@ -269,6 +269,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Fstatfs(fd int, stat *Statfs_t) (err error) //sys Fsync(fd int) (err error) //sys Ftruncate(fd int, length int64) (err error) +//sys Getdents(fd int, buf []byte) (n int, err error) //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) //sys Getdtablesize() (size int) //sysnb Getegid() (egid int) diff --git a/unix/zsyscall_dragonfly_amd64.go b/unix/zsyscall_dragonfly_amd64.go index ae9f1a21..cdfe9318 100644 --- a/unix/zsyscall_dragonfly_amd64.go +++ b/unix/zsyscall_dragonfly_amd64.go @@ -749,6 +749,23 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 {