Mercurial > dovecot > original-hg > dovecot-1.2
comparison 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 |
comparison
equal
deleted
inserted
replaced
8927:7d484e0f0789 | 8928:3a30d73fc463 |
---|---|
146 *ns_r = NULL; | 146 *ns_r = NULL; |
147 | 147 |
148 p = storage->ns_prefix_pattern; | 148 p = storage->ns_prefix_pattern; |
149 for (name = *_name; *p != '\0';) { | 149 for (name = *_name; *p != '\0';) { |
150 if (*p != '%') { | 150 if (*p != '%') { |
151 if (*p != *name) { | 151 if (*p != *name) |
152 mail_storage_set_critical(_storage, | 152 break; |
153 "Invalid namespace prefix %s vs %s", | |
154 storage->ns_prefix_pattern, *_name); | |
155 return -1; | |
156 } | |
157 p++; name++; | 153 p++; name++; |
158 continue; | 154 continue; |
159 } | 155 } |
160 switch (*++p) { | 156 switch (*++p) { |
161 case 'd': | 157 case 'd': |
173 } | 169 } |
174 p++; | 170 p++; |
175 | 171 |
176 next = strchr(name, *p != '\0' ? *p : _storage->ns->sep); | 172 next = strchr(name, *p != '\0' ? *p : _storage->ns->sep); |
177 if (next == NULL) { | 173 if (next == NULL) { |
178 mail_storage_set_critical(_storage, | 174 *dest = name; |
179 "Invalid namespace prefix %s vs %s", | 175 name = ""; |
180 storage->ns_prefix_pattern, *_name); | 176 break; |
181 return -1; | 177 } |
182 } | |
183 | |
184 *dest = t_strdup_until(name, next); | 178 *dest = t_strdup_until(name, next); |
185 name = next; | 179 name = next; |
180 } | |
181 if (*p != '\0') { | |
182 if (*name == '\0' || | |
183 (name[1] == '\0' && *name == _storage->ns->sep)) { | |
184 /* trying to open <prefix>/<user> mailbox */ | |
185 name = "INBOX"; | |
186 } else { | |
187 mail_storage_set_critical(_storage, | |
188 "Invalid namespace prefix %s vs %s", | |
189 storage->ns_prefix_pattern, *_name); | |
190 return -1; | |
191 } | |
186 } | 192 } |
187 /* successfully matched the name. */ | 193 /* successfully matched the name. */ |
188 if (userdomain == NULL) { | 194 if (userdomain == NULL) { |
189 i_assert(username != NULL); | 195 i_assert(username != NULL); |
190 userdomain = domain == NULL ? username : | 196 userdomain = domain == NULL ? username : |