Date: Fri, 2 Mar 2012 11:39:39 -0500 From: Jason Hellenthal <jhellenthal@dataix.net> To: Alexander Best <arundel@freebsd.org> Cc: freebsd-hackers@freebsd.org Subject: Re: small change to du, so it will accepts unit suffixes for negative thresholds Message-ID: <20120302163939.GA284@DataIX.net> In-Reply-To: <20120302103333.GA88008@freebsd.org> References: <20120301233822.GA19709@freebsd.org> <20120302063659.GB31588@DataIX.net> <20120302103333.GA88008@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Mar 02, 2012 at 10:33:33AM +0000, Alexander Best wrote: > On Fri Mar 2 12, Jason Hellenthal wrote: > > > > > > On Thu, Mar 01, 2012 at 11:38:22PM +0000, 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. > > > > > > > I don't get it. I just ran both instances of what you have above without > > your patch on 8-STABLE i386 and both work as intended. Are you seeing > > something I am not ? > > you are right. there seems to have been a du change between 8-STABLE and HEAD, > or maybe even in expand_number(). > > when i run 'du -t-500M /' on HEAD i get: > > du: invalid threshold: -500M > usage: du [-Aclnx] [-H | -L | -P] [-h | -k | -m ] [-a | -s | -d depth] [-B blocksize] [-I mask] [-t threshold] [file ...] > > ... i'll investigate some more. i also found that on 8-STABLE du isn't working > properly in all cases. try the following: > > mkdir empty ; cd empty ; mkdir empty2 > > running 'du -t-1M' should report empty2, but it doesn't. running 'du -t-2M' > does. according to 'ls -la' an empty directory is 4096 byte. so 'du -t-4097' > should report the empty dir; however it doesn't. du seems to quite broken when > it comes to the -t option. have a look at the following: > > mkdir empty3; cd empty3; du -h -t1M > > reports > > 2,0k . > > that's completely wrong, since i instructed du to only display entries > 1 megabyte. > with locale being that of UTF-8 in an xterm I get the expected result from this. I would expect that locale of C would do the same. It seems that du(1) is not locale aware enough for calculating the sums and comparing them. I see 2,0k in your output where in mine it is 2.0 disbatch$ mkdir empty ; cd empty ; mkdir empty2 disbatch$ du -ht-1M 2.0k ./empty2 4.0k . disbatch$ du -t-1M 2 ./empty2 4 . disbatch$ locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_COLLATE=C LC_TIME="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_ALL= This was done under /bin/sh 8-STABLE i386 as of the date of this message. -- ;s =;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120302163939.GA284>