]> granicus.if.org Git - neomutt/commitdiff
imap: fix imap list subscribe
authorMehdi Abaakouk <sileht@sileht.net>
Mon, 12 Nov 2018 16:55:56 +0000 (17:55 +0100)
committerRichard Russon <rich@flatcap.org>
Tue, 13 Nov 2018 11:51:47 +0000 (11:51 +0000)
imap/imap.c

index 7f6a70208b62e7d12f39a7c39e02737d2770e43f..10eb4aa81903269a8fff041ac2326c3ef7e3847a 100644 (file)
@@ -404,27 +404,24 @@ int imap_prepare_mailbox(struct Mailbox *m, struct ImapMbox *mx,
  */
 int get_mailbox(const char *path, struct ImapAccountData **adata, char *buf, size_t buflen)
 {
-  int rc;
   struct ImapMbox mx;
-  struct MailboxNode *np = NULL;
 
-  memset(&mx, 0, sizeof(mx));
+  if (imap_parse_path(path, &mx) < 0)
+    return -1;
 
-  STAILQ_FOREACH(np, &AllMailboxes, entries)
+  *adata = imap_ac_data_find(&mx);
+  if (!*adata)
   {
-    if (np->m->magic != MUTT_IMAP)
-      continue;
-
-    if (mutt_str_strcasecmp(path, np->m->path) == 0)
-    {
-      rc = imap_prepare_mailbox(np->m, &mx, path, buf, buflen, false, true);
-      if (rc == 0)
-        *adata = np->m->account->adata;
-      FREE(&mx.mbox);
-      return rc;
-    }
+    FREE(&mx.mbox);
+    return -1;
   }
-  return -1;
+
+  imap_fix_path(*adata, mx.mbox, buf, buflen);
+  if (!*buf)
+    mutt_str_strfcpy(buf, "INBOX", buflen);
+  FREE(&mx.mbox);
+
+  return 0;
 }
 
 /**