changeset 8643:97a350198a4f HEAD

Fixes to handling +w permission errors and use it more often.
author Timo Sirainen <tss@iki.fi>
date Fri, 16 Jan 2009 14:21:25 -0500
parents dd53d40a2f09
children bf53ab94db72
files src/lib-storage/index/mbox/mbox-storage.c src/lib-storage/mail-error.c
diffstat 2 files changed, 8 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/mbox/mbox-storage.c	Fri Jan 16 12:45:06 2009 -0500
+++ b/src/lib-storage/index/mbox/mbox-storage.c	Fri Jan 16 14:21:25 2009 -0500
@@ -266,7 +266,7 @@
 
 	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 @@
 			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;
 		}
 	}
--- a/src/lib-storage/mail-error.c	Fri Jan 16 12:45:06 2009 -0500
+++ b/src/lib-storage/mail-error.c	Fri Jan 16 14:21:25 2009 -0500
@@ -77,16 +77,16 @@
 				str_printfa(errmsg, " missing +x perm: %s", dir);
 			else
 				str_printfa(errmsg, " access(%s, x) failed: %m", dir);
+		} 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 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
 			str_printfa(errmsg, " UNIX perms seem ok, ACL problem?");
 	}