>>$ man fstat
>
>Полагаю, что можно проще: воспользоваться членом d_type структуры dirent.
посмотрел на man readdir, так там нету такого члена. Это все смотрелось на Linux
The dirent structure is declared as follows:
struct dirent
{
long d_ino; /* inode number */
off_t d_off; /* offset to this dirent */
unsigned short d_reclen; /* length of this d_name */
char d_name [NAME_MAX+1]; /* file name (null-terminated) */
}
посмотрел в /usr/include/linux/dirent.h, там есть dirent64 и в ней есть d_type. То есть надо readdir64 использовать.
struct dirent {
long d_ino;
__kernel_off_t d_off;
unsigned short d_reclen;
char d_name[256]; /* We must not include limits.h! */
};
struct dirent64 {
__u64 d_ino;
__s64 d_off;
unsigned short d_reclen;
unsigned char d_type;
char d_name[256];
};
#ifdef __KERNEL__
struct linux_dirent64 {
u64 d_ino;
s64 d_off;
unsigned short d_reclen;
unsigned char d_type;
char d_name[0];
};
#endif /* __KERNEL__ */