From 67ba4ac017674c8800f26aa51f87bf70cd222e97 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Fri, 10 Aug 2001 07:51:52 +0000 Subject: (print_long_format): If a file size is negative, assume the typical case where it has wrapped around from a positive value. --- src/ls.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ls.c b/src/ls.c index 6c2cefabc..dbbac57b2 100644 --- a/src/ls.c +++ b/src/ls.c @@ -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)); } -- cgit v1.2.3-70-g09d2