+#define _GNU_SOURCE
#include <ftw.h>
#include <dirent.h>
- #include <sys/stat.h>
-@@ -63,8 +64,20 @@ static int do_nftw(char *path, int (*fn)
- lev.base = k;
+ #include <fcntl.h>
+@@ -72,8 +73,20 @@ static int do_nftw(char *path, int (*fn)
+ if (!fd_limit) close(dfd);
}
- if (!(flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev)))
for (; h; h = h->chain)
if (h->dev == st.st_dev && h->ino == st.st_ino)
-@@ -88,7 +101,10 @@ static int do_nftw(char *path, int (*fn)
+@@ -101,7 +114,10 @@ static int do_nftw(char *path, int (*fn)
strcpy(path+j+1, de->d_name);
if ((r=do_nftw(path, fn, fd_limit-1, flags, &new))) {
closedir(d);
}
}
closedir(d);
-@@ -98,8 +114,16 @@ static int do_nftw(char *path, int (*fn)
+@@ -112,8 +128,16 @@ static int do_nftw(char *path, int (*fn)
}
path[l] = 0;
return 0;
}
-@@ -125,4 +149,5 @@ int nftw(const char *path, int (*fn)(con
+@@ -139,4 +163,5 @@ int nftw(const char *path, int (*fn)(con
return r;
}