1
2
3
4
5 package unix
6
7 import (
8 "internal/abi"
9 "syscall"
10 "unsafe"
11 )
12
13
14 func libc_getgrouplist_trampoline()
15
16 func Getgrouplist(name *byte, gid uint32, gids *uint32, n *int32) error {
17 _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_getgrouplist_trampoline),
18 uintptr(unsafe.Pointer(name)), uintptr(gid), uintptr(unsafe.Pointer(gids)),
19 uintptr(unsafe.Pointer(n)), 0, 0)
20 if errno != 0 {
21 return errno
22 }
23 return nil
24 }
25
26 const (
27 SC_GETGR_R_SIZE_MAX = 0x46
28 SC_GETPW_R_SIZE_MAX = 0x47
29 )
30
31 type Passwd struct {
32 Name *byte
33 Passwd *byte
34 Uid uint32
35 Gid uint32
36 Change int64
37 Class *byte
38 Gecos *byte
39 Dir *byte
40 Shell *byte
41 Expire int64
42 }
43
44 type Group struct {
45 Name *byte
46 Passwd *byte
47 Gid uint32
48 Mem **byte
49 }
50
51
52 func libc_getpwnam_r_trampoline()
53
54 func Getpwnam(name *byte, pwd *Passwd, buf *byte, size uintptr, result **Passwd) syscall.Errno {
55
56 errno, _, _ := syscall_syscall6(abi.FuncPCABI0(libc_getpwnam_r_trampoline),
57 uintptr(unsafe.Pointer(name)),
58 uintptr(unsafe.Pointer(pwd)),
59 uintptr(unsafe.Pointer(buf)),
60 size,
61 uintptr(unsafe.Pointer(result)),
62 0)
63 return syscall.Errno(errno)
64 }
65
66
67 func libc_getpwuid_r_trampoline()
68
69 func Getpwuid(uid uint32, pwd *Passwd, buf *byte, size uintptr, result **Passwd) syscall.Errno {
70
71 errno, _, _ := syscall_syscall6(abi.FuncPCABI0(libc_getpwuid_r_trampoline),
72 uintptr(uid),
73 uintptr(unsafe.Pointer(pwd)),
74 uintptr(unsafe.Pointer(buf)),
75 size,
76 uintptr(unsafe.Pointer(result)),
77 0)
78 return syscall.Errno(errno)
79 }
80
81
82 func libc_getgrnam_r_trampoline()
83
84 func Getgrnam(name *byte, grp *Group, buf *byte, size uintptr, result **Group) syscall.Errno {
85
86 errno, _, _ := syscall_syscall6(abi.FuncPCABI0(libc_getgrnam_r_trampoline),
87 uintptr(unsafe.Pointer(name)),
88 uintptr(unsafe.Pointer(grp)),
89 uintptr(unsafe.Pointer(buf)),
90 size,
91 uintptr(unsafe.Pointer(result)),
92 0)
93 return syscall.Errno(errno)
94 }
95
96
97 func libc_getgrgid_r_trampoline()
98
99 func Getgrgid(gid uint32, grp *Group, buf *byte, size uintptr, result **Group) syscall.Errno {
100
101 errno, _, _ := syscall_syscall6(abi.FuncPCABI0(libc_getgrgid_r_trampoline),
102 uintptr(gid),
103 uintptr(unsafe.Pointer(grp)),
104 uintptr(unsafe.Pointer(buf)),
105 size,
106 uintptr(unsafe.Pointer(result)),
107 0)
108 return syscall.Errno(errno)
109 }
110
111
112 func libc_sysconf_trampoline()
113
114 func Sysconf(key int32) int64 {
115 val, _, errno := syscall_syscall6X(abi.FuncPCABI0(libc_sysconf_trampoline),
116 uintptr(key), 0, 0, 0, 0, 0)
117 if errno != 0 {
118 return -1
119 }
120 return int64(val)
121 }
122
View as plain text