From: John Crispin Date: Wed, 26 Aug 2015 01:54:46 +0000 (+0200) Subject: overlay: use lstat rather than stat and make sure there are no trailing spaces X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffstools.git;a=commitdiff_plain;h=cc63723d886fde2cd364a545b7cb05b70721b83f;hp=eee7814420990b0a733fbc68defa56d4d0c388a7 overlay: use lstat rather than stat and make sure there are no trailing spaces with this patch even uclibc wont deleted symlinked folders Signed-off-by: John Crispin --- diff --git a/libfstools/overlay.c b/libfstools/overlay.c index d6c311b..7f69606 100644 --- a/libfstools/overlay.c +++ b/libfstools/overlay.c @@ -78,10 +78,16 @@ foreachdir(const char *dir, int (*cb)(const char*)) snprintf(globdir, 256, "%s/*", dir); /**/ if (!glob(globdir, GLOB_NOESCAPE | GLOB_MARK | GLOB_ONLYDIR, NULL, &gl)) - for (j = 0; j < gl.gl_pathc; j++) - if (!stat(gl.gl_pathv[j], &s) && !S_ISLNK(s.st_mode)) - foreachdir(gl.gl_pathv[j], cb); + for (j = 0; j < gl.gl_pathc; j++) { + char *dir = gl.gl_pathv[j]; + int len = strlen(gl.gl_pathv[j]); + + if (len > 1 && dir[len - 1] == '/') + dir[len - 1] = '\0'; + if (!lstat(gl.gl_pathv[j], &s) && !S_ISLNK(s.st_mode)) + foreachdir(gl.gl_pathv[j], cb); + } cb(dir); }