(print_long_format): If a file size is negative, assume

the typical case where it has wrapped around from a positive value.
This commit is contained in:
Jim Meyering
2001-08-10 07:51:52 +00:00
parent b84a28d9dd
commit 67ba4ac017
+10 -1
View File
@@ -2637,8 +2637,17 @@ print_long_format (const struct fileinfo *f)
else
{
char hbuf[LONGEST_HUMAN_READABLE + 1];
uintmax_t size = f->stat.st_size;
/* POSIX requires that the size be printed without a sign, even
when negative. Assume the typical case where negative sizes
are actually positive values that have wrapped around. */
if (sizeof f->stat.st_size < sizeof size)
size += ((uintmax_t) (f->stat.st_size < 0)
<< (sizeof f->stat.st_size * CHAR_BIT));
sprintf (p, "%8s ",
human_readable ((uintmax_t) f->stat.st_size, hbuf, 1,
human_readable (size, hbuf, 1,
output_block_size < 0 ? output_block_size : 1));
}