
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 information. Provided it can be implemented on other systems, too, this would be the most natural behaviour in my opinion. Regards Christoph -- http://www.informatik.tu-darmstadt.de/TI/Mitarbeiter/cludwig.html LiDIA: http://www.informatik.tu-darmstadt.de/TI/LiDIA/Welcome.html