]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: More fixes to listing mailbox names.
authorTimo Sirainen <tss@iki.fi>
Fri, 9 Sep 2011 10:14:07 +0000 (13:14 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 9 Sep 2011 10:14:07 +0000 (13:14 +0300)
src/lib-storage/index/imapc/imapc-list.c
src/lib-storage/index/imapc/imapc-storage.c

index 40e1132b4aa46f8b7ce4fcb4f058b97a5705a464..7cefc0c21c65ac4566766b33f237d3373ec14646 100644 (file)
@@ -58,7 +58,8 @@ static void imapc_list_simple_callback(const struct imapc_command_reply *reply,
 }
 
 static struct mailbox_node *
-imapc_list_update_tree(struct mailbox_tree_context *tree,
+imapc_list_update_tree(struct imapc_mailbox_list *list,
+                      struct mailbox_tree_context *tree,
                       const struct imap_arg *args)
 {
        struct mailbox_node *node;
@@ -85,18 +86,13 @@ imapc_list_update_tree(struct mailbox_tree_context *tree,
        }
 
        T_BEGIN {
-               string_t *utf8_name = t_str_new(64);
+               const char *vname =
+                       mailbox_list_default_get_vname(&list->list, name);
 
-               if (imap_utf7_to_utf8(name, utf8_name) < 0) {
-                       str_truncate(utf8_name, 0);
-                       str_append(utf8_name, name);
-               }
                if ((info_flags & MAILBOX_NONEXISTENT) != 0)
-                       node = mailbox_tree_lookup(tree, str_c(utf8_name));
-               else {
-                       node = mailbox_tree_get(tree, str_c(utf8_name),
-                                               &created);
-               }
+                       node = mailbox_tree_lookup(tree, vname);
+               else
+                       node = mailbox_tree_get(tree, vname, &created);
        } T_END;
        if (node != NULL)
                node->flags = info_flags;
@@ -123,7 +119,7 @@ static void imapc_untagged_list(const struct imapc_untagged_reply *reply,
                if (list->mailboxes != NULL)
                        mailbox_tree_set_separator(list->mailboxes, list->sep);
        } else {
-               (void)imapc_list_update_tree(list->mailboxes, args);
+               (void)imapc_list_update_tree(list, list->mailboxes, args);
        }
 }
 
@@ -138,7 +134,7 @@ static void imapc_untagged_lsub(const struct imapc_untagged_reply *reply,
                /* we haven't asked for the separator yet */
                return;
        }
-       node = imapc_list_update_tree(list->tmp_subscriptions != NULL ?
+       node = imapc_list_update_tree(list, list->tmp_subscriptions != NULL ?
                                      list->tmp_subscriptions :
                                      list->list.subscriptions, args);
        if (node != NULL)
index 182f511610ded49a1746b6497057f441b635fcaa..6727abced9ea8a92d422b210e2788ac6fc974e05 100644 (file)
@@ -5,7 +5,6 @@
 #include "str.h"
 #include "imap-arg.h"
 #include "imap-resp-code.h"
-#include "imap-utf7.h"
 #include "imapc-mail.h"
 #include "imapc-client-private.h"
 #include "imapc-connection.h"