to avoid a warning from gcc on hosts with an unsigned type for the
st_size member.
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));
+ << (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)));
sprintf (p, "%8s ",
human_readable (size, hbuf, 1,