summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2006-08-22 03:59:14 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2006-08-22 03:59:14 +0000
commite2e9b7d2ee799d5e0b2537a1d729fd970bf91cf8 (patch)
tree83630a736b80470e55de92ea114d742419bd649a
parent3413a415284f1c805338d8cf628a5b9883c5479c (diff)
downloadcoreutils-e2e9b7d2ee799d5e0b2537a1d729fd970bf91cf8.tar.xz
(print_header, show_dev): Use a column width that
depends on the block size of -P is specified and not autoscaling.
-rw-r--r--ChangeLog7
-rw-r--r--src/df.c24
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 <eggert@cs.ucla.edu>
+
+ * 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 <jim@meyering.net>
* 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,