From cc63723d886fde2cd364a545b7cb05b70721b83f Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 26 Aug 2015 03:54:46 +0200 Subject: [PATCH] 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 --- libfstools/overlay.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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); } -- 2.30.2