1#include <ftw.h>
2
3int ftw(const char* path, int (*fn)(const char*, const struct stat*, int), int fd_limit) {
4    /* The following cast assumes that calling a function with one
5     * argument more than it needs behaves as expected. This is
6     * actually undefined, but works on all real-world machines. */
7    return nftw(path, (int (*)(const char*, const struct stat*, int, struct FTW*))fn, fd_limit, FTW_PHYS);
8}
9