rust/hg-core/src/utils/files.rs
changeset 43271 99394e6c5d12
parent 43250 98d996a138de
child 43633 0b7733719d21
child 43868 b06cf2809ec3
equal deleted inserted replaced
43270:6a8c166a93a6 43271:99394e6c5d12
    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]