From 72aaf0c5d10db0004d48e27c58d18d8f2c568f8f Mon Sep 17 00:00:00 2001 From: Jeff Zhao Date: Mon, 21 Jun 2021 21:41:04 -0400 Subject: fix not displaying directories without proper permissions - e.g. /root does not appear because we can't count the number of items inside it - add a space padding to the file size/directory size --- src/fs/metadata.rs | 3 ++- src/ui/widgets/tui_dirlist_detailed.rs | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/fs/metadata.rs b/src/fs/metadata.rs index cc3e0c6..b3f6492 100644 --- a/src/fs/metadata.rs +++ b/src/fs/metadata.rs @@ -40,7 +40,8 @@ impl JoshutoMetadata { let _modified = metadata.modified()?; let _permissions = metadata.permissions(); let (_file_type, _directory_size) = if metadata.file_type().is_dir() { - (FileType::Directory, Some(fs::read_dir(path)?.count())) + let _directory_size = fs::read_dir(path).map(|s| s.count()).ok(); + (FileType::Directory, _directory_size) } else { (FileType::File, None) }; diff --git a/src/ui/widgets/tui_dirlist_detailed.rs b/src/ui/widgets/tui_dirlist_detailed.rs index 08777ed..16dec1a 100644 --- a/src/ui/widgets/tui_dirlist_detailed.rs +++ b/src/ui/widgets/tui_dirlist_detailed.rs @@ -84,8 +84,8 @@ fn print_entry( FileType::Directory => entry .metadata .directory_size() - .expect("Directory doesn't have size") - .to_string(), + .map(|n| n.to_string()) + .unwrap_or("".to_string()), FileType::File => format::file_size_to_string(entry.metadata.len()), }; let symlink_string = match entry.metadata.link_type() { @@ -93,7 +93,7 @@ fn print_entry( LinkType::Symlink(_) => "-> ", }; let left_label_original = entry.label(); - let right_label_original = format!(" {}{}", symlink_string, size_string); + let right_label_original = format!(" {}{} ", symlink_string, size_string); let (left_label, right_label) = factor_labels_for_entry( left_label_original, -- cgit v1.2.3