standard_lib/fs/
metadata.rs1use libc::stat;
2
3use super::FileType;
4
5#[derive(Debug, Clone)]
6pub struct Metadata {
7 pub size: i64, pub file_type: FileType, pub mode: u16, pub uid: u32, pub gid: u32, pub parent_device_id: u64, pub self_device_id: u64, pub time_accessed: (i64, i64), pub time_modified: (i64, i64), pub time_changed: (i64, i64), pub links: u64, pub block_size: i64, pub blocks: i64, pub inode_num: u64, }
25
26impl Metadata {
27 #[allow(clippy::unnecessary_cast)]
28 pub(crate) const fn from_stat(raw: stat) -> Metadata {
29 Metadata {
30 size: raw.st_size,
31 file_type: FileType::from_stat_mode(raw.st_mode),
32 mode: raw.st_mode as u16,
33 uid: raw.st_uid,
34 gid: raw.st_gid,
35 parent_device_id: raw.st_dev,
36 self_device_id: raw.st_rdev,
37 time_accessed: (raw.st_atime as i64, raw.st_atime_nsec),
38 time_modified: (raw.st_mtime as i64, raw.st_mtime_nsec),
39 time_changed: (raw.st_ctime as i64, raw.st_ctime_nsec),
40 links: raw.st_nlink as u64,
41 block_size: raw.st_blksize as i64,
42 blocks: raw.st_blocks as i64,
43 inode_num: raw.st_ino as u64,
44 }
45 }
46}