@@ -35,9 +35,9 @@ pub struct WalkData<'a> {
35
35
pub filter_regex : & ' a [ Regex ] ,
36
36
pub invert_filter_regex : & ' a [ Regex ] ,
37
37
pub allowed_filesystems : HashSet < u64 > ,
38
- pub filter_modified_time : ( Operater , i64 ) ,
39
- pub filter_accessed_time : ( Operater , i64 ) ,
40
- pub filter_changed_time : ( Operater , i64 ) ,
38
+ pub filter_modified_time : Option < ( Operater , i64 ) > ,
39
+ pub filter_accessed_time : Option < ( Operater , i64 ) > ,
40
+ pub filter_changed_time : Option < ( Operater , i64 ) > ,
41
41
pub use_apparent_size : bool ,
42
42
pub by_filecount : bool ,
43
43
pub ignore_hidden : bool ,
@@ -116,27 +116,33 @@ fn ignore_file(entry: &DirEntry, walk_data: &WalkData) -> bool {
116
116
let is_dot_file = entry. file_name ( ) . to_str ( ) . unwrap_or ( "" ) . starts_with ( '.' ) ;
117
117
let is_ignored_path = walk_data. ignore_directories . contains ( & entry. path ( ) ) ;
118
118
119
- let size_inode_device = get_metadata ( entry. path ( ) , false ) ;
120
- if let Some ( ( _size, Some ( ( _id, dev) ) , ( modified_time, accessed_time, changed_time) ) ) =
121
- size_inode_device
122
- {
123
- if !walk_data. allowed_filesystems . is_empty ( )
124
- && !walk_data. allowed_filesystems . contains ( & dev)
125
- {
126
- return true ;
119
+ if !walk_data. allowed_filesystems . is_empty ( ) {
120
+ let size_inode_device = get_metadata ( entry. path ( ) , false ) ;
121
+ if let Some ( ( _size, Some ( ( _id, dev) ) , _gunk) ) = size_inode_device {
122
+ if !walk_data. allowed_filesystems . contains ( & dev) {
123
+ return true ;
124
+ }
127
125
}
128
- if entry. path ( ) . is_file ( )
129
- && [
130
- ( & walk_data. filter_modified_time , modified_time) ,
131
- ( & walk_data. filter_accessed_time , accessed_time) ,
132
- ( & walk_data. filter_changed_time , changed_time) ,
133
- ]
134
- . iter ( )
135
- . any ( |( filter_time, actual_time) | {
136
- is_filtered_out_due_to_file_time ( filter_time, * actual_time)
137
- } )
138
- {
139
- return true ;
126
+ }
127
+ if walk_data. filter_accessed_time . is_some ( )
128
+ || walk_data. filter_modified_time . is_some ( )
129
+ || walk_data. filter_changed_time . is_some ( )
130
+ {
131
+ let size_inode_device = get_metadata ( entry. path ( ) , false ) ;
132
+ if let Some ( ( _, _, ( modified_time, accessed_time, changed_time) ) ) = size_inode_device {
133
+ if entry. path ( ) . is_file ( )
134
+ && [
135
+ ( & walk_data. filter_modified_time , modified_time) ,
136
+ ( & walk_data. filter_accessed_time , accessed_time) ,
137
+ ( & walk_data. filter_changed_time , changed_time) ,
138
+ ]
139
+ . iter ( )
140
+ . any ( |( filter_time, actual_time) | {
141
+ is_filtered_out_due_to_file_time ( filter_time, * actual_time)
142
+ } )
143
+ {
144
+ return true ;
145
+ }
140
146
}
141
147
}
142
148
0 commit comments