small change to du, so it will accepts unit suffixes for
negative thresholds
Gleb Kurtsou
gleb.kurtsou at gmail.com
Fri Mar 2 10:44:45 UTC 2012
On (01/03/2012 23:38), Alexander Best wrote:
> 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.
Good catch, thanks. A few minor comments below.
>
> cheers.
> alex
> 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) {
Why not optarg[0] == '-', it makes intent more clear.
I think we should support "+500M" as well.
Perhaps we'd better use temporal variable for string value instead of
changing optarg.
Or initialize threshold_sign with 0, set it either to 1 or -1 if optarg
starts with '+' or '-' accordingly, and do
expand_number(optarg + (threshold_sign != 0 ? 1 : 0), &threshold)
> + optarg++;
> + threshold_sign = -1;
> + }
> if (expand_number(optarg, &threshold) != 0 ||
> threshold == 0) {
> warnx("invalid threshold: %s", optarg);
optarg can differ from original value because of optarg++ above.
> usage();
> - } else if (threshold < 0)
> - threshold_sign = -1;
> + }
> + if (threshold_sign == -1)
> + threshold = -threshold;
> break;
> case 'x':
> ftsoptions |= FTS_XDEV;
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
More information about the freebsd-hackers
mailing list