#![allow(non_camel_case_types)]
#![allow(dead_code)]
use bitflags::bitflags;
#[repr(C)]
pub struct attrlist {
pub bitmapcount: u16,
pub reserved: u16,
pub commonattr: u32,
pub volattr: u32,
pub dirattr: u32,
pub fileattr: u32,
pub forkattr: u32,
}
#[repr(C)]
pub struct attribute_set {
pub commonattr: u32,
pub volattr: u32,
pub dirattr: u32,
pub fileattr: u32,
pub forkattr: u32,
}
#[repr(C)]
pub struct attrreference {
pub attr_dataoffset: i32,
pub attr_length: u32,
}
pub const ATTR_BIT_MAP_COUNT: u16 = 5;
bitflags! {
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct CommonAttr: u32 {
const RETURNED_ATTRS = 0x80000000;
const NAME = 0x00000001;
const OBJTYPE = 0x00000008;
const MODTIME = 0x00000400;
const ACCESSMASK = 0x00020000;
const FILEID = 0x02000000;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct FileAttr: u32 {
const TOTALSIZE = 0x00000002;
const ALLOCSIZE = 0x00000004;
const DATALENGTH = 0x00000200;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct DirAttr: u32 {
const ENTRYCOUNT = 0x00000002;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct FsOptions: u64 {
const NOFOLLOW = 0x00000001;
const PACK_INVAL_ATTRS = 0x00000008;
}
}
extern "C" {
pub fn getattrlistbulk(
dirfd: libc::c_int,
alist: *mut attrlist,
attribute_buffer: *mut libc::c_void,
buffer_size: libc::size_t,
options: u64,
) -> libc::ssize_t;
}