struct dirent question

Joerg Sonnenberger joerg at britannica.bec.de
Wed Aug 16 18:51:11 UTC 2006


On Wed, Aug 16, 2006 at 02:45:05PM -0400, Garance A Drosihn wrote:
> At 11:31 AM -0500 8/16/06, Eric Anderson wrote:
> >
> >My point was, that either path you take (if BSD_VISIBLE is
> >defined or not), you end up with d_name having a size of
> >255 + 1, so what's the point the having it at all?
> 
> To make it clear that d_name is tied to the exact value
> of MAXNAMLEN (just in case that value ever changes), and
> it does not just happen to be 255+1 bytes for some reason
> that is completely unrelated to MAXNAMLEN.

It should be noted that the standard doesn't say anything about
MAXNAMLEN (which is historically a FS specific limit). It also
allows two different defitions of d_name:
(1) As char[] of arbitrary length.
(2) As char[1].

So portable code should always allocate storage for size(struct dirent) +
NAME_MAX of the current FS. In that sense the current definition is
misleading.

Joerg


More information about the freebsd-hackers mailing list