summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Moroney <darakian@gmail.com>2020-08-18 14:25:12 -0700
committerJon Moroney <darakian@gmail.com>2020-08-18 14:25:12 -0700
commit0d525abd5676eb5c89668d397b4531ba5da16bd5 (patch)
tree69fb901c619db271cbcbb5d3562fdfb7191a2ee8
parent6fe847896e36ab686fb8dd8d509566052131d4bd (diff)
Canonicalize after getting metadata. Canonicalizing follows symlinksdebug-win-lang-issue
-rw-r--r--src/lib.rs17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 64e7cce..41bd2ee 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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(&current_path) {
- Err(e) => {
+ let current_path_metadata = match fs::symlink_metadata(&current_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(&current_path) {
- Err(e) =>{
+ let current_path = match fs::canonicalize(&current_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"))