while ((de = readdir(d))) {
if (de->d_type != DT_DIR)
continue;
if (!is_game(de->d_name))
continue;
n ++;
}
И вроде бы все нормально, но читаем man readdir и видим: 'If the file type could not be determined, the value DT_UNKNOWN is returned in d_type.' То есть вроде бы есть поле, вроде бы может вернуть тип. Но может и не вернуть. И что интересно, действительно не возвращает иногда. Например на raiserfs. Но не только. Интересно. И в notes:
Under glibc, programs can check for the availability of the fields not defined in POSIX.1 by testing whether the macros _DIRENT_HAVE_D_NAMLEN, _DIRENT_HAVE_D_RECLEN, _DIRENT_HAVE_D_OFF, or _DIRENT_HAVE_D_TYPE are defined.
Комментариев нет:
Отправить комментарий