]> granicus.if.org Git - neomutt/commitdiff
mailbox: try to find existing description
authorAustin Ray <austin@austinray.io>
Thu, 11 Oct 2018 18:18:40 +0000 (14:18 -0400)
committerRichard Russon <rich@flatcap.org>
Sat, 13 Oct 2018 22:54:45 +0000 (23:54 +0100)
`mx_mbox_open(...)` creates a new `Context`, which requires creating new
`Mailbox` instances. Modified `mailbox_new(...)` to try and find an
existing description that matches the mailbox `path`.

mailbox.c

index 79988f0e4ad45fef82cad03cd31375197ab34cb4..7b7aa702cbb66f78abfb8ce42d15293f9d7e82ed 100644 (file)
--- a/mailbox.c
+++ b/mailbox.c
@@ -76,6 +76,23 @@ static short MailboxNotify = 0; /**< # of unnotified new boxes */
 
 struct MailboxList AllMailboxes = STAILQ_HEAD_INITIALIZER(AllMailboxes);
 
+/**
+ * get_mailbox_description - Find a mailbox's description given a path.
+ * @param path Path to the mailbox
+ * @retval ptr Description
+ * @retval NULL No mailbox matching path
+ */
+static char *get_mailbox_description(const char *path)
+{
+  struct MailboxNode *np = NULL;
+  STAILQ_FOREACH(np, &AllMailboxes, entries)
+  {
+    if (np->m->desc && (strcmp(np->m->path, path) == 0))
+      return np->m->desc;
+  }
+  return NULL;
+}
+
 /**
  * mailbox_new - Create a new Mailbox
  * @param path Path to the mailbox
@@ -90,6 +107,7 @@ struct Mailbox *mailbox_new(const char *path)
   char *r = realpath(path, rp);
   mutt_str_strfcpy(mailbox->realpath, r ? rp : path, sizeof(mailbox->realpath));
   mailbox->magic = MUTT_UNKNOWN;
+  mailbox->desc = get_mailbox_description(mailbox->path);
 
   return mailbox;
 }