changeset 138:945063e0fb85 HEAD

more INBOX-sensitivity fixes
author Timo Sirainen <tss@iki.fi>
date Wed, 04 Sep 2002 00:02:32 +0300
parents 5b631c4f95a1
children 71246aeb262d
files src/lib-storage/index/maildir/maildir-storage.c
diffstat 1 files changed, 18 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-storage.c	Tue Sep 03 23:52:56 2002 +0300
+++ b/src/lib-storage/index/maildir/maildir-storage.c	Wed Sep 04 00:02:32 2002 +0300
@@ -137,6 +137,18 @@
 	return (Mailbox *) ibox;
 }
 
+static const char *inbox_fix_case(MailStorage *storage, const char *name)
+{
+        if (strncasecmp(name, "INBOX", 5) == 0 &&
+	    (name[5] == '\0' || name[5] == storage->hierarchy_sep)) {
+		/* use same case with all INBOX folders or we'll get
+		   into trouble */
+		name = t_strconcat("INBOX", name+5, NULL);
+	}
+
+	return name;
+}
+
 static Mailbox *maildir_open_mailbox(MailStorage *storage, const char *name,
 				     int readonly)
 {
@@ -145,8 +157,8 @@
 
 	mail_storage_clear_error(storage);
 
-	/* INBOX is always case-insensitive */
-	if (strcasecmp(name, "INBOX") == 0) {
+	name = inbox_fix_case(storage, name);
+	if (strcmp(name, "INBOX") == 0) {
 		if (!verify_inbox(storage, storage->dir))
 			return NULL;
 		return maildir_open(storage, "INBOX", readonly);
@@ -180,13 +192,7 @@
 
 	mail_storage_clear_error(storage);
 
-	if (strncasecmp(name, "INBOX", 5) == 0 &&
-	    (name[5] == '\0' || name[5] == storage->hierarchy_sep)) {
-		/* use same case with all INBOX folders or we'll get
-		   into trouble */
-		name = t_strconcat("INBOX", name+5, NULL);
-	}
-
+	name = inbox_fix_case(storage, name);
 	if (!maildir_is_valid_name(storage, name)) {
 		mail_storage_set_error(storage, "Invalid mailbox name");
 		return FALSE;
@@ -213,6 +219,7 @@
 
 	mail_storage_clear_error(storage);
 
+	name = inbox_fix_case(storage, name);
 	if (strcasecmp(name, "INBOX") == 0) {
 		mail_storage_set_error(storage, "INBOX can't be deleted.");
 		return FALSE;
@@ -300,9 +307,7 @@
 
 	mail_storage_clear_error(storage);
 
-	if (strcasecmp(oldname, "INBOX") == 0)
-		oldname = "INBOX";
-
+	oldname = inbox_fix_case(storage, oldname);
 	if (!maildir_is_valid_name(storage, oldname) ||
 	    !maildir_is_valid_name(storage, newname)) {
 		mail_storage_set_error(storage, "Invalid mailbox name");
@@ -340,9 +345,7 @@
 
 	mail_storage_clear_error(storage);
 
-	if (strcasecmp(name, "INBOX") == 0)
-		name = "INBOX";
-
+	name = inbox_fix_case(storage, name);
 	if (!maildir_is_valid_name(storage, name)) {
 		*status = MAILBOX_NAME_INVALID;
 		return TRUE;