From: Paul Eggert Date: Wed, 25 Mar 2009 21:16:46 +0000 (-0700) Subject: df: fix a bug when totaling unknown values X-Git-Tag: v7.2~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c04cb1274c492344aa0adbe453903a017d33c744;p=thirdparty%2Fcoreutils.git df: fix a bug when totaling unknown values * src/df.c (show_dev): Don't add UINTMAX_MAX to grand totals, as that value indicates that the true value is unknown; adding it effectively subtracts 1 from the total, whereas we want to leave the total alone. --- diff --git a/src/df.c b/src/df.c index 0bb3b1e5c2..bb24934d5e 100644 --- a/src/df.c +++ b/src/df.c @@ -393,8 +393,10 @@ show_dev (char const *disk, char const *mount_point, negate_available = false; available_to_root = available; - grand_fsu.fsu_files += total; - grand_fsu.fsu_ffree += available; + if (total != UINTMAX_MAX) + grand_fsu.fsu_files += total; + if (available != UINTMAX_MAX) + grand_fsu.fsu_ffree += available; } else { @@ -422,11 +424,14 @@ show_dev (char const *disk, char const *mount_point, & (available != UINTMAX_MAX)); available_to_root = fsu.fsu_bfree; - grand_fsu.fsu_blocks += input_units * total; - grand_fsu.fsu_bfree += input_units * available_to_root; - add_uint_with_neg_flag (&grand_fsu.fsu_bavail, - &grand_fsu.fsu_bavail_top_bit_set, - input_units * available, negate_available); + if (total != UINTMAX_MAX) + grand_fsu.fsu_blocks += input_units * total; + if (available_to_root != UINTMAX_MAX) + grand_fsu.fsu_bfree += input_units * available_to_root; + if (available != UINTMAX_MAX) + add_uint_with_neg_flag (&grand_fsu.fsu_bavail, + &grand_fsu.fsu_bavail_top_bit_set, + input_units * available, negate_available); } used = UINTMAX_MAX;