dovecot-2.0: lib-storage: Removed mailbox_list_get_hierarchy_sep...

dovecot at dovecot.org dovecot at dovecot.org
Thu Aug 5 18:20:20 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/827ebadc5995
changeset: 11942:827ebadc5995
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Aug 05 16:19:54 2010 +0100
description:
lib-storage: Removed mailbox_list_get_hierarchy_sep(). Its usage wasn't correct.
Especially with listescape plugin loaded the function was returning the
wrong separator. list->ns->real_sep should be used instead.

diffstat:

 src/imap/cmd-subscribe.c            |  6 +++---
 src/imap/imap-commands-util.c       |  4 +---
 src/lib-storage/mail-namespace.c    |  3 ++-
 src/lib-storage/mailbox-list.c      |  5 -----
 src/lib-storage/mailbox-list.h      |  1 -
 src/plugins/acl/acl-backend-vfile.c |  5 ++---
 6 files changed, 8 insertions(+), 16 deletions(-)

diffs (103 lines):

diff -r 415151aaa6de -r 827ebadc5995 src/imap/cmd-subscribe.c
--- a/src/imap/cmd-subscribe.c	Thu Aug 05 16:18:00 2010 +0100
+++ b/src/imap/cmd-subscribe.c	Thu Aug 05 16:19:54 2010 +0100
@@ -60,9 +60,9 @@
 	}
 
 	if ((cmd->client->set->parsed_workarounds &
-	     		WORKAROUND_TB_EXTRA_MAILBOX_SEP) != 0 &&
-	    *subs_name != '\0' && subs_name[strlen(subs_name)-1] ==
-	    mailbox_list_get_hierarchy_sep(ns->list)) {
+	     WORKAROUND_TB_EXTRA_MAILBOX_SEP) != 0 &&
+	    *subs_name != '\0' &&
+	    subs_name[strlen(subs_name)-1] == ns->real_sep) {
 		/* verify the validity without the trailing '/' */
 		mailbox = t_strndup(mailbox, strlen(mailbox)-1);
 		subs_name2 = subs_name;
diff -r 415151aaa6de -r 827ebadc5995 src/imap/imap-commands-util.c
--- a/src/imap/imap-commands-util.c	Thu Aug 05 16:18:00 2010 +0100
+++ b/src/imap/imap-commands-util.c	Thu Aug 05 16:19:54 2010 +0100
@@ -27,7 +27,6 @@
 	struct mail_namespace *ns;
 	const char *storage_name, *p;
 	unsigned int storage_name_len;
-	char sep;
 
 	storage_name = mailbox;
 	ns = mail_namespace_find(cmd->client->user->namespaces, &storage_name);
@@ -47,11 +46,10 @@
 		return NULL;
 	}
 
-	sep = mailbox_list_get_hierarchy_sep(ns->list);
 	storage_name_len = strlen(storage_name);
 	if ((cmd->client->set->parsed_workarounds &
 	     		WORKAROUND_TB_EXTRA_MAILBOX_SEP) != 0 &&
-	    storage_name[storage_name_len-1] == sep) {
+	    storage_name[storage_name_len-1] == ns->real_sep) {
 		/* drop the extra trailing hierarchy separator */
 		storage_name = t_strndup(storage_name, storage_name_len-1);
 	}
diff -r 415151aaa6de -r 827ebadc5995 src/lib-storage/mail-namespace.c
--- a/src/lib-storage/mail-namespace.c	Thu Aug 05 16:18:00 2010 +0100
+++ b/src/lib-storage/mail-namespace.c	Thu Aug 05 16:19:54 2010 +0100
@@ -4,6 +4,7 @@
 #include "array.h"
 #include "str.h"
 #include "file-lock.h"
+#include "mailbox-list-private.h"
 #include "mail-storage-private.h"
 #include "mail-storage-settings.h"
 #include "mail-namespace.h"
@@ -29,7 +30,7 @@
 
 	/* allow plugins to override real_sep */
 	if (ns->real_sep == '\0')
-		ns->real_sep = mailbox_list_get_hierarchy_sep(list);
+		ns->real_sep = list->hierarchy_sep;
 	ns->prefix_len = strlen(ns->prefix);
 
 	if (ns->set->separator != NULL)
diff -r 415151aaa6de -r 827ebadc5995 src/lib-storage/mailbox-list.c
--- a/src/lib-storage/mailbox-list.c	Thu Aug 05 16:18:00 2010 +0100
+++ b/src/lib-storage/mailbox-list.c	Thu Aug 05 16:19:54 2010 +0100
@@ -362,11 +362,6 @@
 	return list->name;
 }
 
-char mailbox_list_get_hierarchy_sep(const struct mailbox_list *list)
-{
-	return list->hierarchy_sep;
-}
-
 enum mailbox_list_flags mailbox_list_get_flags(const struct mailbox_list *list)
 {
 	return list->flags;
diff -r 415151aaa6de -r 827ebadc5995 src/lib-storage/mailbox-list.h
--- a/src/lib-storage/mailbox-list.h	Thu Aug 05 16:18:00 2010 +0100
+++ b/src/lib-storage/mailbox-list.h	Thu Aug 05 16:19:54 2010 +0100
@@ -163,7 +163,6 @@
 
 const char *
 mailbox_list_get_driver_name(const struct mailbox_list *list) ATTR_PURE;
-char mailbox_list_get_hierarchy_sep(const struct mailbox_list *list) ATTR_PURE;
 enum mailbox_list_flags
 mailbox_list_get_flags(const struct mailbox_list *list) ATTR_PURE;
 struct mail_namespace *
diff -r 415151aaa6de -r 827ebadc5995 src/plugins/acl/acl-backend-vfile.c
--- a/src/plugins/acl/acl-backend-vfile.c	Thu Aug 05 16:18:00 2010 +0100
+++ b/src/plugins/acl/acl-backend-vfile.c	Thu Aug 05 16:19:54 2010 +0100
@@ -186,11 +186,10 @@
 static const char *
 get_parent_mailbox(struct acl_backend *backend, const char *name)
 {
+	struct mail_namespace *ns = mailbox_list_get_namespace(backend->list);
 	const char *p;
-	char sep;
 
-	sep = mailbox_list_get_hierarchy_sep(backend->list);
-	p = strrchr(name, sep);
+	p = strrchr(name, ns->real_sep);
 	return p == NULL ? NULL : t_strdup_until(name, p);
 }
 


More information about the dovecot-cvs mailing list