NFTW différent sur BSD?

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 .