pty_darwin.mx raw
1 // Copyright 2022 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package unix
6
7 import (
8 "internal/abi"
9 "unsafe"
10 )
11
12 //go:cgo_import_dynamic libc_grantpt grantpt "/usr/lib/libSystem.B.dylib"
13 func libc_grantpt_trampoline()
14
15 func Grantpt(fd int) error {
16 _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_grantpt_trampoline), uintptr(fd), 0, 0, 0, 0, 0)
17 if errno != 0 {
18 return errno
19 }
20 return nil
21 }
22
23 //go:cgo_import_dynamic libc_unlockpt unlockpt "/usr/lib/libSystem.B.dylib"
24 func libc_unlockpt_trampoline()
25
26 func Unlockpt(fd int) error {
27 _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_unlockpt_trampoline), uintptr(fd), 0, 0, 0, 0, 0)
28 if errno != 0 {
29 return errno
30 }
31 return nil
32 }
33
34 //go:cgo_import_dynamic libc_ptsname_r ptsname_r "/usr/lib/libSystem.B.dylib"
35 func libc_ptsname_r_trampoline()
36
37 func Ptsname(fd int) (string, error) {
38 buf := make([]byte, 256)
39 _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_ptsname_r_trampoline),
40 uintptr(fd),
41 uintptr(unsafe.Pointer(&buf[0])),
42 uintptr(len(buf)-1),
43 0, 0, 0)
44 if errno != 0 {
45 return "", errno
46 }
47 for i, c := range buf {
48 if c == 0 {
49 buf = buf[:i]
50 break
51 }
52 }
53 return string(buf), nil
54 }
55
56 //go:cgo_import_dynamic libc_posix_openpt posix_openpt "/usr/lib/libSystem.B.dylib"
57 func libc_posix_openpt_trampoline()
58
59 func PosixOpenpt(flag int) (fd int, err error) {
60 ufd, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_posix_openpt_trampoline), uintptr(flag), 0, 0, 0, 0, 0)
61 if errno != 0 {
62 return -1, errno
63 }
64 return int(ufd), nil
65 }
66