On 08/16/06 00:49, Tobias Roth wrote:
On Tue, Aug 15, 2006 at 10:26:13PM -0500, Eric Anderson wrote:
Does the ifdef in the struct dirent (pasted in below) make any sense? Seems like regardless of whether the __BSD_VISIBLE is defined or not, the d_name length will always be 255 + 1.

Eric


struct dirent {
        __uint32_t d_fileno;            /* file number of entry */
        __uint16_t d_reclen;            /* length of this record */
        __uint8_t  d_type;              /* file type, see below */
        __uint8_t  d_namlen;            /* length of string in d_name */
#if __BSD_VISIBLE
#define MAXNAMLEN       255
char d_name[MAXNAMLEN + 1]; /* name must be no longer than this */
#else
char d_name[255 + 1]; /* name must be no longer than this */
#endif
};

The difference is whether MAXNAMLEN is defined or not, the value of d_name
is irrelevant. How far not defining MAXNAMLEN (in the case __BSD_VISIBLE=
false) makes sense, I cannot tell.

cheers, t.


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? Isn't this the same thing (but easier to read):

#if __BSD_VISIBLE
#define MAXNAMLEN       255
#endif

struct dirent {
         __uint32_t d_fileno;            /* file number of entry */
         __uint16_t d_reclen;            /* length of this record */
         __uint8_t  d_type;              /* file type, see below */
         __uint8_t  d_namlen;            /* length of string in d_name
         char    d_name[255 + 1];        /* name must be no longer than
this */
};



--
------------------------------------------------------------------------
Eric Anderson        Sr. Systems Administrator        Centaur Technology
Anything that works is better than anything that doesn't.
------------------------------------------------------------------------
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to