diff options
author | Jon Moroney <darakian@gmail.com> | 2020-08-18 14:25:12 -0700 |
---|---|---|
committer | Jon Moroney <darakian@gmail.com> | 2020-08-18 14:25:12 -0700 |
commit | 0d525abd5676eb5c89668d397b4531ba5da16bd5 (patch) | |
tree | 69fb901c619db271cbcbb5d3562fdfb7191a2ee8 | |
parent | 6fe847896e36ab686fb8dd8d509566052131d4bd (diff) |
Canonicalize after getting metadata. Canonicalizing follows symlinksdebug-win-lang-issue
-rw-r--r-- | src/lib.rs | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -54,24 +54,27 @@ pub fn deduplicate_dirs<P: AsRef<Path> + Sync>(search_dirs: Vec<P>) -> (Vec<File } fn traverse_and_spawn(current_path: impl AsRef<Path>, sender: Sender<ChannelPackage>) -> (){ - let current_path = match fs::canonicalize(¤t_path) { - Err(e) => { + let current_path_metadata = match fs::symlink_metadata(¤t_path) { + Err(e) =>{ sender.send( ChannelPackage::Fail(current_path.as_ref().to_path_buf(), e) ).expect("Error sending new ChannelPackage::Fail"); return }, - Ok(can_path) => can_path, + Ok(meta) => meta, }; - let current_path_metadata = match fs::symlink_metadata(¤t_path) { - Err(e) =>{ + let current_path = match fs::canonicalize(¤t_path) { + Err(e) => { sender.send( - ChannelPackage::Fail(current_path.to_path_buf(), e) + ChannelPackage::Fail(current_path.as_ref().to_path_buf(), e) ).expect("Error sending new ChannelPackage::Fail"); return }, - Ok(meta) => meta, + Ok(canonical_path) => canonical_path, }; + if !current_path_metadata.file_type().is_file() && !current_path_metadata.file_type().is_dir(){ + println!("Operating on \n{:?}\n{:?}", current_path, current_path_metadata); + } if current_path_metadata.file_type().is_symlink(){ sender.send( ChannelPackage::Fail(current_path.to_path_buf(), Error::new(ErrorKind::Other, "Path is symlink")) |