diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2006-01-24 23:30:46 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2006-01-24 23:30:46 +0000 |
commit | 5b917cfa592bb92be296e1370a811ada3cb17a25 (patch) | |
tree | 6edccb4b11ab937219dbc138821d4470062e769f /src | |
parent | 0efb6d171e370ab993e554385d6023888f13d30c (diff) | |
download | coreutils-5b917cfa592bb92be296e1370a811ada3cb17a25.tar.xz |
(show_dev): If the file system claims to have more available than total
blocks, report the number of used blocks as being total - available
(a negative number) rather than as garbage.
Diffstat (limited to 'src')
-rw-r--r-- | src/df.c | 21 |
1 files changed, 9 insertions, 12 deletions
@@ -1,5 +1,5 @@ /* df - summarize free disk space - Copyright (C) 91, 1995-2005 Free Software Foundation, Inc. + Copyright (C) 91, 1995-2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -231,15 +231,15 @@ excluded_fstype (const char *fstype) /* Like human_readable (N, BUF, human_output_opts, INPUT_UNITS, OUTPUT_UNITS), except: - - Return "-" if N is -1, - - If NEGATIVE is 1 then N represents a negative number, - expressed in two's complement. */ + - If NEGATIVE, then N represents a negative number, + expressed in two's complement. + - Otherwise, return "-" if N is UINTMAX_MAX. */ static char const * df_readable (bool negative, uintmax_t n, char *buf, uintmax_t input_units, uintmax_t output_units) { - if (n == UINTMAX_MAX) + if (n == UINTMAX_MAX && !negative) return "-"; else { @@ -357,20 +357,17 @@ show_dev (char const *disk, char const *mount_point, output_units = output_block_size; total = fsu.fsu_blocks; available = fsu.fsu_bavail; - negate_available = fsu.fsu_bavail_top_bit_set; + negate_available = (fsu.fsu_bavail_top_bit_set + & (available != UINTMAX_MAX)); available_to_root = fsu.fsu_bfree; } - used = -1; + used = UINTMAX_MAX; negate_used = false; if (total != UINTMAX_MAX && available_to_root != UINTMAX_MAX) { used = total - available_to_root; - if (total < available_to_root) - { - negate_used = true; - used = - used; - } + negate_used = (total < available_to_root); } printf (" %*s %*s %*s ", |