Skip to main content

libuv/fs/
stat.rs

1use crate::{FromInner, IntoInner};
2use uv::uv_stat_t;
3
4/// Portable equivalent of struct stat.
5pub struct Stat {
6    pub dev: u64,
7    pub mode: u64,
8    pub nlink: u64,
9    pub uid: u64,
10    pub gid: u64,
11    pub rdev: u64,
12    pub ino: u64,
13    pub size: u64,
14    pub blksize: u64,
15    pub blocks: u64,
16    pub flags: u64,
17    pub gen: u64,
18    pub atim: crate::TimeSpec,
19    pub mtim: crate::TimeSpec,
20    pub ctim: crate::TimeSpec,
21    pub birthtim: crate::TimeSpec,
22}
23
24impl FromInner<*const uv_stat_t> for Stat {
25    fn from_inner(stat: *const uv_stat_t) -> Stat {
26        unsafe {
27            Stat {
28                dev: (*stat).st_dev,
29                mode: (*stat).st_mode,
30                nlink: (*stat).st_nlink,
31                uid: (*stat).st_uid,
32                gid: (*stat).st_gid,
33                rdev: (*stat).st_rdev,
34                ino: (*stat).st_ino,
35                size: (*stat).st_size,
36                blksize: (*stat).st_blksize,
37                blocks: (*stat).st_blocks,
38                flags: (*stat).st_flags,
39                gen: (*stat).st_gen,
40                atim: (*stat).st_atim.into_inner(),
41                mtim: (*stat).st_mtim.into_inner(),
42                ctim: (*stat).st_ctim.into_inner(),
43                birthtim: (*stat).st_birthtim.into_inner(),
44            }
45        }
46    }
47}