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) {