]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Fixes to handling +w permission errors and use it more often.
authorTimo Sirainen <tss@iki.fi>
Fri, 16 Jan 2009 19:21:25 +0000 (14:21 -0500)
committerTimo Sirainen <tss@iki.fi>
Fri, 16 Jan 2009 19:21:25 +0000 (14:21 -0500)
--HG--
branch : HEAD

src/lib-storage/index/mbox/mbox-storage.c
src/lib-storage/mail-error.c

index df24f2d129a8bda5050806b075cd27893bb085e3..416258898dc21be3d7473aa66c4a769091e4a4c6 100644 (file)
@@ -266,7 +266,7 @@ static const char *create_root_dir(struct mail_storage *storage,
 
        path = t_strconcat(home, "/mail", NULL);
        if (mkdir_parents(path, CREATE_MODE) < 0 && errno != EEXIST) {
-               *error_r = t_strdup_printf("mkdir(%s) failed: %m", path);
+               *error_r = mail_error_create_eacces_msg("mkdir", path);
                return NULL;
        }
 
@@ -362,8 +362,8 @@ mbox_get_list_settings(struct mailbox_list_settings *list_set,
                        return -1;
                } else if (mkdir_parents(list_set->root_dir, CREATE_MODE) < 0 &&
                           errno != EEXIST) {
-                       *error_r = t_strdup_printf("mkdir(%s) failed: %m",
-                                                  list_set->root_dir);
+                       *error_r = mail_error_create_eacces_msg("mkdir",
+                                                       list_set->root_dir);
                        return -1;
                }
        }
index 92b21bd643e95943c2d3f525f885dbb1aa7f7c81..e1a79d65a562ac1eab26d698b037d403c5613a1e 100644 (file)
@@ -77,16 +77,16 @@ mail_error_eacces_msg_full(const char *func, const char *path, bool creating)
                                str_printfa(errmsg, " missing +x perm: %s", dir);
                        else
                                str_printfa(errmsg, " access(%s, x) failed: %m", dir);
-               } else if (prev_path == path && access(path, R_OK) < 0) {
-                       if (errno == EACCES)
-                               str_printfa(errmsg, " missing +r perm: %s", path);
-                       else
-                               str_printfa(errmsg, " access(%s, r) failed: %m", path);
                } else if (creating && access(dir, W_OK) < 0) {
                        if (errno == EACCES)
                                str_printfa(errmsg, " missing +w perm: %s", dir);
                        else
                                str_printfa(errmsg, " access(%s, w) failed: %m", dir);
+               } else if (prev_path == path && access(path, R_OK) < 0) {
+                       if (errno == EACCES)
+                               str_printfa(errmsg, " missing +r perm: %s", path);
+                       else
+                               str_printfa(errmsg, " access(%s, r) failed: %m", path);
                } else
                        str_printfa(errmsg, " UNIX perms seem ok, ACL problem?");
        }