Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Feb 2012 09:20:34 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r231260 - stable/9/bin/df
Message-ID:  <201202090920.q199KYwJ091533@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bapt
Date: Thu Feb  9 09:20:34 2012
New Revision: 231260
URL: http://svn.freebsd.org/changeset/base/231260

Log:
  MFH r226502,r226503: factor out the common code and fix two display bugs
  
  Approved by:	des (mentor)

Modified:
  stable/9/bin/df/df.1
  stable/9/bin/df/df.c
Directory Properties:
  stable/9/bin/df/   (props changed)

Modified: stable/9/bin/df/df.1
==============================================================================
--- stable/9/bin/df/df.1	Thu Feb  9 09:01:03 2012	(r231259)
+++ stable/9/bin/df/df.1	Thu Feb  9 09:20:34 2012	(r231260)
@@ -29,7 +29,7 @@
 .\"     @(#)df.1	8.3 (Berkeley) 5/8/95
 .\" $FreeBSD$
 .\"
-.Dd November 23, 2008
+.Dd October 18, 2011
 .Dt DF 1
 .Os
 .Sh NAME
@@ -63,6 +63,7 @@ The following options are available:
 Show all mount points, including those that were mounted with the
 .Dv MNT_IGNORE
 flag.
+This is implied for file systems specified on the command line.
 .It Fl b
 Use 512-byte blocks rather than the default.
 Note that

Modified: stable/9/bin/df/df.c
==============================================================================
--- stable/9/bin/df/df.c	Thu Feb  9 09:01:03 2012	(r231259)
+++ stable/9/bin/df/df.c	Thu Feb  9 09:20:34 2012	(r231260)
@@ -107,7 +107,7 @@ main(int argc, char *argv[])
 	const char *fstype;
 	char *mntpath, *mntpt;
 	const char **vfslist;
-	size_t i, mntsize;
+	int i, mntsize;
 	int ch, rv;
 
 	fstype = "ufs";
@@ -187,30 +187,21 @@ main(int argc, char *argv[])
 	argc -= optind;
 	argv += optind;
 
-	mntsize = getmntinfo(&mntbuf, MNT_NOWAIT);
-	bzero(&maxwidths, sizeof(maxwidths));
-	for (i = 0; i < mntsize; i++)
-		update_maxwidths(&maxwidths, &mntbuf[i]);
-
 	rv = 0;
 	if (!*argv) {
+		/* everything (modulo -t) */
+		mntsize = getmntinfo(&mntbuf, MNT_NOWAIT);
 		mntsize = regetmntinfo(&mntbuf, mntsize, vfslist);
-		bzero(&maxwidths, sizeof(maxwidths));
-		for (i = 0; i < mntsize; i++) {
-			if (cflag)
-				addstat(&totalbuf, &mntbuf[i]);
-			update_maxwidths(&maxwidths, &mntbuf[i]);
-		}
-		if (cflag)
-			update_maxwidths(&maxwidths, &totalbuf);
-		for (i = 0; i < mntsize; i++)
-			if (aflag || (mntbuf[i].f_flags & MNT_IGNORE) == 0)
-				prtstat(&mntbuf[i], &maxwidths);
-		if (cflag)
-			prtstat(&totalbuf, &maxwidths);
-		exit(rv);
+	} else {
+		/* just the filesystems specified on the command line */
+		mntbuf = malloc(argc * sizeof(*mntbuf));
+		if (mntbuf == 0)
+			err(1, "malloc()");
+		mntsize = 0;
+		/* continued in for loop below */
 	}
 
+	/* iterate through specified filesystems */
 	for (; *argv; argv++) {
 		if (stat(*argv, &stbuf) < 0) {
 			if ((mntpt = getmntpt(*argv)) == 0) {
@@ -279,14 +270,24 @@ main(int argc, char *argv[])
 			continue;
 		}
 
-		if (argc == 1) {
-			bzero(&maxwidths, sizeof(maxwidths));
-			update_maxwidths(&maxwidths, &statfsbuf);
+		/* the user asked for it, so ignore the ignore flag */
+		statfsbuf.f_flags &= ~MNT_IGNORE;
+
+		/* add to list */
+		mntbuf[mntsize++] = statfsbuf;
+	}
+
+	bzero(&maxwidths, sizeof(maxwidths));
+	for (i = 0; i < mntsize; i++) {
+		if (aflag || (mntbuf[i].f_flags & MNT_IGNORE) == 0) {
+			update_maxwidths(&maxwidths, &mntbuf[i]);
+			if (cflag)
+				addstat(&totalbuf, &mntbuf[i]);
 		}
-		prtstat(&statfsbuf, &maxwidths);
-		if (cflag)
-			addstat(&totalbuf, &statfsbuf);
 	}
+	for (i = 0; i < mntsize; i++)
+		if (aflag || (mntbuf[i].f_flags & MNT_IGNORE) == 0)
+			prtstat(&mntbuf[i], &maxwidths);
 	if (cflag)
 		prtstat(&totalbuf, &maxwidths);
 	return (rv);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202090920.q199KYwJ091533>