Changeset 69 in code for trunk/vendor/golang.org/x/sys/unix/xattr_bsd.go
- Timestamp:
- Sep 13, 2023, 10:49:50 AM (21 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/vendor/golang.org/x/sys/unix/xattr_bsd.go
r67 r69 161 161 162 162 func Listxattr(file string, dest []byte) (sz int, err error) { 163 d := initxattrdest(dest, 0)164 163 destsiz := len(dest) 165 164 166 165 // FreeBSD won't allow you to list xattrs from multiple namespaces 167 s :=0166 s, pos := 0, 0 168 167 for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { 169 stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)168 stmp, e := ListxattrNS(file, nsid, dest[pos:]) 170 169 171 170 /* Errors accessing system attrs are ignored so that … … 176 175 * we don't have read permissions on, so don't ignore those errors 177 176 */ 178 if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { 179 continue 180 } else if e != nil { 177 if e != nil { 178 if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { 179 continue 180 } 181 181 return s, e 182 182 } 183 183 184 184 s += stmp 185 destsiz -= s 186 if destsiz < 0 { 187 destsiz = 0 188 } 189 d = initxattrdest(dest, s) 185 pos = s 186 if pos > destsiz { 187 pos = destsiz 188 } 189 } 190 191 return s, nil 192 } 193 194 func ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) { 195 d := initxattrdest(dest, 0) 196 destsiz := len(dest) 197 198 s, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) 199 if e != nil { 200 return 0, err 190 201 } 191 202 … … 194 205 195 206 func Flistxattr(fd int, dest []byte) (sz int, err error) { 196 d := initxattrdest(dest, 0) 197 destsiz := len(dest) 198 199 s := 0 207 destsiz := len(dest) 208 209 s, pos := 0, 0 200 210 for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { 201 stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) 202 if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { 203 continue 204 } else if e != nil { 211 stmp, e := FlistxattrNS(fd, nsid, dest[pos:]) 212 213 if e != nil { 214 if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { 215 continue 216 } 205 217 return s, e 206 218 } 207 219 208 220 s += stmp 209 destsiz -= s 210 if destsiz < 0 { 211 destsiz = 0 212 } 213 d = initxattrdest(dest, s) 221 pos = s 222 if pos > destsiz { 223 pos = destsiz 224 } 225 } 226 227 return s, nil 228 } 229 230 func FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) { 231 d := initxattrdest(dest, 0) 232 destsiz := len(dest) 233 234 s, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) 235 if e != nil { 236 return 0, err 214 237 } 215 238 … … 218 241 219 242 func Llistxattr(link string, dest []byte) (sz int, err error) { 220 d := initxattrdest(dest, 0) 221 destsiz := len(dest) 222 223 s := 0 243 destsiz := len(dest) 244 245 s, pos := 0, 0 224 246 for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { 225 stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) 226 if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { 227 continue 228 } else if e != nil { 247 stmp, e := LlistxattrNS(link, nsid, dest[pos:]) 248 249 if e != nil { 250 if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { 251 continue 252 } 229 253 return s, e 230 254 } 231 255 232 256 s += stmp 233 destsiz -= s 234 if destsiz < 0 { 235 destsiz = 0 236 } 237 d = initxattrdest(dest, s) 238 } 239 240 return s, nil 241 } 257 pos = s 258 if pos > destsiz { 259 pos = destsiz 260 } 261 } 262 263 return s, nil 264 } 265 266 func LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) { 267 d := initxattrdest(dest, 0) 268 destsiz := len(dest) 269 270 s, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) 271 if e != nil { 272 return 0, err 273 } 274 275 return s, nil 276 }
Note:
See TracChangeset
for help on using the changeset viewer.