diff --git a/czkawka_core/src/big_file.rs b/czkawka_core/src/big_file.rs index 35300fb..6c9d23a 100644 --- a/czkawka_core/src/big_file.rs +++ b/czkawka_core/src/big_file.rs @@ -207,7 +207,13 @@ impl BigFile { path: current_file_name.clone(), size: metadata.len(), modified_date: match metadata.modified() { - Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(), + Ok(t) => match t.duration_since(UNIX_EPOCH) { + Ok(d) => d.as_secs(), + Err(_) => { + self.text_messages.warnings.push(format!("File {} seems to be modified before Unix Epoch.", current_file_name)); + 0 + } + }, Err(_) => { self.text_messages.warnings.push("Unable to get modification date from file ".to_string() + current_file_name.as_str()); continue; diff --git a/czkawka_core/src/duplicate.rs b/czkawka_core/src/duplicate.rs index 7a46244..b2eba7a 100644 --- a/czkawka_core/src/duplicate.rs +++ b/czkawka_core/src/duplicate.rs @@ -286,7 +286,13 @@ impl DuplicateFinder { path: current_file_name.clone(), size: metadata.len(), modified_date: match metadata.modified() { - Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(), + Ok(t) => match t.duration_since(UNIX_EPOCH) { + Ok(d) => d.as_secs(), + Err(_) => { + self.text_messages.warnings.push(format!("File {} seems to be modified before Unix Epoch.", current_file_name)); + 0 + } + }, Err(_) => { self.text_messages.warnings.push("Unable to get modification date from file ".to_string() + current_file_name.as_str()); continue; diff --git a/czkawka_core/src/empty_files.rs b/czkawka_core/src/empty_files.rs index f081d29..0504014 100644 --- a/czkawka_core/src/empty_files.rs +++ b/czkawka_core/src/empty_files.rs @@ -232,7 +232,13 @@ impl EmptyFiles { let fe: FileEntry = FileEntry { path: current_file_name.clone(), modified_date: match metadata.modified() { - Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(), + Ok(t) => match t.duration_since(UNIX_EPOCH) { + Ok(d) => d.as_secs(), + Err(_) => { + self.text_messages.warnings.push(format!("File {} seems to be modified before Unix Epoch.", current_file_name)); + 0 + } + }, Err(_) => { self.text_messages.warnings.push("Unable to get modification date from file ".to_string() + current_file_name.as_str()); continue; diff --git a/czkawka_core/src/empty_folder.rs b/czkawka_core/src/empty_folder.rs index e5d21e4..3e33695 100644 --- a/czkawka_core/src/empty_folder.rs +++ b/czkawka_core/src/empty_folder.rs @@ -182,7 +182,13 @@ impl EmptyFolder { parent_path: Option::from(current_folder.clone()), is_empty: FolderEmptiness::Maybe, modified_date: match metadata.modified() { - Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(), + Ok(t) => match t.duration_since(UNIX_EPOCH) { + Ok(d) => d.as_secs(), + Err(_) => { + self.text_messages.warnings.push(format!("Folder {} seems to be modified before Unix Epoch.", current_folder)); + 0 + } + }, Err(_) => { self.text_messages.warnings.push(format!("Failed to read modification date of folder {}", current_folder)); continue; diff --git a/czkawka_core/src/temporary.rs b/czkawka_core/src/temporary.rs index db14ba5..845a5c3 100644 --- a/czkawka_core/src/temporary.rs +++ b/czkawka_core/src/temporary.rs @@ -222,7 +222,13 @@ impl Temporary { let fe: FileEntry = FileEntry { path: current_file_name.clone(), modified_date: match metadata.modified() { - Ok(t) => t.duration_since(UNIX_EPOCH).expect("Invalid file date").as_secs(), + Ok(t) => match t.duration_since(UNIX_EPOCH) { + Ok(d) => d.as_secs(), + Err(_) => { + self.text_messages.warnings.push(format!("File {} seems to be modified before Unix Epoch.", current_file_name)); + 0 + } + }, Err(_) => { self.text_messages.warnings.push("Unable to get modification date from file ".to_string() + current_file_name.as_str()); continue;