]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Removed mailbox_list_get_hierarchy_sep(). Its usage wasn't correct.
authorTimo Sirainen <tss@iki.fi>
Thu, 5 Aug 2010 15:19:54 +0000 (16:19 +0100)
committerTimo Sirainen <tss@iki.fi>
Thu, 5 Aug 2010 15:19:54 +0000 (16:19 +0100)
Especially with listescape plugin loaded the function was returning the
wrong separator. list->ns->real_sep should be used instead.

src/imap/cmd-subscribe.c
src/imap/imap-commands-util.c
src/lib-storage/mail-namespace.c
src/lib-storage/mailbox-list.c
src/lib-storage/mailbox-list.h
src/plugins/acl/acl-backend-vfile.c

index 39615aac4b512d22bafac305b5a0b3aec473c8bb..8e44ada2787715e2ba3f97faaf77b82801b772b7 100644 (file)
@@ -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;
index cb1234894f071ed919793ad566b584b535e7f53e..2340949401c8399374eff90eb95b17ffa2dc0d64 100644 (file)
@@ -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);
        }
index c5c233523f5db1da672925d68b76fb6b1dfb251e..33ac424cdcf6a03f748844c5318d8fca9cf45bca 100644 (file)
@@ -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)
index 232d18263ded4dc3082d93eb1e0fc70ce0a3d9fc..fc021beb6be2c962a70c262f8eee15dcae594c6c 100644 (file)
@@ -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;
index 41320042a5cc5bb888679ec43a70f2f88f50410a..3087162c13880f2c04616d74ac83bad6357af016 100644 (file)
@@ -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 *
index 5ddf92cf3905f5150d38974a7e65d4808e59c4e6..6103d87cb7e21d56fa4655e7c881882d0f126617 100644 (file)
@@ -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);
 }