From: Jim Meyering Date: Fri, 10 Aug 2001 07:51:52 +0000 (+0000) Subject: (print_long_format): If a file size is negative, assume X-Git-Tag: TEXTUTILS-2_0_15~474 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=67ba4ac017674c8800f26aa51f87bf70cd222e97;p=thirdparty%2Fcoreutils.git (print_long_format): If a file size is negative, assume the typical case where it has wrapped around from a positive value. --- diff --git a/src/ls.c b/src/ls.c index 6c2cefabcd..dbbac57b2d 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)); }