go/src/internal/syscall/unix/pty_darwin.go
Russ Cox 059c3ed09f os/signal/internal/pty: use libc (not cgo) on macOS
This package is only used by tests anyway, but might as well
remove the cgo use on macOS so that it doesn't show up as
a cgo user, as part of our overall strategy to remove cgo use
in the standard library on macOS.

Change-Id: I5a1a39ed56373385f9d43a5e17098035dc1a451a
Reviewed-on: https://go-review.googlesource.com/c/go/+/449315
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
2022-11-10 19:24:46 +00:00

65 lines
1.6 KiB
Go

// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package unix
import (
"internal/abi"
"unsafe"
)
//go:cgo_import_dynamic libc_grantpt grantpt "/usr/lib/libSystem.B.dylib"
func libc_grantpt_trampoline()
func Grantpt(fd int) error {
_, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_grantpt_trampoline), uintptr(fd), 0, 0, 0, 0, 0)
if errno != 0 {
return errno
}
return nil
}
//go:cgo_import_dynamic libc_unlockpt unlockpt "/usr/lib/libSystem.B.dylib"
func libc_unlockpt_trampoline()
func Unlockpt(fd int) error {
_, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_unlockpt_trampoline), uintptr(fd), 0, 0, 0, 0, 0)
if errno != 0 {
return errno
}
return nil
}
//go:cgo_import_dynamic libc_ptsname_r ptsname_r "/usr/lib/libSystem.B.dylib"
func libc_ptsname_r_trampoline()
func Ptsname(fd int) (string, error) {
buf := make([]byte, 256)
_, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_ptsname_r_trampoline),
uintptr(fd),
uintptr(unsafe.Pointer(&buf[0])),
uintptr(len(buf)-1),
0, 0, 0)
if errno != 0 {
return "", errno
}
for i, c := range buf {
if c == 0 {
buf = buf[:i]
break
}
}
return string(buf), nil
}
//go:cgo_import_dynamic libc_posix_openpt posix_openpt "/usr/lib/libSystem.B.dylib"
func libc_posix_openpt_trampoline()
func PosixOpenpt(flag int) (fd int, err error) {
ufd, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_posix_openpt_trampoline), uintptr(flag), 0, 0, 0, 0, 0)
if errno != 0 {
return -1, errno
}
return int(ufd), nil
}