From 649744dc825b8e21c1b86bd3b11c122cf7b8d3ba Mon Sep 17 00:00:00 2001 From: ariasuni Date: Tue, 20 Nov 2018 17:27:16 +0100 Subject: [PATCH] Use more accurate time to fix inconsistent sorting --- src/fs/fields.rs | 2 +- src/fs/filter.rs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/fs/fields.rs b/src/fs/fields.rs index 26d8939..14ba446 100644 --- a/src/fs/fields.rs +++ b/src/fs/fields.rs @@ -167,7 +167,7 @@ pub struct DeviceIDs { /// One of a file’s timestamps (created, accessed, or modified). -#[derive(Copy, Clone)] +#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct Time { pub seconds: time_t, pub nanoseconds: time_t, diff --git a/src/fs/filter.rs b/src/fs/filter.rs index 3b7cd4d..82440ce 100644 --- a/src/fs/filter.rs +++ b/src/fs/filter.rs @@ -245,10 +245,10 @@ impl SortField { SortField::Size => a.metadata.len().cmp(&b.metadata.len()), SortField::FileInode => a.metadata.ino().cmp(&b.metadata.ino()), - SortField::ModifiedDate => a.metadata.mtime().cmp(&b.metadata.mtime()), - SortField::AccessedDate => a.metadata.atime().cmp(&b.metadata.atime()), - SortField::CreatedDate => a.metadata.ctime().cmp(&b.metadata.ctime()), - SortField::ModifiedAge => b.metadata.mtime().cmp(&a.metadata.mtime()), // flip b and a + SortField::ModifiedDate => a.modified_time().cmp(&b.modified_time()), + SortField::AccessedDate => a.accessed_time().cmp(&b.accessed_time()), + SortField::CreatedDate => a.created_time().cmp(&b.created_time()), + SortField::ModifiedAge => b.modified_time().cmp(&a.modified_time()), // flip b and a SortField::FileType => match a.type_char().cmp(&b.type_char()) { // todo: this recomputes Ordering::Equal => natord::compare(&*a.name, &*b.name),