devela::_dep::nc::call

Function llistxattr

pub unsafe fn llistxattr<P>(filename: P, value: &mut [u8]) -> Result<isize, i32> 
where P: AsRef<Path>,
Available on crate feature dep_nc only.
Expand description

List extended attribute names.

§Examples

let path = "/tmp/nc-llistxattr";
let ret = unsafe { nc::openat(nc::AT_FDCWD, path, nc::O_WRONLY | nc::O_CREAT, 0o644) };
assert!(ret.is_ok());
let fd = ret.unwrap();
let ret = unsafe { nc::close(fd) };
assert!(ret.is_ok());
let attr_name = "user.creator";
let attr_value = "nc-0.0.1";
//let flags = 0;
let flags = nc::XATTR_CREATE;
let ret = unsafe {
    nc::setxattr(
        path,
        &attr_name,
        attr_value.as_bytes(),
        flags,
    )
};
assert!(ret.is_ok());
let mut buf = [0_u8; 16];
let buf_len = buf.len();
let ret = unsafe { nc::llistxattr(path, &mut buf) };
let attr_len = ret.unwrap() as usize;
assert_eq!(&buf[..attr_len - 1], attr_name.as_bytes());
let ret = unsafe { nc::unlinkat(nc::AT_FDCWD, path, 0) };
assert!(ret.is_ok());