]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
check lstat() error too
authorTimo Sirainen <tss@iki.fi>
Thu, 8 May 2003 15:53:07 +0000 (18:53 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 8 May 2003 15:53:07 +0000 (18:53 +0300)
--HG--
branch : HEAD

src/lib/unlink-directory.c

index e58e60c46a92cf2754e2fb8b4fed8821d365a653..c7ba33f0fcc2b7b8271e0e282a45c2906e394669 100644 (file)
@@ -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;
                        }