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 :