struct dirent - difference between getdents(2) manpage and definition in /usr/src/sys/dirent.h
Karthik Subramanian
karthik301176 at gmail.com
Wed Jul 26 02:27:29 PDT 2006
Hi Folks,
I was fooling around a little with getdents (yes, I know that I
shouldn't be using getdents!) and found that the getdents manpage
happened to say this about struct dirent:
-- snip --
The data in the buffer is a series of dirent structures each containing
the following entries:
u_int32_t d_fileno;
u_int16_t d_reclen;
u_int8_t d_type;
u_int8_t d_namlen;
char d_name[MAXNAMELEN + 1]; /* see below */
The d_fileno entry is a number which is unique for each distinct file in
the filesystem. Files that are linked by hard links (see link(2)) have
the same d_fileno. The d_reclen entry is the length, in bytes, of the
directory record.
-- snip --
When I look at the definition of struct dirent in
/usr/include/sys/dirent.h, I see this:
-- snip --
struct dirent {
#if defined(_KERNEL) || !defined(__BSD_VISIBLE)
ino_t d_ino; /* file number of entry */
#else
ino_t d_fileno; /* file number of entry */
#endif
uint16_t d_namlen; /* strlen(d_name) */
uint8_t d_type; /* file type, see blow */
uint8_t d_unused1; /* padding, reserved */
uint32_t d_unused2; /* reserved */
char d_name[255 + 1];
/* name, NUL-terminated */
};
-- snip --
It looks like this def is missing d_reclen, whereas the getdents
manpage mentions it - or am I missing something here?
Thanks in Advance,
Karthik.
More information about the Users
mailing list