From: Timo Sirainen Date: Thu, 8 May 2003 15:53:07 +0000 (+0300) Subject: check lstat() error too X-Git-Tag: 1.1.alpha1~4653 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e050b975af7ecae363b8cfce56bb7cd205b9bd9;p=thirdparty%2Fdovecot%2Fcore.git check lstat() error too --HG-- branch : HEAD --- diff --git a/src/lib/unlink-directory.c b/src/lib/unlink-directory.c index e58e60c46a..c7ba33f0fc 100644 --- a/src/lib/unlink-directory.c +++ b/src/lib/unlink-directory.c @@ -129,10 +129,14 @@ static int unlink_directory_r(const char *dir) continue; } - if (unlink(d->d_name) == -1 && errno != ENOENT) { + if (unlink(d->d_name) < 0 && errno != ENOENT) { old_errno = errno; - if (lstat(d->d_name, &st) == 0 && S_ISDIR(st.st_mode)) { + if (lstat(d->d_name, &st) < 0) { + if (errno != ENOENT) + break; + errno = 0; + } else if (S_ISDIR(st.st_mode)) { if (unlink_directory_r(d->d_name) < 0) { if (errno != ENOENT) break; @@ -147,7 +151,7 @@ static int unlink_directory_r(const char *dir) errno = 0; } } else { - /* so it wasn't a directory */ + /* so it wasn't a directory */ errno = old_errno; break; }