diff --git a/czkawka_core/src/common_directory.rs b/czkawka_core/src/common_directory.rs index c365d24..9297ed5 100644 --- a/czkawka_core/src/common_directory.rs +++ b/czkawka_core/src/common_directory.rs @@ -23,7 +23,33 @@ impl Directories { } pub fn set_reference_directory(&mut self, reference_directory: Vec) { - self.reference_directories = reference_directory; + self.reference_directories = reference_directory + .iter() + .map(|d| { + let mut directory = d.clone(); + if directory.to_string_lossy().contains('*') { + return None; + } + + if !directory.exists() { + return None; + } + if !directory.is_dir() { + return None; + } + + // Try to canonicalize them + if let Ok(dir) = directory.canonicalize() { + directory = dir; + } + if cfg!(windows) { + directory = PathBuf::from(directory.strip_prefix(r"\\?\").unwrap_or(&directory)); + } + Some(directory) + }) + .filter(|d| d.is_some()) + .map(|d| d.unwrap()) + .collect::>(); } pub fn set_included_directory(&mut self, included_directory: Vec) -> Messages {