Mercurial > dovecot > original-hg > dovecot-1.2
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;