less-wide df(1) output

"Jeremy C. Reed" <[email protected]>
Newsgroups gmane.os.netbsd.devel.general
Message-ID <[email protected]>
What do you think of the following?

$ ./df -i
Filesystem  512-blocks     Used     Avail %Used  iused   ifree %iused Mounted on
/dev/wd0a       295618    61082    219754  21%    3013   34425    8%  /
/dev/wd0e     11508272  1594582   9338276  14%   62886 1383128    4%  /usr

It saves a few characters and doesn't wrap (standard 80 characters).
This could make it more readable in daily report, for example.

Plus with -P switch get near old behavior:

$ ./df -iP
Filesystem  512-blocks     Used Available Capacity  iused   ifree %iused Mounted on
/dev/wd0a       295618    61082    219754    21%     3013   34425    8%  /
/dev/wd0e     11508272  1594582   9338276    14%    62886 1383128    4%  /usr

My patch below.

Any comments?

   Jeremy C. Reed
   http://www.reedmedia.net/

--- df.c.orig	Thu Oct 11 09:31:33 2001
+++ df.c	Sat Oct  5 00:54:15 2002
@@ -350,12 +350,15 @@
 			headerlen = strlen(header);
 		} else
 			header = getbsize(&headerlen, &blocksize);
-		(void)printf("%-*.*s %s     Used %9s Capacity",
-		    maxwidth, maxwidth, "Filesystem", header,
-		    Pflag ? "Available" : "Avail");
+		if (Pflag)
+			(void)printf("%-*.*s %s     Used Available Capacity",
+			    maxwidth, maxwidth, "Filesystem", header);
+		else
+			(void)printf("%-*.*s %s     Used     Avail %%Used",
+			    maxwidth, maxwidth, "Filesystem", header);
 		if (iflag)
-			(void)printf(" iused   ifree  %%iused");
-		(void)printf("  Mounted on\n");
+			(void)printf("  iused   ifree %%iused");
+		(void)printf(" Mounted on\n");
 	}
 	(void)printf("%-*.*s", maxwidth, maxwidth, sfsp->f_mntfromname);
 	used = sfsp->f_blocks - sfsp->f_bfree;
@@ -364,17 +367,19 @@
 	    fsbtoblk(sfsp->f_blocks, sfsp->f_bsize, blocksize),
 	    fsbtoblk(used, sfsp->f_bsize, blocksize),
 	    fsbtoblk(sfsp->f_bavail, sfsp->f_bsize, blocksize));
-	(void)printf("%7s",
+	if (Pflag) (void)printf("  ");
+	(void)printf("%5s ",
 	    availblks == 0 ? full : strpct((u_long)used, (u_long)availblks, 0));
+	if (Pflag) (void)printf(" ");
 	if (iflag) {
 		inodes = sfsp->f_files;
 		used = inodes - sfsp->f_ffree;
-		(void)printf(" %7ld %7ld %6s ", used, sfsp->f_ffree,
+		(void)printf("%7ld %7ld %5s  ", used, sfsp->f_ffree,
 		    inodes == 0 ? full :
 		    strpct((u_long)used, (u_long)inodes, 0));
 	} else
-		(void)printf("  ");
-	(void)printf("  %s\n", sfsp->f_mntonname);
+		(void)printf(" ");
+	(void)printf("%s\n", sfsp->f_mntonname);
 }

 /*
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.