Module Name: src Committed By: ryo Date: Fri Aug 21 16:41:06 UTC 2020
Modified Files: src/bin/df: df.c Log Message: - Bump Size/Used/Avail from 10 to 12, and iUsed/iAvail from 8 to 10 for double-digit terabyte storage. - set the field width to the optimal, if "-h" is specified. - if blocksize is greater than M or G, reduce the size field width. To generate a diff of this commit: cvs rdiff -u -r1.96 -r1.97 src/bin/df/df.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/bin/df/df.c diff -u src/bin/df/df.c:1.96 src/bin/df/df.c:1.97 --- src/bin/df/df.c:1.96 Fri Aug 21 16:40:02 2020 +++ src/bin/df/df.c Fri Aug 21 16:41:06 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: df.c,v 1.96 2020/08/21 16:40:02 ryo Exp $ */ +/* $NetBSD: df.c,v 1.97 2020/08/21 16:41:06 ryo Exp $ */ /* * Copyright (c) 1980, 1990, 1993, 1994 @@ -45,7 +45,7 @@ __COPYRIGHT( #if 0 static char sccsid[] = "@(#)df.c 8.7 (Berkeley) 4/2/94"; #else -__RCSID("$NetBSD: df.c,v 1.96 2020/08/21 16:40:02 ryo Exp $"); +__RCSID("$NetBSD: df.c,v 1.97 2020/08/21 16:41:06 ryo Exp $"); #endif #endif /* not lint */ @@ -79,8 +79,9 @@ static int aflag, gflag, hflag, iflag, static long usize; static char **typelist; -#define WIDTH_INODE 8 -#define WIDTH_BLKSIZE 10 +#define WIDTH_INODE 10 +#define WIDTH_BLKSIZE 12 +static int blksize_width = WIDTH_BLKSIZE; int main(int argc, char *argv[]) @@ -346,9 +347,9 @@ static void prthuman(const struct statvfs *sfsp, int64_t used, int64_t bavail) { - prthumanval((int64_t)(sfsp->f_blocks * sfsp->f_frsize), WIDTH_BLKSIZE); - prthumanval((int64_t)(used * sfsp->f_frsize), 1 + WIDTH_BLKSIZE); - prthumanval((int64_t)(bavail * sfsp->f_frsize), 1 + WIDTH_BLKSIZE); + prthumanval((int64_t)(sfsp->f_blocks * sfsp->f_frsize), blksize_width); + prthumanval((int64_t)(used * sfsp->f_frsize), 1 + blksize_width); + prthumanval((int64_t)(bavail * sfsp->f_frsize), 1 + blksize_width); } /* @@ -447,10 +448,19 @@ prtstat(const struct statvfs *sfsp, int if (hflag) { header = "Size"; headerlen = (int)strlen(header); + blksize_width = 6; } else header = getbsize(&headerlen, &blocksize); break; } + + if (blocksize >= 1024 * 1024) + blksize_width -= 3; + if (blocksize >= 1024 * 1024 * 1024) + blksize_width -= 3; + if (blksize_width < headerlen) + blksize_width = headerlen; + if (Pflag) { /* * either: @@ -466,9 +476,9 @@ prtstat(const struct statvfs *sfsp, int } else { (void)printf("%-*.*s %*s %*s %*s %%Cap", maxwidth, maxwidth, "Filesystem", - WIDTH_BLKSIZE, header, - WIDTH_BLKSIZE, "Used", - WIDTH_BLKSIZE, "Avail"); + blksize_width, header, + blksize_width, "Used", + blksize_width, "Avail"); if (iflag) { (void)printf(" %*s %*s %%iCap", WIDTH_INODE, "iUsed", @@ -510,10 +520,10 @@ prtstat(const struct statvfs *sfsp, int prthuman(sfsp, used, bavail); else (void)printf("%*" PRId64 " %*" PRId64 " %*" PRId64, - WIDTH_BLKSIZE, + blksize_width, fsbtoblk(sfsp->f_blocks, sfsp->f_frsize, blocksize), - WIDTH_BLKSIZE, fsbtoblk(used, sfsp->f_frsize, blocksize), - WIDTH_BLKSIZE, fsbtoblk(bavail, sfsp->f_frsize, blocksize)); + blksize_width, fsbtoblk(used, sfsp->f_frsize, blocksize), + blksize_width, fsbtoblk(bavail, sfsp->f_frsize, blocksize)); (void)printf(" %3s%%", availblks == 0 ? full : strspct(pb, sizeof(pb), used, availblks, 0));