J’essaie d’obtenir tous les fichiers nftw
dans une arborescence de répertoires en utilisant nftw
avec le code suivant:
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); }
Il fonctionne sous Linux et Solaris, mais sur PC-BSD, il échoue simplement en ne récupérant aucun fichier. Qu’est-ce que je rate?
Quelle est la valeur de retour de nftw
? S’il s’agit de -1
et que le errno is
EINVAL
il est fort probable que vous ayez dépassé la valeur d’ OPEN_MAX
. Essayez de transmettre une valeur inférieure comme troisième paramètre à nftw
et assurez-vous qu’il est plus petit que OPEN_MAX
.