[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: PATCH: df alignment with -mP
From: |
Paul Eggert |
Subject: |
Re: PATCH: df alignment with -mP |
Date: |
Mon, 21 Aug 2006 21:02:19 -0700 |
User-agent: |
Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) |
"Gustavo G. Rondina" <address@hidden> writes:
> The usage of some options (e.g., -mP) causes a bad column alignment.
Thanks for the patch. I agree it would be better to remove all the
magic numbers -- df should align its columns automatically, the way
'ls' does. In the meantime I installed the following slightly-smaller
patch.
2006-08-21 Paul Eggert <address@hidden>
* 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
--- src/df.c 15 Aug 2006 23:41:24 -0000 1.175
+++ src/df.c 22 Aug 2006 03:59:15 -0000 1.176
@@ -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 *
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 *
}
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 *
}
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,