]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: unlink_directory() return value is changed to 1 in case of no error.
authorSergey Kitov <sergey.kitov@open-xchange.com>
Wed, 20 Sep 2017 07:46:16 +0000 (10:46 +0300)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Wed, 27 Sep 2017 07:47:04 +0000 (10:47 +0300)
src/lib/unlink-directory.c
src/lib/unlink-directory.h

index 1930a1f1ae9181f9e521be127f677fc6b0ebf979..f95a65cb67abe19e890148e1ed520f2dd594a2be 100644 (file)
@@ -256,8 +256,6 @@ int unlink_directory(const char *dir, enum unlink_directory_flags flags,
           because of recursion */
        *error_r = NULL;
        ret = unlink_directory_r(dir, flags, error_r);
-       if (ret < 0 && errno == ENOENT)
-               ret = 0;
        old_errno = errno;
 
        if (fchdir(fd) < 0) {
@@ -268,7 +266,7 @@ int unlink_directory(const char *dir, enum unlink_directory_flags flags,
 
        if (ret < 0) {
                errno = old_errno;
-               return -1;
+               return errno == ENOENT ? 0 : 1;
        }
 
        if ((flags & UNLINK_DIRECTORY_FLAG_RMDIR) != 0) {
@@ -278,8 +276,8 @@ int unlink_directory(const char *dir, enum unlink_directory_flags flags,
                                /* standardize errno */
                                errno = ENOTEMPTY;
                        }
-                       return -1;
+                       return errno == ENOENT ? 0 : 1;
                }
        }
-       return 0;
+       return 1;
 }
index 3b1433950c6bfae8560a63c7150151c1079773d9..fbc2a44782a01aafe63dd1d4502959cefbb1a528 100644 (file)
@@ -11,9 +11,10 @@ enum unlink_directory_flags {
 };
 
 /* Unlink directory and/or everything under it.
-   Returns 0 if successful, -1 if error. If the directory doesn't exist,
-   -1 and errno=ENOENT is returned. The returned error message contains the
-   exact syscall that failed, e.g. "open(path) failed: Permission denied" */
+   Returns 1 if successful, 0 if error is ENOENT, -1 if other error.
+   The returned error message contains the exact syscall that failed,
+   e.g. "open(path) failed: Permission denied"
+   In case of ENOENT error, error message is also set. */
 int unlink_directory(const char *dir, enum unlink_directory_flags flags,
                     const char **error_r);