From abd037c8b62741b36db153a2c5df5f215eaaa223 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Mon, 18 Apr 2022 21:33:23 -0400 Subject: just print single output if widest file name is too wide --- ls.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/ls.c b/ls.c index eb4e7c6..9ed6673 100644 --- a/ls.c +++ b/ls.c @@ -394,16 +394,6 @@ static void ls_print_long(size_t n, struct file_info files[static n]) } } -static void ls_print_single(size_t n, struct file_info files[static n]) -{ - for (size_t i = 0; i < n; i++) { - if (ls_print_inodes) { - printf("%ju ", (uintmax_t)files[i].st.st_ino); - } - printf("%s\n", ls_filename(files + i)); - } -} - static size_t ls_get_columns(void) { static size_t columns = 0; @@ -446,10 +436,24 @@ static void ls_print_serial(size_t n, struct file_info files[static n]) printf("%s\n", ls_filename(files + n - 1)); } +static void ls_print_single(size_t n, struct file_info files[static n]) +{ + for (size_t i = 0; i < n; i++) { + if (ls_print_inodes) { + printf("%ju ", (uintmax_t)files[i].st.st_ino); + } + printf("%s\n", ls_filename(files + i)); + } +} + static void ls_print_columns(size_t n, struct file_info files[static n]) { size_t widest = ls_find_widest(n, files); size_t columns = ls_get_columns(); + if (widest > columns / 2) { + ls_print_single(n, files); + return; + } size_t ncolumns = columns / widest; if (ls_print_inodes) { ncolumns /= 2; @@ -484,6 +488,10 @@ static void ls_print_rows(size_t n, struct file_info files[static n]) { size_t widest = ls_find_widest(n, files); size_t columns = ls_get_columns(); + if (widest > columns / 2) { + ls_print_single(n, files); + return; + } size_t ncolumns = columns / widest; if (ncolumns == 0) { ncolumns = 1; -- cgit v1.2.1