From: Timo Sirainen Date: Thu, 5 Aug 2010 15:19:54 +0000 (+0100) Subject: lib-storage: Removed mailbox_list_get_hierarchy_sep(). Its usage wasn't correct. X-Git-Tag: 2.0.rc5~32 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3f3260616dd0132974d18edf3fdbbb4abc45b1c3;p=thirdparty%2Fdovecot%2Fcore.git 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. --- diff --git a/src/imap/cmd-subscribe.c b/src/imap/cmd-subscribe.c index 39615aac4b..8e44ada278 100644 --- a/src/imap/cmd-subscribe.c +++ b/src/imap/cmd-subscribe.c @@ -60,9 +60,9 @@ bool cmd_subscribe_full(struct client_command_context *cmd, bool subscribe) } 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 --git a/src/imap/imap-commands-util.c b/src/imap/imap-commands-util.c index cb1234894f..2340949401 100644 --- a/src/imap/imap-commands-util.c +++ b/src/imap/imap-commands-util.c @@ -27,7 +27,6 @@ client_find_namespace(struct client_command_context *cmd, const char *mailbox, 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 @@ client_find_namespace(struct client_command_context *cmd, const char *mailbox, 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 --git a/src/lib-storage/mail-namespace.c b/src/lib-storage/mail-namespace.c index c5c233523f..33ac424cdc 100644 --- a/src/lib-storage/mail-namespace.c +++ b/src/lib-storage/mail-namespace.c @@ -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 @@ void mail_namespace_finish_list_init(struct mail_namespace *ns, /* 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 --git a/src/lib-storage/mailbox-list.c b/src/lib-storage/mailbox-list.c index 232d18263d..fc021beb6b 100644 --- a/src/lib-storage/mailbox-list.c +++ b/src/lib-storage/mailbox-list.c @@ -362,11 +362,6 @@ const char *mailbox_list_get_driver_name(const struct mailbox_list *list) 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 --git a/src/lib-storage/mailbox-list.h b/src/lib-storage/mailbox-list.h index 41320042a5..3087162c13 100644 --- a/src/lib-storage/mailbox-list.h +++ b/src/lib-storage/mailbox-list.h @@ -163,7 +163,6 @@ void mailbox_list_destroy(struct mailbox_list **list); 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 --git a/src/plugins/acl/acl-backend-vfile.c b/src/plugins/acl/acl-backend-vfile.c index 5ddf92cf39..6103d87cb7 100644 --- a/src/plugins/acl/acl-backend-vfile.c +++ b/src/plugins/acl/acl-backend-vfile.c @@ -186,11 +186,10 @@ acl_backend_vfile_object_init(struct acl_backend *_backend, 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); }