diff options
author | Sebastian Thiel <sebastian.thiel@icloud.com> | 2020-03-15 20:23:10 +0800 |
---|---|---|
committer | Sebastian Thiel <sebastian.thiel@icloud.com> | 2020-03-15 20:24:30 +0800 |
commit | 4990fa4202f2b687ee2476efe0a406fdfe23fd96 (patch) | |
tree | 79ad1e0379c2e233e4e416aafbc32e24bb0352ce /src/traverse.rs | |
parent | e873656d53d4071f70e73514a96eaa4cbfd23fc4 (diff) |
Upgrade to jwalk 0.5; stop following symlinks during traversalv2.3.4
Diffstat (limited to 'src/traverse.rs')
-rw-r--r-- | src/traverse.rs | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/src/traverse.rs b/src/traverse.rs index a65595e..ffbd5d9 100644 --- a/src/traverse.rs +++ b/src/traverse.rs @@ -88,34 +88,36 @@ impl Traversal { let mut data = EntryData::default(); match entry { Ok(entry) => { + let metadata = entry.metadata(); data.name = if entry.depth < 1 { path.clone().into() } else { entry.file_name }; - let file_size = match entry.metadata { - Some(Ok(ref m)) if !m.is_dir() && (walk_options.count_hard_links || inodes.add(m)) => { - if walk_options.apparent_size { - m.len() - } else { - filesize::file_real_size_fast(&data.name, m) - .unwrap_or_else(|_| { - t.io_errors += 1; - data.metadata_io_error = true; - 0 - }) - } - }, - Some(Ok(_)) => 0, - Some(Err(_)) => { - t.io_errors += 1; - data.metadata_io_error = true; - 0 + let file_size = match metadata { + Ok(ref m) + if !m.is_dir() + && (walk_options.count_hard_links || inodes.add(m)) => + { + if walk_options.apparent_size { + m.len() + } else { + filesize::file_real_size_fast(&data.name, m).unwrap_or_else( + |_| { + t.io_errors += 1; + data.metadata_io_error = true; + 0 + }, + ) } - None => unreachable!( - "we ask for metadata, so we at least have Some(Err(..))). Issue in jwalk?" - ), - }; + } + Ok(_) => 0, + Err(_) => { + t.io_errors += 1; + data.metadata_io_error = true; + 0 + } + }; match (entry.depth, previous_depth) { (n, p) if n > p => { |