svn commit: r231260 - stable/9/bin/df
Baptiste Daroussin
bapt at FreeBSD.org
Thu Feb 9 09:20:35 UTC 2012
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);
More information about the svn-src-stable-9
mailing list