Date: Wed, 16 Aug 2006 11:31:09 -0500 From: Eric Anderson <anderson@centtech.com> To: Tobias Roth <roth@iam.unibe.ch> Cc: FreeBSD Hackers <freebsd-hackers@freebsd.org> Subject: Re: struct dirent question Message-ID: <44E3484D.8090905@centtech.com> In-Reply-To: <20060816054925.GA11651@droopy.unibe.ch> References: <44E29055.3080205@centtech.com> <20060816054925.GA11651@droopy.unibe.ch>
next in thread | previous in thread | raw e-mail | index | archive | help
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. ------------------------------------------------------------------------
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?44E3484D.8090905>