Author: bapt
Date: Thu Feb  9 09:20:50 2012
New Revision: 231261
URL: http://svn.freebsd.org/changeset/base/231261

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

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

Modified: stable/8/bin/df/df.1
==============================================================================
--- stable/8/bin/df/df.1        Thu Feb  9 09:20:34 2012        (r231260)
+++ stable/8/bin/df/df.1        Thu Feb  9 09:20:50 2012        (r231261)
@@ -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/8/bin/df/df.c
==============================================================================
--- stable/8/bin/df/df.c        Thu Feb  9 09:20:34 2012        (r231260)
+++ stable/8/bin/df/df.c        Thu Feb  9 09:20:50 2012        (r231261)
@@ -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);
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to