use super::prelude::*;
use crate::from_c::stat as sys_stat;
use serde::Serialize;
pub(crate) fn get_definitions(inp: &mut Definitions) {
inp.add(
Ident::Stat,
vec!["pathname", "stat"],
vec![AV::CString(In), AV::CStruct(Out, CStructAV::sys_stat)],
AV::Int(Out),
);
inp.add(
Ident::Fstat,
vec!["pathname", "stat"],
vec![AV::Int(In), AV::CStruct(Out, CStructAV::sys_stat)],
AV::Int(Out),
);
}
#[derive(Debug, PartialEq, FromPtrace, Serialize)]
#[hstrace(hmz("Stat path {:?} returned {:?}", self.pathname, self.stat))]
pub struct Stat {
#[hstrace]
pub pathname: String,
#[hstrace(c_struct = sys_stat)]
pub stat: StatResult,
}
#[derive(Debug, Clone, PartialEq, FromCStruct, Serialize)]
#[hstrace(c_struct = sys_stat)]
pub struct StatResult {
#[hstrace]
pub st_ino: usize,
#[hstrace]
pub st_nlink: usize,
#[hstrace]
pub st_uid: usize,
#[hstrace]
pub st_gid: usize,
#[hstrace]
pub st_blksize: usize,
#[hstrace]
pub st_blocks: usize,
#[hstrace]
pub st_size: usize,
}