From e2e9b7d2ee799d5e0b2537a1d729fd970bf91cf8 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 22 Aug 2006 03:59:14 +0000 Subject: [PATCH] (print_header, show_dev): Use a column width that depends on the block size of -P is specified and not autoscaling. --- ChangeLog | 7 +++++++ src/df.c | 24 ++++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2123879de..e35cb3339 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-08-21 Paul Eggert + + * src/df.c (print_header, show_dev): Use a column width that + depends on the block size of -P is specified and not autoscaling. + Problem reported by Gustavo G. Rondina in: + http://lists.gnu.org/archive/html/bug-coreutils/2006-08/msg00164.html + 2006-08-21 Jim Meyering * tests/dircolors/simple (a): Don't fail with an unexpected diagnostic diff --git a/src/df.c b/src/df.c index 7cbc5229a..7d7bf1b18 100644 --- a/src/df.c +++ b/src/df.c @@ -163,7 +163,7 @@ print_header (void) printf (_(" Size Used Avail Use%%")); } else if (posix_format) - printf (_(" %4s-blocks Used Available Capacity"), + printf (_(" %s-blocks Used Available Capacity"), umaxtostr (output_block_size, buf)); else { @@ -275,6 +275,7 @@ show_dev (char const *disk, char const *mount_point, struct fs_usage fsu; char buf[3][LONGEST_HUMAN_READABLE + 2]; int width; + int col1_adjustment = 0; int use_width; uintmax_t input_units; uintmax_t output_units; @@ -356,9 +357,19 @@ show_dev (char const *disk, char const *mount_point, } else { - width = (human_output_opts & human_autoscale - ? 5 + ! (human_output_opts & human_base_1024) - : 9); + if (human_output_opts & human_autoscale) + width = 5 + ! (human_output_opts & human_base_1024); + else + { + width = 9; + if (posix_format) + { + uintmax_t b; + col1_adjustment = -3; + for (b = output_block_size; 9 < b; b /= 10) + col1_adjustment++; + } + } use_width = ((posix_format && ! (human_output_opts & human_autoscale)) ? 8 : 4); @@ -380,8 +391,9 @@ show_dev (char const *disk, char const *mount_point, } printf (" %*s %*s %*s ", - width, df_readable (false, total, - buf[0], input_units, output_units), + width + col1_adjustment, + df_readable (false, total, + buf[0], input_units, output_units), width, df_readable (negate_used, used, buf[1], input_units, output_units), width, df_readable (negate_available, available, -- 2.34.1