1
2
3
4
5
6
7 package unix
8
9 import (
10 "internal/abi"
11 "syscall"
12 "unsafe"
13 )
14
15 func libc_readlinkat_trampoline()
16
17
18
19 func Readlinkat(dirfd int, path string, buf []byte) (int, error) {
20 p0, err := syscall.BytePtrFromString(path)
21 if err != nil {
22 return 0, err
23 }
24 var p1 unsafe.Pointer
25 if len(buf) > 0 {
26 p1 = unsafe.Pointer(&buf[0])
27 } else {
28 p1 = unsafe.Pointer(&_zero)
29 }
30 n, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_readlinkat_trampoline),
31 uintptr(dirfd),
32 uintptr(unsafe.Pointer(p0)),
33 uintptr(p1),
34 uintptr(len(buf)),
35 0,
36 0)
37 if errno != 0 {
38 return 0, errno
39 }
40 return int(n), nil
41 }
42
43 func libc_mkdirat_trampoline()
44
45
46
47 func Mkdirat(dirfd int, path string, mode uint32) error {
48 p, err := syscall.BytePtrFromString(path)
49 if err != nil {
50 return err
51 }
52 _, _, errno := syscall_syscall(abi.FuncPCABI0(libc_mkdirat_trampoline),
53 uintptr(dirfd),
54 uintptr(unsafe.Pointer(p)),
55 uintptr(mode))
56 if errno != 0 {
57 return errno
58 }
59 return nil
60 }
61
62 func libc_fchmodat_trampoline()
63
64
65
66 func Fchmodat(dirfd int, path string, mode uint32, flags int) error {
67 p, err := syscall.BytePtrFromString(path)
68 if err != nil {
69 return err
70 }
71 _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_fchmodat_trampoline),
72 uintptr(dirfd),
73 uintptr(unsafe.Pointer(p)),
74 uintptr(mode),
75 uintptr(flags),
76 0,
77 0)
78 if errno != 0 {
79 return errno
80 }
81 return nil
82 }
83
84 func libc_fchownat_trampoline()
85
86
87
88 func Fchownat(dirfd int, path string, uid, gid int, flags int) error {
89 p, err := syscall.BytePtrFromString(path)
90 if err != nil {
91 return err
92 }
93 _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_fchownat_trampoline),
94 uintptr(dirfd),
95 uintptr(unsafe.Pointer(p)),
96 uintptr(uid),
97 uintptr(gid),
98 uintptr(flags),
99 0)
100 if errno != 0 {
101 return errno
102 }
103 return nil
104 }
105
106 func libc_renameat_trampoline()
107
108
109
110 func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) error {
111 oldp, err := syscall.BytePtrFromString(oldpath)
112 if err != nil {
113 return err
114 }
115 newp, err := syscall.BytePtrFromString(newpath)
116 if err != nil {
117 return err
118 }
119 _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_renameat_trampoline),
120 uintptr(olddirfd),
121 uintptr(unsafe.Pointer(oldp)),
122 uintptr(newdirfd),
123 uintptr(unsafe.Pointer(newp)),
124 0,
125 0)
126 if errno != 0 {
127 return errno
128 }
129 return nil
130 }
131
132 func libc_linkat_trampoline()
133
134
135
136 func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flag int) error {
137 oldp, err := syscall.BytePtrFromString(oldpath)
138 if err != nil {
139 return err
140 }
141 newp, err := syscall.BytePtrFromString(newpath)
142 if err != nil {
143 return err
144 }
145 _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_linkat_trampoline),
146 uintptr(olddirfd),
147 uintptr(unsafe.Pointer(oldp)),
148 uintptr(newdirfd),
149 uintptr(unsafe.Pointer(newp)),
150 uintptr(flag),
151 0)
152 if errno != 0 {
153 return errno
154 }
155 return nil
156 }
157
158 func libc_symlinkat_trampoline()
159
160
161
162 func Symlinkat(oldpath string, newdirfd int, newpath string) error {
163 oldp, err := syscall.BytePtrFromString(oldpath)
164 if err != nil {
165 return err
166 }
167 newp, err := syscall.BytePtrFromString(newpath)
168 if err != nil {
169 return err
170 }
171 _, _, errno := syscall_syscall6(abi.FuncPCABI0(libc_symlinkat_trampoline),
172 uintptr(unsafe.Pointer(oldp)),
173 uintptr(newdirfd),
174 uintptr(unsafe.Pointer(newp)),
175 0,
176 0,
177 0)
178 if errno != 0 {
179 return errno
180 }
181 return nil
182 }
183
View as plain text