equal
deleted
inserted
replaced
10 //! Functions for fiddling with files. |
10 //! Functions for fiddling with files. |
11 |
11 |
12 use crate::utils::hg_path::{HgPath, HgPathBuf}; |
12 use crate::utils::hg_path::{HgPath, HgPathBuf}; |
13 use std::iter::FusedIterator; |
13 use std::iter::FusedIterator; |
14 |
14 |
|
15 use std::fs::Metadata; |
15 use std::path::Path; |
16 use std::path::Path; |
16 |
17 |
17 pub fn get_path_from_bytes(bytes: &[u8]) -> &Path { |
18 pub fn get_path_from_bytes(bytes: &[u8]) -> &Path { |
18 let os_str; |
19 let os_str; |
19 #[cfg(unix)] |
20 #[cfg(unix)] |
74 return path.to_ascii_uppercase(); |
75 return path.to_ascii_uppercase(); |
75 #[cfg(unix)] |
76 #[cfg(unix)] |
76 path.to_ascii_lowercase() |
77 path.to_ascii_lowercase() |
77 } |
78 } |
78 |
79 |
|
80 #[derive(Eq, PartialEq, Ord, PartialOrd, Copy, Clone)] |
|
81 pub struct HgMetadata { |
|
82 pub st_dev: u64, |
|
83 pub st_mode: u32, |
|
84 pub st_nlink: u64, |
|
85 pub st_size: u64, |
|
86 pub st_mtime: i64, |
|
87 pub st_ctime: i64, |
|
88 } |
|
89 |
|
90 // TODO support other plaforms |
|
91 #[cfg(unix)] |
|
92 impl HgMetadata { |
|
93 pub fn from_metadata(metadata: Metadata) -> Self { |
|
94 use std::os::unix::fs::MetadataExt; |
|
95 Self { |
|
96 st_dev: metadata.dev(), |
|
97 st_mode: metadata.mode(), |
|
98 st_nlink: metadata.nlink(), |
|
99 st_size: metadata.size(), |
|
100 st_mtime: metadata.mtime(), |
|
101 st_ctime: metadata.ctime(), |
|
102 } |
|
103 } |
|
104 } |
|
105 |
79 #[cfg(test)] |
106 #[cfg(test)] |
80 mod tests { |
107 mod tests { |
81 use super::*; |
108 use super::*; |
82 |
109 |
83 #[test] |
110 #[test] |