Mercurial > dovecot > original-hg > dovecot-1.2
diff src/lib-storage/index/shared/shared-storage.c @ 8928:3a30d73fc463 HEAD
Shared mailboxes: If selecting prefix/<username>, try to open the user's INBOX.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 07 Apr 2009 17:57:34 -0400 |
parents | 7d484e0f0789 |
children | 9619fbd698d5 |
line wrap: on
line diff
--- a/src/lib-storage/index/shared/shared-storage.c Tue Apr 07 17:54:32 2009 -0400 +++ b/src/lib-storage/index/shared/shared-storage.c Tue Apr 07 17:57:34 2009 -0400 @@ -148,12 +148,8 @@ p = storage->ns_prefix_pattern; for (name = *_name; *p != '\0';) { if (*p != '%') { - if (*p != *name) { - mail_storage_set_critical(_storage, - "Invalid namespace prefix %s vs %s", - storage->ns_prefix_pattern, *_name); - return -1; - } + if (*p != *name) + break; p++; name++; continue; } @@ -175,14 +171,24 @@ next = strchr(name, *p != '\0' ? *p : _storage->ns->sep); if (next == NULL) { + *dest = name; + name = ""; + break; + } + *dest = t_strdup_until(name, next); + name = next; + } + if (*p != '\0') { + if (*name == '\0' || + (name[1] == '\0' && *name == _storage->ns->sep)) { + /* trying to open <prefix>/<user> mailbox */ + name = "INBOX"; + } else { mail_storage_set_critical(_storage, - "Invalid namespace prefix %s vs %s", - storage->ns_prefix_pattern, *_name); + "Invalid namespace prefix %s vs %s", + storage->ns_prefix_pattern, *_name); return -1; } - - *dest = t_strdup_until(name, next); - name = next; } /* successfully matched the name. */ if (userdomain == NULL) {