du bug, wrong sizes reported.

Bruce N. Hunsaker bruceh@ns1.ieighty.net
Tue Jan 20 15:29:00 GMT 1998


I have searched the archives but haven't seen this one
reported yet (but I might have missed it).

du reports sizes in 2k blocks.  It should report sizes using
a block size of 1k.

Example:
	$ ls -l du.exe
	-rwxr-x-r-x   1 all    Everyone   22016 May 08 1997 du.exe
	$ du du.exe
	11  du.exe

The correct output of du should be:
	22  du.exe

Looking at the source I changed 2 lines of code to fix this problem.
Change the line that says:
	size =ST_NBLOCKS(stat_buf)
to
	size =(stat_buf.st_size + 511) / 512;
I wonder what's wrong the the ST_NBLOCKS macro?
Second change:
	convert_blocks( size, output_size == kilobytes)
to
	convert_blocks( size, output_size)
This looks like a bug in the code, and might be fixed if there is a
newer version of GNU fileutils.

Also, performance is quite bad.  It is better with the patched
cygwin.dll in coolview, but du should still be much faster. (See
similar problems with find and ls...)


---
Bruce Hunsaker - bruceh@ieighty.net
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".



More information about the Cygwin mailing list