]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.12] syscall: avoid _getdirentries64 on darwin
authorKeith Randall <keithr@alum.mit.edu>
Wed, 20 Mar 2019 17:47:17 +0000 (10:47 -0700)
committerAndrew Bonventre <andybons@golang.org>
Fri, 5 Apr 2019 16:59:48 +0000 (16:59 +0000)
commit731ebf4d87dbe349e2eb60233c3965ee62a32690
tree5773ce92d67fbaeaefed4f1245e51d87dc49a379
parent8b086a2b7f7e35c1b7cb6a4258d82f7407e6ba44
[release-branch.go1.12] syscall: avoid _getdirentries64 on darwin

Getdirentries is implemented with the __getdirentries64 function
in libSystem.dylib. That function works, but it's on Apple's
can't-be-used-in-an-app-store-application list.

Implement Getdirentries using the underlying fdopendir/readdir_r/closedir.
The simulation isn't faithful, and could be slow, but it should handle
common cases.

Don't use Getdirentries in the stdlib, use fdopendir/readdir_r/closedir
instead (via (*os.File).readdirnames).

(Incorporates CL 170837 and CL 170698, which were small fixes to the
original tip CL.)

Fixes #31244

Update #28984

RELNOTE=yes

Change-Id: Ia6b5d003e5bfe43ba54b1e1d9cfa792cc6511717
Reviewed-on: https://go-review.googlesource.com/c/go/+/168479
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
(cherry picked from commit 9da6530faab0a58c4c4e02b2f3f4a5c754dcbd4e)
Reviewed-on: https://go-review.googlesource.com/c/go/+/170640
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
23 files changed:
src/internal/poll/fd_opendir_darwin.go [moved from src/internal/poll/fd_opendir_ios.go with 95% similarity]
src/os/dir_darwin.go [moved from src/os/dir_ios.go with 84% similarity]
src/os/dir_unix.go
src/runtime/sys_darwin.go
src/runtime/sys_darwin_32.go
src/runtime/sys_darwin_386.s
src/runtime/sys_darwin_64.go
src/runtime/sys_darwin_amd64.s
src/runtime/sys_darwin_arm.s
src/runtime/sys_darwin_arm64.s
src/syscall/dirent_bsd_test.go
src/syscall/mksyscall.pl
src/syscall/syscall_darwin.go
src/syscall/syscall_darwin_386.go
src/syscall/syscall_darwin_amd64.go
src/syscall/syscall_darwin_arm.go
src/syscall/syscall_darwin_arm64.go
src/syscall/zsyscall_darwin_386.go
src/syscall/zsyscall_darwin_386.s
src/syscall/zsyscall_darwin_amd64.go
src/syscall/zsyscall_darwin_amd64.s
src/syscall/zsyscall_darwin_arm.go
src/syscall/zsyscall_darwin_arm64.go