Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Jan 2012 01:39:38 +0000 (UTC)
From:      Glen Barber <gjb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r229756 - stable/7/usr.bin/du
Message-ID:  <201201070139.q071dcsZ018280@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gjb (doc committer)
Date: Sat Jan  7 01:39:38 2012
New Revision: 229756
URL: http://svn.freebsd.org/changeset/base/229756

Log:
  MFC r209362, r210933, r228356:
  
  r209362 (brian) [1]:
  - Add a -t switch for masking output that's above or below certain
    thresholds.  This switch makes it a lot easier to locate problem
    areas when a process is threatening to consume all of your disk
    space.
  
  r210933 (joel):
  - Fix typos and spelling mistakes.
  
  r228356 [2]:
  - Update du(1):
  
    - Sort arguments alphabetically where appropriate
    - '-B blocksize' is not mutually exclusive of '-h|-k|-m'
    - Mention '-t' in synopsis
    - Other wording improvements
    - Update usage() output to reflect the new synopsis
    - Other miscellaneous improvements
  
  Approved by:	brian [1]
  PR:		162438 [2]

Modified:
  stable/7/usr.bin/du/du.1
  stable/7/usr.bin/du/du.c
Directory Properties:
  stable/7/usr.bin/du/   (props changed)

Modified: stable/7/usr.bin/du/du.1
==============================================================================
--- stable/7/usr.bin/du/du.1	Sat Jan  7 01:12:21 2012	(r229755)
+++ stable/7/usr.bin/du/du.1	Sat Jan  7 01:39:38 2012	(r229756)
@@ -32,7 +32,7 @@
 .\"	@(#)du.1	8.2 (Berkeley) 4/1/94
 .\" $FreeBSD$
 .\"
-.Dd November 6, 2008
+.Dd December 8, 2011
 .Dt DU 1
 .Os
 .Sh NAME
@@ -40,15 +40,13 @@
 .Nd display disk usage statistics
 .Sh SYNOPSIS
 .Nm
-.Op Fl A
+.Op Fl Aclnx
 .Op Fl H | L | P
+.Op Fl h | k | m
 .Op Fl a | s | d Ar depth
-.Op Fl c
-.Op Fl l
-.Op Fl h | k | m | B Ar blocksize
-.Op Fl n
-.Op Fl x
+.Op Fl B Ar blocksize
 .Op Fl I Ar mask
+.Op Fl t Ar threshold
 .Op Ar
 .Sh DESCRIPTION
 The
@@ -69,10 +67,12 @@ Calculate block counts in
 .Ar blocksize
 byte blocks.
 This is different from the
-.Fl k, m
+.Fl h, k
+and
+.Fl  m
 options or setting
 .Ev BLOCKSIZE
-and gives an estimate of how much space the examined file hierachy would
+and gives an estimate of how much space the examined file hierarchy would
 require on a filesystem with the given
 .Ar blocksize .
 Unless in
@@ -83,40 +83,31 @@ is rounded up to the next multiple of 51
 .It Fl H
 Symbolic links on the command line are followed, symbolic links in file
 hierarchies are not followed.
-.It Fl L
-Symbolic links on the command line and in file hierarchies are followed.
 .It Fl I Ar mask
 Ignore files and directories matching the specified
 .Ar mask .
+.It Fl L
+Symbolic links on the command line and in file hierarchies are followed.
 .It Fl P
 No symbolic links are followed.
 This is the default.
 .It Fl a
 Display an entry for each file in a file hierarchy.
-.It Fl h
-"Human-readable" output.
-Use unit suffixes: Byte, Kilobyte, Megabyte,
-Gigabyte, Terabyte and Petabyte.
-.It Fl r
-Generate messages about directories that cannot be read, files
-that cannot be opened, and so on.
-This is the default case.
-This option exists solely for conformance with
-.St -xpg4 .
-.It Fl s
-Display an entry for each specified file.
-(Equivalent to
-.Fl d Li 0 )
+.It Fl c
+Display a grand total.
 .It Fl d Ar depth
 Display an entry for all files and directories
 .Ar depth
 directories deep.
-.It Fl c
-Display a grand total.
+.It Fl h
+.Dq Human-readable
+output.
+Use unit suffixes: Byte, Kilobyte, Megabyte,
+Gigabyte, Terabyte and Petabyte.
 .It Fl k
 Display block counts in 1024-byte (1-Kbyte) blocks.
 .It Fl l
-If a file has multiple hard links, count its size many times.
+If a file has multiple hard links, count its size multiple times.
 The default behavior of
 .Nm
 is to count files with multiple hard links only once.
@@ -132,6 +123,24 @@ Ignore files and directories with user
 flag
 .Pq Dv UF_NODUMP
 set.
+.It Fl r
+Generate messages about directories that cannot be read, files
+that cannot be opened, and so on.
+This is the default case.
+This option exists solely for conformance with
+.St -xpg4 .
+.It Fl s
+Display an entry for each specified file.
+(Equivalent to
+.Fl d Li 0 )
+.It Fl t Ar threshold
+Display only entries for which size exceeds
+.Ar threshold .
+If
+.Ar threshold
+is negative, display only entries for which size is less than the absolute
+value of
+.Ar threshold .
 .It Fl x
 File system mount points are not traversed.
 .El
@@ -148,25 +157,32 @@ If either the
 .Fl H
 or
 .Fl L
-options are specified, storage used by any symbolic links which are
-followed is not counted or displayed.
+option is specified, storage used by any symbolic links which are
+followed is not counted (or displayed).
+.Pp
+The
+.Fl h, k
+and
+.Fl m
+options all override each other; the last one specified determines
+the block counts used.
 .Sh ENVIRONMENT
 .Bl -tag -width BLOCKSIZE
 .It Ev BLOCKSIZE
 If the environment variable
 .Ev BLOCKSIZE
 is set, and the
-.Fl k, m
+.Fl h, k
 or
-.Fl h
+.Fl m
 options are not specified, the block counts will be displayed in units of
 that block size.
 If
 .Ev BLOCKSIZE
 is not set, and the
-.Fl k, m
+.Fl h, k
 or
-.Fl h
+.Fl m
 options are not specified, the block counts will be displayed in 512-byte
 blocks.
 .El

Modified: stable/7/usr.bin/du/du.c
==============================================================================
--- stable/7/usr.bin/du/du.c	Sat Jan  7 01:12:21 2012	(r229755)
+++ stable/7/usr.bin/du/du.c	Sat Jan  7 01:39:38 2012	(r229756)
@@ -88,6 +88,7 @@ main(int argc, char *argv[])
 	FTS		*fts;
 	FTSENT		*p;
 	off_t		savednumber, curblocks;
+	off_t		threshold, threshold_sign;
 	int		ftsoptions;
 	int		listall;
 	int		depth;
@@ -104,12 +105,14 @@ main(int argc, char *argv[])
 	save = argv;
 	ftsoptions = 0;
 	savednumber = 0;
+	threshold = 0;
+	threshold_sign = 1;
 	cblocksize = DEV_BSIZE;
 	blocksize = 0;
 	depth = INT_MAX;
 	SLIST_INIT(&ignores);
 
-	while ((ch = getopt(argc, argv, "AB:HI:LPasd:chklmnrx")) != -1)
+	while ((ch = getopt(argc, argv, "AB:HI:LPasd:chklmnrt:x")) != -1)
 		switch (ch) {
 		case 'A':
 			Aflag = 1;
@@ -177,6 +180,14 @@ main(int argc, char *argv[])
 			break;
 		case 'r':		 /* Compatibility. */
 			break;
+		case 't' :
+			if (expand_number(optarg, &threshold) != 0 ||
+			    threshold == 0) {
+				warnx("invalid threshold: %s", optarg);
+				usage();
+			} else if (threshold < 0)
+				threshold_sign = -1;
+			break;
 		case 'x':
 			ftsoptions |= FTS_XDEV;
 			break;
@@ -246,6 +257,10 @@ main(int argc, char *argv[])
 		blocksize /= DEV_BSIZE;
 	}
 
+	if (threshold != 0)
+		threshold = howmany(threshold / DEV_BSIZE * cblocksize,
+		    blocksize);
+
 	rval = 0;
 
 	if ((fts = fts_open(argv, ftsoptions, NULL)) == NULL)
@@ -267,7 +282,9 @@ main(int argc, char *argv[])
 			p->fts_parent->fts_bignum += p->fts_bignum +=
 			    curblocks;
 
-			if (p->fts_level <= depth) {
+			if (p->fts_level <= depth && threshold <=
+			    threshold_sign * howmany(p->fts_bignum *
+			    cblocksize, blocksize)) {
 				if (hflag) {
 					prthumanval(p->fts_bignum);
 					(void)printf("\t%s\n", p->fts_path);
@@ -486,9 +503,9 @@ static void
 usage(void)
 {
 	(void)fprintf(stderr,
-		"usage: du [-A] [-H | -L | -P] [-a | -s | -d depth] [-c] "
-		"[-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I mask] "
-		"[file ...]\n");
+		"usage: du [-Aclnx] [-H | -L | -P] [-h | -k | -m ] "
+		"[-a | -s | -d depth] [-B blocksize] [-I mask] "
+		"[-t threshold] [file ...]\n");
 	exit(EX_USAGE);
 }
 



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