small change to du, so it will accepts unit suffixes for negative thresholds

Alexander Best arundel at freebsd.org
Thu Mar 1 23:38:22 UTC 2012


hi there,

i just noticed that du will not accepts something like the following:

du -t-500M

whereas

du -t500M

will work. i've attached a patch, which makes unit suffixes in connection with
negative thresholds possible.

cheers.
alex
-------------- next part --------------
diff --git a/usr.bin/du/du.1 b/usr.bin/du/du.1
index 3db1367..01d2ec1 100644
--- a/usr.bin/du/du.1
+++ b/usr.bin/du/du.1
@@ -137,6 +137,10 @@ If
 is negative, display only entries for which size is less than the absolute
 value of
 .Ar threshold .
+For both positive and negative values,
+.Ar threshold
+accepts unit suffixes
+.Po see Fl h Li option Pc .
 .It Fl x
 File system mount points are not traversed.
 .El
diff --git a/usr.bin/du/du.c b/usr.bin/du/du.c
index 7b47b71..51bfd07 100644
--- a/usr.bin/du/du.c
+++ b/usr.bin/du/du.c
@@ -175,13 +175,18 @@ main(int argc, char *argv[])
 			break;
 		case 'r':		 /* Compatibility. */
 			break;
-		case 't' :
+		case 't':
+			if (strncmp(optarg, "-", 1) == 0) {
+			    optarg++;
+			    threshold_sign = -1;
+			}
 			if (expand_number(optarg, &threshold) != 0 ||
 			    threshold == 0) {
 				warnx("invalid threshold: %s", optarg);
 				usage();
-			} else if (threshold < 0)
-				threshold_sign = -1;
+			}
+			if (threshold_sign == -1)
+			    threshold = -threshold;
 			break;
 		case 'x':
 			ftsoptions |= FTS_XDEV;


More information about the freebsd-hackers mailing list