Merge pull request #443 from ariasuni/fix-sorting-by-time

Use more accurate time (fix inconsistent sorting)
This commit is contained in:
Benjamin Sago 2018-12-06 21:11:38 +00:00 committed by GitHub
commit dac96719d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 5 deletions

View File

@ -167,7 +167,7 @@ pub struct DeviceIDs {
/// One of a files timestamps (created, accessed, or modified). /// One of a files timestamps (created, accessed, or modified).
#[derive(Copy, Clone)] #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct Time { pub struct Time {
pub seconds: time_t, pub seconds: time_t,
pub nanoseconds: time_t, pub nanoseconds: time_t,

View File

@ -245,10 +245,10 @@ impl SortField {
SortField::Size => a.metadata.len().cmp(&b.metadata.len()), SortField::Size => a.metadata.len().cmp(&b.metadata.len()),
SortField::FileInode => a.metadata.ino().cmp(&b.metadata.ino()), SortField::FileInode => a.metadata.ino().cmp(&b.metadata.ino()),
SortField::ModifiedDate => a.metadata.mtime().cmp(&b.metadata.mtime()), SortField::ModifiedDate => a.modified_time().cmp(&b.modified_time()),
SortField::AccessedDate => a.metadata.atime().cmp(&b.metadata.atime()), SortField::AccessedDate => a.accessed_time().cmp(&b.accessed_time()),
SortField::CreatedDate => a.metadata.ctime().cmp(&b.metadata.ctime()), SortField::CreatedDate => a.created_time().cmp(&b.created_time()),
SortField::ModifiedAge => b.metadata.mtime().cmp(&a.metadata.mtime()), // flip b and a 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 SortField::FileType => match a.type_char().cmp(&b.type_char()) { // todo: this recomputes
Ordering::Equal => natord::compare(&*a.name, &*b.name), Ordering::Equal => natord::compare(&*a.name, &*b.name),