summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyohei Uto <im@kyoheiu.dev>2024-03-03 11:32:22 +0900
committerKyohei Uto <im@kyoheiu.dev>2024-03-03 11:32:27 +0900
commitb0ce98e39b4ee369b2ab1d602381734c08c8a4a3 (patch)
tree41236f632e763294de608ebf21d4f5a07d28f717
parentb1e69d6d4479f4f9a8eb044d00dc4967bbd262c1 (diff)
Show pointed path when symlink
-rw-r--r--src/state.rs94
1 files changed, 53 insertions, 41 deletions
diff --git a/src/state.rs b/src/state.rs
index 23c17dc..6deac74 100644
--- a/src/state.rs
+++ b/src/state.rs
@@ -1647,56 +1647,68 @@ impl State {
/// Return footer string.
fn make_footer(&self, item: &ItemInfo) -> String {
- match &item.file_ext {
- Some(ext) => {
- let footer = match item.permissions {
- Some(permissions) => {
- format!(
- " {}/{} {} {} {}",
+ let mut footer = String::new();
+ if item.file_type == FileType::Symlink {
+ footer = " linked to: ".to_owned();
+ match &item.symlink_dir_path {
+ Some(true_path) => {
+ footer.push_str(true_path.to_str().unwrap_or("(invalid unicode path)"))
+ }
+ None => match fs::read_link(&item.file_path) {
+ Ok(true_path) => {
+ footer.push_str(true_path.to_str().unwrap_or("(invalid unicode path)"))
+ }
+ Err(_) => footer.push_str("Broken link"),
+ },
+ }
+ } else {
+ match &item.file_ext {
+ Some(ext) => {
+ footer = match item.permissions {
+ Some(permissions) => {
+ format!(
+ " {}/{} {} {} {}",
+ self.layout.nums.index + 1,
+ self.list.len(),
+ ext.clone(),
+ to_proper_size(item.file_size),
+ convert_to_permissions(permissions)
+ )
+ }
+ None => format!(
+ " {}/{} {} {}",
self.layout.nums.index + 1,
self.list.len(),
ext.clone(),
to_proper_size(item.file_size),
- convert_to_permissions(permissions)
- )
- }
- None => format!(
- " {}/{} {} {}",
- self.layout.nums.index + 1,
- self.list.len(),
- ext.clone(),
- to_proper_size(item.file_size),
- ),
- };
- footer
- .chars()
- .take(self.layout.terminal_column.into())
- .collect()
- }
- None => {
- let footer = match item.permissions {
- Some(permissions) => {
- format!(
- " {}/{} {} {}",
+ ),
+ };
+ }
+ None => {
+ footer = match item.permissions {
+ Some(permissions) => {
+ format!(
+ " {}/{} {} {}",
+ self.layout.nums.index + 1,
+ self.list.len(),
+ to_proper_size(item.file_size),
+ convert_to_permissions(permissions)
+ )
+ }
+ None => format!(
+ " {}/{} {}",
self.layout.nums.index + 1,
self.list.len(),
to_proper_size(item.file_size),
- convert_to_permissions(permissions)
- )
- }
- None => format!(
- " {}/{} {}",
- self.layout.nums.index + 1,
- self.list.len(),
- to_proper_size(item.file_size),
- ),
- };
- footer
- .chars()
- .take(self.layout.terminal_column.into())
- .collect()
+ ),
+ };
+ }
}
}
+ footer
+ .chars()
+ .take(self.layout.terminal_column.into())
+ .collect()
}
/// Scroll down previewed text.