From: Christoph Ludwig (cludwig_at_[hidden])
Date: 2004-02-03 04:00:38
On Mon, Feb 02, 2004 at 12:14:47PM -0500, Edward Diener wrote:
> Beman Dawes wrote:
> > How should size( "foo" ) behave if "foo" is a directory?
> > 1) Throw. The function should be renamed file_size().
> I agree with your conclusion. Asking for the file_size of a directory is
> just wrong.
What's wrong about it?
Example: If I do a "ls -lh" in my boost directory (Linux, Reiser FS),
the first two lines I get are:
drwxr-xr-x 31 cludwig users 3544 2003-11-27 11:06 boost
-r-xr-xr-x 1 cludwig users 298 2003-11-27 11:06 boost-build.jam
The system tells me that the special file containing the directory
entries for the subdir "boost" occupies 3,5 KByte. I also checked the
output of ls on a Solaris machine (with an ufs filesystem, I assume)
and on a FAT32 filesystem. There the situation is similar; the only
difference is that the reported size is always a multiple of the file
system's block size.
I don't know about other filesystems, but in the examples above it
makes perfectly sense to ask for the size of a directory (rather than
the sum of the size of its content).
Beman's list of options has therefore to be appended:
4) Return the size of the special file containing the directory
Provided it can be implemented on other systems, too, this would be
the most natural behaviour in my opinion.
-- http://www.informatik.tu-darmstadt.de/TI/Mitarbeiter/cludwig.html LiDIA: http://www.informatik.tu-darmstadt.de/TI/LiDIA/Welcome.html
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk