NFTW отличается от BSD?
Я пытаюсь получить все.c файлы в дереве каталогов, используя nftw
со следующим кодом:
static int gf(const char *path, const struct stat *st, int t, struct FTW *ftw) {
if (t != FTW_F)
return 0;
if (strcmp(ext(path), ".c") == 0)
addl(&files, dup(abspath(path)));
return 0;
}
void getfiles(char *path) {
nftw(path, gf, 255, FTW_PHYS);
}
Он работает на Linux и Solaris, но на PC-BSD не работает, просто не собирая никаких файлов. Что мне не хватает?
1 ответ
Решение
Что является возвращаемым значением nftw
? Если это -1
и errno is
установлен в EINVAL
вполне вероятно, что вы превышаете значение OPEN_MAX
, Попробуйте передать меньшее значение в качестве третьего параметра nftw
и убедитесь, что он меньше, чем OPEN_MAX
,