From 26a4074d8a8b97dca9286c304184272937d80a9affe78ee83ea98d6ea1a7ba7d Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Wed, 22 Jul 2026 01:02:34 -0400 Subject: [PATCH] Respect size, print summary. --- cudir.cc | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/cudir.cc b/cudir.cc index d1ac35c..11b0bf2 100644 --- a/cudir.cc +++ b/cudir.cc @@ -35,7 +35,7 @@ getEntries( const std::filesystem::path where ) namespace C { - constexpr int dirwidth= 9; + constexpr int sizeWidth= 14; constexpr int dateWidth= "82-12-21"s.size(); constexpr int timeWidth= "12:34"s.size(); } @@ -50,7 +50,7 @@ main() const auto widest= std::max_element( begin( entries ), end( entries ), []( const auto &lhs, const auto &rhs ) { return lhs.name.size() < rhs.name.size(); } )->name.size(); - const int rowWidth= widest + C::filePadding + C::dirwidth + 3 + 10 + 2 + C::dateWidth + 1 + C::timeWidth; + const int rowWidth= widest + C::filePadding + C::sizeWidth + 2 + 10 + 2 + C::dateWidth + 1 + C::timeWidth; std::cout << ""; for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500"; @@ -58,21 +58,26 @@ main() for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500"; std::cout << "" << std::endl; + std::size_t fileCount= 0; + std::size_t totalSize= 0; + std::size_t totalStorage= 0; bool side= false; for( const auto &entry: entries ) { + ++fileCount; + totalSize+= entry.size; std::cout << format_entry( entry, widest ) << " "; if( entry.is_dir ) { std::cout << ""; - std::cout << std::setw( C::dirwidth - 2 ) << std::setfill( ' ' ) << std::right << "" << ' '; + std::cout << std::setw( C::sizeWidth - 1 ) << std::setfill( ' ' ) << std::right << "" << ' '; } else { //std::cout << " "; - std::cout << "\e[1;33;93m" << std::setw( C::dirwidth - 1 ) << std::setfill( ' ' ) << entry.size; + std::cout << "\e[1;33;93m" << std::setw( C::sizeWidth ) << std::setfill( ' ' ) << entry.size; } - std::cout << " "; + std::cout << " "; std::cout << "" << entry.perms << ""; std::cout << " "; @@ -110,5 +115,8 @@ main() for( int i= 0; i < rowWidth; ++i ) std::cout << "\u2500"; std::cout << "" << std::endl; + std::cout << std::setw( C::sizeWidth ) << std::setfill( ' ' ) << std::right << "\e[;1;36;96m" << fileCount; + std::cout << "\e[;1;32;92m files totaling \e[;1;36;96m" << totalSize << "\e[;1;32;92m bytes.\e[m" << std::endl; + return EXIT_SUCCESS; }