diff options
author | Jakob Kaivo <jkk@ung.org> | 2022-04-18 21:33:23 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2022-04-18 21:33:23 -0400 |
commit | abd037c8b62741b36db153a2c5df5f215eaaa223 (patch) | |
tree | 90b4f96f9b5926b3bbd611c055eb63e7ffb45f96 | |
parent | 69e61c15b1a1f90d80080936f02f74a242c44c8a (diff) |
just print single output if widest file name is too wide
-rw-r--r-- | ls.c | 28 |
1 files changed, 18 insertions, 10 deletions
@@ -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; |