blob: 734dd88f3067a336dd34e0b9812cdd1e68fd28f8 [file] [log] [blame]
use libc::{c_char, c_int, c_void, size_t, ssize_t, uint32_t};
const XATTR_NOFOLLOW: c_int = 0x0001;
#[inline(always)]
pub unsafe fn fremovexattr(fd: c_int, name: *const c_char) -> c_int {
extern "C" {
fn fremovexattr(fd: c_int, name: *const c_char, options: c_int) -> c_int;
}
fremovexattr(fd, name, 0)
}
#[inline(always)]
pub unsafe fn fsetxattr(
fd: c_int,
name: *const c_char,
value: *const c_void,
size: size_t,
) -> ssize_t {
extern "C" {
fn fsetxattr(
fd: c_int,
name: *const c_char,
value: *const c_void,
size: size_t,
position: uint32_t,
options: c_int,
) -> ssize_t;
}
fsetxattr(fd, name, value, size, 0, 0)
}
#[inline(always)]
pub unsafe fn fgetxattr(
fd: c_int,
name: *const c_char,
value: *mut c_void,
size: size_t,
) -> ssize_t {
extern "C" {
fn fgetxattr(
fd: c_int,
name: *const c_char,
value: *mut c_void,
size: size_t,
position: uint32_t,
options: c_int,
) -> ssize_t;
}
fgetxattr(fd, name, value, size, 0, 0)
}
#[inline(always)]
pub unsafe fn flistxattr(fd: c_int, buf: *mut c_char, size: size_t) -> ssize_t {
extern "C" {
fn flistxattr(fd: c_int, buf: *mut c_char, size: size_t, options: c_int) -> ssize_t;
}
flistxattr(fd, buf, size, 0)
}
#[inline(always)]
pub unsafe fn lremovexattr(path: *const c_char, name: *const c_char) -> c_int {
extern "C" {
fn removexattr(path: *const c_char, name: *const c_char, options: c_int) -> c_int;
}
removexattr(path, name, XATTR_NOFOLLOW)
}
#[inline(always)]
pub unsafe fn lsetxattr(
path: *const c_char,
name: *const c_char,
value: *const c_void,
size: size_t,
) -> ssize_t {
extern "C" {
fn setxattr(
path: *const c_char,
name: *const c_char,
value: *const c_void,
size: size_t,
position: uint32_t,
options: c_int,
) -> ssize_t;
}
setxattr(path, name, value, size, 0, XATTR_NOFOLLOW)
}
#[inline(always)]
pub unsafe fn lgetxattr(
path: *const c_char,
name: *const c_char,
value: *mut c_void,
size: size_t,
) -> ssize_t {
extern "C" {
fn getxattr(
path: *const c_char,
name: *const c_char,
value: *mut c_void,
size: size_t,
position: uint32_t,
options: c_int,
) -> ssize_t;
}
getxattr(path, name, value, size, 0, XATTR_NOFOLLOW)
}
#[inline(always)]
pub unsafe fn llistxattr(path: *const c_char, buf: *mut c_char, size: size_t) -> ssize_t {
extern "C" {
fn listxattr(
path: *const c_char,
buf: *mut c_char,
size: size_t,
options: c_int,
) -> ssize_t;
}
listxattr(path, buf, size, XATTR_NOFOLLOW)
}