summaryrefslogtreecommitdiffstats
path: root/src/filesize.rs
blob: 0ac4c7e281e44ca7a689a47774f82a99f66599b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#[derive(Debug, Clone, Copy)]
pub enum FilesizeType {
    DiskUsage,
    ApparentSize,
}

impl FilesizeType {
    #[cfg(not(windows))]
    pub fn size(self, metadata: &std::fs::Metadata) -> u64 {
        use std::os::unix::fs::MetadataExt;

        match self {
            Self::ApparentSize => metadata.len(),
            // block size is always 512 byte, see stat(2) manpage
            Self::DiskUsage => metadata.blocks() * 512,
        }
    }

    #[cfg(windows)]
    pub fn size(self, metadata: &std::fs::Metadata) -> u64 {
        metadata.len()
    }
}