diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2006-08-22 03:59:14 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2006-08-22 03:59:14 +0000 |
commit | e2e9b7d2ee799d5e0b2537a1d729fd970bf91cf8 (patch) | |
tree | 83630a736b80470e55de92ea114d742419bd649a /src | |
parent | 3413a415284f1c805338d8cf628a5b9883c5479c (diff) | |
download | coreutils-e2e9b7d2ee799d5e0b2537a1d729fd970bf91cf8.tar.xz |
(print_header, show_dev): Use a column width that
depends on the block size of -P is specified and not autoscaling.
Diffstat (limited to 'src')
-rw-r--r-- | src/df.c | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -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, |