diff --git a/shared/src/fs.rs b/shared/src/fs.rs index 04801be6..a2af16c3 100644 --- a/shared/src/fs.rs +++ b/shared/src/fs.rs @@ -1,7 +1,14 @@ -use std::{collections::VecDeque, path::{Path, PathBuf}}; +use std::{ + collections::VecDeque, + path::{Path, PathBuf}, +}; use anyhow::Result; -use tokio::{fs, io, select, sync::{mpsc, oneshot}, time}; +use tokio::{ + fs, io, select, + sync::{mpsc, oneshot}, + time, +}; pub async fn calculate_size(path: &Path) -> u64 { let mut total = 0; @@ -95,7 +102,10 @@ pub fn copy_with_progress(from: &Path, to: &Path) -> mpsc::Receiver String { - use libc::{S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFLNK, S_IFMT, S_IFSOCK, S_IRGRP, S_IROTH, S_IRUSR, S_ISGID, S_ISUID, S_ISVTX, S_IWGRP, S_IWOTH, S_IWUSR, S_IXGRP, S_IXOTH, S_IXUSR}; + use libc::{ + S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFLNK, S_IFMT, S_IFSOCK, S_IRGRP, S_IROTH, S_IRUSR, + S_ISGID, S_ISUID, S_ISVTX, S_IWGRP, S_IWOTH, S_IWUSR, S_IXGRP, S_IXOTH, S_IXUSR, + }; #[cfg(target_os = "macos")] let m = mode as u16; @@ -123,27 +133,51 @@ pub fn file_mode(mode: u32) -> String { s.push(if m & S_IRUSR != 0 { 'r' } else { '-' }); s.push(if m & S_IWUSR != 0 { 'w' } else { '-' }); s.push(if m & S_IXUSR != 0 { - if m & S_ISUID != 0 { 's' } else { 'x' } + if m & S_ISUID != 0 { + 's' + } else { + 'x' + } } else { - if m & S_ISUID != 0 { 'S' } else { '-' } + if m & S_ISUID != 0 { + 'S' + } else { + '-' + } }); // Group s.push(if m & S_IRGRP != 0 { 'r' } else { '-' }); s.push(if m & S_IWGRP != 0 { 'w' } else { '-' }); s.push(if m & S_IXGRP != 0 { - if m & S_ISGID != 0 { 's' } else { 'x' } + if m & S_ISGID != 0 { + 's' + } else { + 'x' + } } else { - if m & S_ISGID != 0 { 'S' } else { '-' } + if m & S_ISGID != 0 { + 'S' + } else { + '-' + } }); // Other s.push(if m & S_IROTH != 0 { 'r' } else { '-' }); s.push(if m & S_IWOTH != 0 { 'w' } else { '-' }); s.push(if m & S_IXOTH != 0 { - if m & S_ISVTX != 0 { 't' } else { 'x' } + if m & S_ISVTX != 0 { + 't' + } else { + 'x' + } } else { - if m & S_ISVTX != 0 { 'T' } else { '-' } + if m & S_ISVTX != 0 { + 'T' + } else { + '-' + } }); s @@ -172,6 +206,7 @@ pub fn max_common_root(files: &[impl AsRef]) -> PathBuf { root } +#[cfg(not(target_os = "windows"))] #[test] fn test_max_common_root() { assert_eq!(max_common_root(&[] as &[PathBuf]).as_os_str(), "");