diff --git a/.gitignore b/.gitignore index 830c5ec..298e00b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ flatpak/ ci_tester/target ci_tester/Cargo.lock czkawka_slint_gui/Cargo.lock -czkawka_slint_gui/target \ No newline at end of file +czkawka_slint_gui/target +*.json \ No newline at end of file diff --git a/czkawka_core/src/common_directory.rs b/czkawka_core/src/common_directory.rs index f85390e..378c5f3 100644 --- a/czkawka_core/src/common_directory.rs +++ b/czkawka_core/src/common_directory.rs @@ -122,13 +122,21 @@ impl Directories { } // Try to canonicalize them - if let Ok(dir) = directory.canonicalize() { - directory = dir; - } + if cfg!(windows) { - let path_str = directory.to_string_lossy().to_string(); - if let Some(path_str) = path_str.strip_prefix(r"\\?\") { - directory = PathBuf::from(path_str); + // Only canonicalize if it's not a network path + // This can be check by checking if path starts with \\?\UNC\ + if let Ok(dir_can) = directory.canonicalize() { + let dir_can_str = dir_can.to_string_lossy().to_string(); + if let Some(dir_can_str) = dir_can_str.strip_prefix(r"\\?\") { + if dir_can_str.chars().nth(1) == Some(':') { + directory = PathBuf::from(dir_can_str); + } + } + } + } else { + if let Ok(dir) = directory.canonicalize() { + directory = dir; } } (Some(directory), messages)