shared/util_linux.go
func llistxattr(path string, list []byte) (sz int, err error) {
	var _p0 *byte
	_p0, err = syscall.BytePtrFromString(path)
	if err != nil {
		return
	}
	var _p1 unsafe.Pointer
	if len(list) > 0 {
		_p1 = unsafe.Pointer(&list[0])
	} else {
		_p1 = unsafe.Pointer(nil)
	}
	r0, _, e1 := syscall.Syscall(syscall.SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(list)))
	sz = int(r0)
	if e1 != 0 {
		err = e1
	}
	return
}
func llistxattr(path string, list []byte) (sz int, err error) {
	var _p0 *byte
	_p0, err = syscall.BytePtrFromString(path)
	if err != nil {
		return
	}
	var _p1 unsafe.Pointer
	if len(list) > 0 {
		_p1 = unsafe.Pointer(&list[0])
	} else {
		_p1 = unsafe.Pointer(nil)
	}
	r0, _, e1 := syscall.Syscall(syscall.SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(list)))
	sz = int(r0)
	if e1 != 0 {
		err = e1
	}
	return
}
func llistxattr ( path string , list [ ] byte ) ( sz int , err error ) { var _p0 * byte _p0 , err = syscall . BytePtrFromString ( path ) if err != nil { return } var _p1 unsafe . Pointer if len ( list ) > 0 { _p1 = unsafe . Pointer ( & list [ 0 ] ) } else { _p1 = unsafe . Pointer ( nil ) } r0 , _ , e1 := syscall . Syscall ( syscall . SYS_LLISTXATTR , uintptr ( unsafe . Pointer ( _p0 ) ) , uintptr ( _p1 ) , uintptr ( len ( list ) ) ) sz = int ( r0 ) if e1 != 0 { err = e1 } return }
// This uses ssize_t llistxattr(const char *path, char *list, size_t size); to
// handle symbolic links (should it in the future be possible to set extended
// attributed on symlinks): If path is a symbolic link the extended attributes
// associated with the link itself are retrieved.
This uses ssize_t llistxattr ( const char * path char * list size_t size ) ; to handle symbolic links ( should it in the future be possible to set extended attributed on symlinks ) : If path is a symbolic link the extended attributes associated with the link itself are retrieved .