(print_long_format): Simplify previous patch for
authorJim Meyering <jim@meyering.net>
Fri, 10 Aug 2001 19:01:54 +0000 (19:01 +0000)
committerJim Meyering <jim@meyering.net>
Fri, 10 Aug 2001 19:01:54 +0000 (19:01 +0000)
listing negative sizes, by adding OFF_T_MAX - OFF_T_MIN + 1
instead of doing a fancy conditional shift.  This is simpler
and it avoids GCC's bogus compile-time warning about shift
counts.  (As a bonus, it is portable to hosts that do not use
twos-complement arithmetic.  :-)

src/ls.c

index ec730d8..5065d56 100644 (file)
--- a/src/ls.c
+++ b/src/ls.c
@@ -2642,13 +2642,7 @@ print_long_format (const struct fileinfo *f)
       /* 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
-                    /* This final term has no effect other than to suppress
-                       a warning about the shift count being larger than the
-                       width of the type.  */
-                    * (sizeof f->stat.st_size < sizeof size)));
+      size += (f->stat.st_size < 0) * ((uintmax_t) OFF_T_MAX - OFF_T_MIN + 1);
 
       sprintf (p, "%8s ",
               human_readable (size, hbuf, 1,