summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-04-09 18:46:06 +0200
committerrabite <rabite@posteo.de>2019-04-09 18:46:06 +0200
commite3c2f3e4ec160945e7d0cf8167ddd7c08e2e8bf5 (patch)
treefdfec6ed5a4f1004891bbeb8241e78bf4fb703a6
parentca5b53e1fb541db89d167e06f2352bcfd2473199 (diff)
parent0eedd7da7f6c447cfa0e5417d1e618bb18c8d817 (diff)
Merge branch 'master' into evil
-rw-r--r--src/files.rs33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/files.rs b/src/files.rs
index 637b99a..f374974 100644
--- a/src/files.rs
+++ b/src/files.rs
@@ -19,6 +19,7 @@ use chrono::TimeZone;
use failure::Error;
use notify::DebouncedEvent;
use rayon::{ThreadPool, ThreadPoolBuilder};
+use alphanumeric_sort::compare_str;
use crate::fail::{HResult, HError, ErrorLog};
use crate::dirty::{AsyncDirtyBit, DirtyBit, Dirtyable};
@@ -266,23 +267,41 @@ impl Files {
match self.sort {
SortBy::Name => self
.files
- .sort_by(|a, b| alphanumeric_sort::compare_str(&a.name, &b.name)),
+ .sort_by(|a, b| {
+ compare_str(&a.name, &b.name)
+ }),
SortBy::Size => {
self.meta_all_sync().log();
self.files.sort_by(|a, b| {
- if a.meta().unwrap().size() == b.meta().unwrap().size() {
- return alphanumeric_sort::compare_str(&b.name, &a.name);
+ match (a.meta(), b.meta()) {
+ (Ok(a_meta), Ok(b_meta)) => {
+ if a_meta.size() == b_meta.size() {
+ compare_str(&b.name, &a.name)
+ } else {
+ a_meta.size().cmp(&b_meta.size()).reverse()
+ }
+
+ }
+ _ => return std::cmp::Ordering::Equal
}
- a.meta().unwrap().size().cmp(&b.meta().unwrap().size()).reverse()
+
+
});
}
SortBy::MTime => {
self.meta_all_sync().log();
self.files.sort_by(|a, b| {
- if a.meta().unwrap().mtime() == b.meta().unwrap().mtime() {
- return alphanumeric_sort::compare_str(&a.name, &b.name);
+ match (a.meta(), b.meta()) {
+ (Ok(a_meta), Ok(b_meta)) => {
+ if a_meta.mtime() == b_meta.mtime() {
+ compare_str(&b.name, &a.name)
+ } else {
+ a_meta.mtime().cmp(&b_meta.mtime()).reverse()
+ }
+
+ }
+ _ => return std::cmp::Ordering::Equal
}
- a.meta().unwrap().mtime().cmp(&b.meta().unwrap().mtime())
});
}
};