From ccc2dbc547bd748ecf5141d0b24b67acd73c7640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20Kaan=20G=C3=9CM=C3=9C=C5=9E?= <96421894+Tahinli@users.noreply.github.com> Date: Sat, 4 Nov 2023 20:59:16 +0300 Subject: [PATCH] fix: Symlink Detection --- src/main.rs | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index ac828c1..d4fcedb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -82,7 +82,9 @@ impl FileInfo { //Recursivity Problem println!("\n\tError: Symlink Transfers've not Supported yet\n"); - return; + //return; + self.open_file(debug_mode); + self.send_file(stream, debug_mode); } else if Metadata::is_file(metadata) { @@ -123,19 +125,37 @@ impl FileInfo } fn read_metadata(&mut self, debug_mode:&bool) { - match fs::metadata(&self.location.as_ref().unwrap()) + let path = PathBuf::from(self.location.as_ref().unwrap()); + if path.is_symlink() { - Ok(metadata) => + match path.symlink_metadata() { - self.metadata = Some(metadata); - if *debug_mode + Ok(metadata) => { - println!("Done: Read Metadata -> {:#?}", self.metadata); + self.metadata = Some(metadata); + } + Err(err_val) => + { + println!("Error: Symlink Metadata -> {:#?} | Error: {}", &self.location, err_val); } } - Err(err_val) => + } + else + { + match fs::metadata(&self.location.as_ref().unwrap()) { - println!("Error: Read Metadata -> {} | Error: {}", &self.location.as_ref().unwrap(), err_val); + Ok(metadata) => + { + self.metadata = Some(metadata); + if *debug_mode + { + println!("Done: Read Metadata -> {:#?}", self.metadata); + } + } + Err(err_val) => + { + println!("Error: Read Metadata -> {} | Error: {}", &self.location.as_ref().unwrap(), err_val); + } } } }