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