]> granicus.if.org Git - neomutt/commitdiff
create libcore
authorRichard Russon <rich@flatcap.org>
Fri, 12 Jul 2019 15:16:39 +0000 (16:16 +0100)
committerRichard Russon <rich@flatcap.org>
Sat, 13 Jul 2019 23:25:45 +0000 (00:25 +0100)
82 files changed:
Makefile.autosetup
browser.c
color.c
commands.c
compose.c
compress.c
context.c
context.h
copy.c
core/account.c [moved from account.c with 88% similarity]
core/account.h [moved from account.h with 80% similarity]
core/lib.h [new file with mode: 0644]
core/mailbox.c [moved from mailbox.c with 59% similarity]
core/mailbox.h [new file with mode: 0644]
core/neomutt.c [moved from neomutt.c with 91% similarity]
core/neomutt.h [moved from neomutt.h with 79% similarity]
curs_lib.c
edit.c
editmsg.c
enter.c
flags.c
hdrline.c
imap/browse.c
imap/command.c
imap/imap.c
imap/message.c
imap/util.c
index.c
init.c
init.h
mailbox.h [deleted file]
maildir/maildir.c
maildir/maildir_private.h
maildir/mh.c
maildir/shared.c
main.c
mbox/mbox.c
menu.c
monitor.c
mutt_attach.c
mutt_header.c
mutt_mailbox.c
mutt_mailbox.h
mutt_thread.c
mx.c
mx.h
nntp/browse.c
nntp/newsrc.c
nntp/nntp.c
notmuch/mutt_notmuch.c
notmuch/notmuch_private.h
pager.c
pattern.c
pop/pop.c
pop/pop_lib.c
postpone.c
recvattach.c
score.c
send.c
sendlib.c
sidebar.c
sort.c
status.c
test/Makefile.autosetup
test/config/account.c
test/config/address.c
test/config/bool.c
test/config/common.c
test/config/dump.c
test/config/enum.c
test/config/initial.c
test/config/long.c
test/config/mbtable.c
test/config/number.c
test/config/quad.c
test/config/regex.c
test/config/set.c
test/config/slist.c
test/config/sort.c
test/config/string.c
test/config/synonym.c
test/parse/mutt_rfc822_parse_line.c

index 1b05f382ca68efd14eab9b95c3df0f847f9a03e3..d4a7e7045153384dc20d066fe58f8f0a1f7f2654 100644 (file)
@@ -61,15 +61,15 @@ ALL_FILES!= (cd $(SRCDIR) && git ls-files 2>/dev/null) || true
 ###############################################################################
 # neomutt
 NEOMUTT=       neomutt$(EXEEXT)
-NEOMUTTOBJS=   account.o addrbook.o alias.o bcache.o browser.o color.o commands.o \
+NEOMUTTOBJS=   addrbook.o alias.o bcache.o browser.o color.o commands.o \
                complete.o compose.o compress.o conststrings.o context.o copy.o \
                curs_lib.o edit.o editmsg.o enriched.o enter.o \
                filter.o flags.o git_ver.o handler.o hdrline.o help.o hook.o \
-               index.o init.o keymap.o mailbox.o main.o menu.o muttlib.o \
+               index.o init.o keymap.o main.o menu.o muttlib.o \
                mutt_account.o mutt_attach.o mutt_body.o mutt_header.o \
                mutt_history.o mutt_logging.o mutt_mailbox.o mutt_parse.o mutt_signal.o \
                mutt_socket.o mutt_thread.o mutt_window.o mx.o myvar.o \
-               neomutt.o pager.o pattern.o postpone.o progress.o query.o recvattach.o \
+               pager.o pattern.o postpone.o progress.o query.o recvattach.o \
                recvcmd.o resize.o rfc1524.o rfc3676.o \
                score.o send.o sendlib.o sidebar.o smtp.o sort.o state.o \
                status.o system.o terminal.o version.o icommands.o
@@ -224,6 +224,15 @@ PGPEWRAPOBJS=      pgpewrap.o
 CLEANFILES+=   $(PGPEWRAP) $(PGPEWRAPOBJS)
 ALLOBJS+=      $(PGPEWRAPOBJS)
 
+###############################################################################
+# libcore
+LIBCORE=       libcore.a
+LIBCOREOBJS=   core/account.o core/mailbox.o core/neomutt.o
+
+CLEANFILES+=   $(LIBCORE) $(LIBCOREOBJS)
+MUTTLIBS+=     $(LIBCORE)
+ALLOBJS+=      $(LIBCOREOBJS)
+
 ###############################################################################
 # libconfig
 LIBCONFIG=     libconfig.a
@@ -367,6 +376,13 @@ $(LIBCONN): $(PWD)/conn $(LIBCONNOBJS)
 $(PWD)/conn:
        $(MKDIR_P) $(PWD)/conn
 
+# libcore
+$(LIBCORE): $(PWD)/core $(LIBCOREOBJS)
+       $(AR) cr $@ $(LIBCOREOBJS)
+       $(RANLIB) $@
+$(PWD)/core:
+       $(MKDIR_P) $(PWD)/core
+
 # libconfig
 $(LIBCONFIG): $(PWD)/config $(LIBCONFIGOBJS)
        $(AR) cr $@ $(LIBCONFIGOBJS)
index dc64e3bafef3b816963b854c07427bf8d1a7e21a..aac624855d9e538b25770a0a81a47939af047338 100644 (file)
--- a/browser.c
+++ b/browser.c
 #include "mutt.h"
 #include "browser.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "format_flags.h"
 #include "globals.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "maildir/lib.h"
 #include "mutt_attach.h"
 #include "mutt_mailbox.h"
@@ -60,7 +60,6 @@
 #include "mutt_window.h"
 #include "muttlib.h"
 #include "mx.h"
-#include "neomutt.h"
 #include "opcodes.h"
 #include "options.h"
 #include "sendlib.h"
diff --git a/color.c b/color.c
index c8573a09223fe1eca0ee0613231dccdd6c57c45a..f7cfacd9df54f0821a61d279f4e741b628159451 100644 (file)
--- a/color.c
+++ b/color.c
@@ -38,9 +38,9 @@
 #include "mutt.h"
 #include "color.h"
 #include "context.h"
+#include "core/lib.h"
 #include "globals.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_commands.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
index 889122ff7d415a20fa885066138005eed5ab0505..ab2072df0b034995cf78a3d5515f5c24bd99902b 100644 (file)
@@ -45,6 +45,7 @@
 #include "alias.h"
 #include "context.h"
 #include "copy.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "filter.h"
 #include "format_flags.h"
@@ -53,7 +54,6 @@
 #include "hook.h"
 #include "icommands.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_logging.h"
 #include "mutt_mailbox.h"
@@ -1088,7 +1088,7 @@ int mutt_save_message(struct Mailbox *m, struct EmailList *el,
   struct Mailbox *m_comp = NULL;
   if (ctx_save->mailbox->compress_info)
   {
-    m_comp = mutt_mailbox_find(ctx_save->mailbox->realpath);
+    m_comp = mailbox_find(ctx_save->mailbox->realpath);
   }
   /* We probably haven't been opened yet */
   if (m_comp && (m_comp->msg_count == 0))
index 7a392c978c5dd8162a4f2830d7e30ab30b24ab39..f0add93c442e12df7615fce2037bb96a9289378e 100644 (file)
--- a/compose.c
+++ b/compose.c
@@ -47,6 +47,7 @@
 #include "browser.h"
 #include "commands.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "edit.h"
 #include "format_flags.h"
@@ -54,7 +55,6 @@
 #include "hook.h"
 #include "index.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_attach.h"
 #include "mutt_curses.h"
 #include "mutt_header.h"
index 6af4e5e22dbd130152f5531b7c0f6967ed6bfaad..f8b8071a95801d1b1787d0dd7ad52e8c9e19f2aa 100644 (file)
 #include "mutt/mutt.h"
 #include "config/lib.h"
 #include "compress.h"
-#include "account.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "format_flags.h"
 #include "globals.h"
 #include "hook.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "muttlib.h"
 #include "mx.h"
index 65aa7ad09dbde1cac29b07eda1f078c30a5b1ec8..c766407d970f652c83bd6e1a1368a901439e7a99 100644 (file)
--- a/context.c
+++ b/context.c
@@ -235,7 +235,7 @@ void ctx_update_tables(struct Context *ctx, bool committing)
       if ((m->magic == MUTT_NOTMUCH) || (m->magic == MUTT_MH) ||
           (m->magic == MUTT_MAILDIR) || (m->magic == MUTT_IMAP))
       {
-        mutt_mailbox_size_sub(m, m->emails[i]);
+        mailbox_size_sub(m, m->emails[i]);
       }
       /* remove message from the hash tables */
       if (m->subj_hash && m->emails[i]->env->real_subj)
index ffe6eb53cdb3e9902e0dce4025f9c3c4b7ef5f54..28d7cbd5e668218a44bd98744bed29ab419d00a1 100644 (file)
--- a/context.h
+++ b/context.h
@@ -27,7 +27,7 @@
 #include <stdio.h>
 #include <sys/types.h>
 #include <time.h>
-#include "mailbox.h"
+#include "core/lib.h"
 #include "pattern.h"
 
 struct EmailList;
diff --git a/copy.c b/copy.c
index 108168f2416c5b1e3e7eeee2966fb666c1d636ff..33ccecc360b4320fe51b4561fa2ca2c97f955aaf 100644 (file)
--- a/copy.c
+++ b/copy.c
 #include "mutt.h"
 #include "copy.h"
 #include "context.h"
+#include "core/lib.h"
 #include "globals.h"
 #include "handler.h"
 #include "hdrline.h"
-#include "mailbox.h"
 #include "mutt_window.h"
 #include "muttlib.h"
 #include "mx.h"
similarity index 88%
rename from account.c
rename to core/account.c
index b52f777626f22c356a5307a1adbcbf45c75fade8..5d106a500e96359a414c21655cddf4cba0cfcc8a 100644 (file)
--- a/account.c
@@ -3,7 +3,7 @@
  * A group of associated Mailboxes
  
  * @authors
- * Copyright (C) 2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2018-2019 Richard Russon <rich@flatcap.org>
  *
  * @copyright
  * This program is free software: you can redistribute it and/or modify it under
  */
 
 /**
- * @page account A group of associated Mailboxes
+ * @page core_account A group of associated Mailboxes
  *
  * A group of associated Mailboxes
  */
 
 #include "config.h"
+#include <stddef.h>
 #include "mutt/mutt.h"
+#include "config/lib.h"
 #include "account.h"
+#include "mailbox.h"
 #include "neomutt.h"
 
 /**
  * account_new - Create a new Account
- * @param name   Name for the Account
- * @param parent Parent Config Subset
+ * @param name Name for the Account
+ * @param sub  Parent Config Subset
  * @retval ptr New Account
  */
-struct Account *account_new(const char *name, struct ConfigSubset *parent)
+struct Account *account_new(const char *name, struct ConfigSubset *sub)
 {
   struct Account *a = mutt_mem_calloc(1, sizeof(struct Account));
+
   STAILQ_INIT(&a->mailboxes);
   a->notify = notify_new(a, NT_ACCOUNT);
   a->name = mutt_str_strdup(name);
-  a->sub = cs_subset_new(name, parent);
+  a->sub = cs_subset_new(name, sub);
 
   return a;
 }
@@ -75,7 +79,7 @@ bool account_mailbox_add(struct Account *a, struct Mailbox *m)
  * @param a Account
  * @param m Mailbox to remove
  *
- * @note If m is NULL, all the mailboxes will be removed.
+ * @note If m is NULL, all the mailboxes will be removed
  */
 bool account_mailbox_remove(struct Account *a, struct Mailbox *m)
 {
similarity index 80%
rename from account.h
rename to core/account.h
index fd7c7b8460c4f03469b485936479e7dce47b122c..2d711c562accb8c24548ee0c779cb890cbb153f3 100644 (file)
--- a/account.h
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef MUTT_ACCOUNT_H
-#define MUTT_ACCOUNT_H
+#ifndef MUTT_CORE_ACCOUNT_H
+#define MUTT_CORE_ACCOUNT_H
 
 #include <stdbool.h>
 #include "mutt/mutt.h"
-#include "config/lib.h"
 #include "mailbox.h"
 
-struct ConnAccount;
-struct Notify;
+struct ConfigSubset;
 
 /**
  * struct Account - A group of associated Mailboxes
@@ -38,14 +36,13 @@ struct Notify;
 struct Account
 {
   enum MailboxType magic;       ///< Type of Mailboxes this Account contains
+  char *name;                   ///< Name of Account
+  struct ConfigSubset *sub;     ///< Inherited config items
   struct MailboxList mailboxes; ///< List of Mailboxes
-  TAILQ_ENTRY(Account) entries; ///< Linked list of Accounts
   struct Notify *notify;        ///< Notifications handler
   void *adata;                  ///< Private data (for Mailbox backends)
   void (*free_adata)(void **);  ///< Callback function to free private data
-
-  char *name;               ///< Name of Account
-  struct ConfigSubset *sub; ///< Inherited config items
+  TAILQ_ENTRY(Account) entries; ///< Linked list of Accounts
 };
 TAILQ_HEAD(AccountList, Account);
 
@@ -66,9 +63,9 @@ enum NotifyAccount
   NT_ACCOUNT_REMOVE,  ///< An Account is about to be destroyed
 };
 
-void            account_free(struct Account **ptr);
-bool            account_mailbox_add(struct Account *a, struct Mailbox *m);
+void            account_free          (struct Account **ptr);
+bool            account_mailbox_add   (struct Account *a, struct Mailbox *m);
 bool            account_mailbox_remove(struct Account *a, struct Mailbox *m);
-struct Account *account_new(const char *name, struct ConfigSubset *parent);
+struct Account *account_new           (const char *name, struct ConfigSubset *sub);
 
-#endif /* MUTT_ACCOUNT_H */
+#endif /* MUTT_CORE_ACCOUNT_H */
diff --git a/core/lib.h b/core/lib.h
new file mode 100644 (file)
index 0000000..14f1ed4
--- /dev/null
@@ -0,0 +1,42 @@
+/**
+ * @file
+ * Convenience wrapper for the core headers
+ *
+ * @authors
+ * Copyright (C) 2019 Richard Russon <rich@flatcap.org>
+ *
+ * @copyright
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * @page core CORE: Backbone objects of NeoMutt
+ *
+ * Backbone objects of NeoMutt
+ *
+ * | File                | Description                |
+ * | :------------------ | :------------------------- |
+ * | core/account.c      | @subpage core_account      |
+ * | core/mailbox.c      | @subpage core_mailbox      |
+ * | core/neomutt.c      | @subpage core_neomutt      |
+ */
+
+#ifndef MUTT_CORE_LIB_H
+#define MUTT_CORE_LIB_H
+
+#include "account.h"
+#include "mailbox.h"
+#include "neomutt.h"
+
+#endif /* MUTT_CORE_LIB_H */
similarity index 59%
rename from mailbox.c
rename to core/mailbox.c
index 7df01e93a6b399329bc6d0dae54df46fcbc675db..a84a5ad038644a76ac444394a251d0ec0b375f9c 100644 (file)
--- a/mailbox.c
@@ -5,7 +5,7 @@
  * @authors
  * Copyright (C) 1996-2000,2010,2013 Michael R. Elkins <me@mutt.org>
  * Copyright (C) 2016-2017 Kevin J. McCarthy <kevin@8t8.us>
- * Copyright (C) 2018 Richard Russon <rich@flatcap.org>
+ * Copyright (C) 2018-2019 Richard Russon <rich@flatcap.org>
  *
  * @copyright
  * This program is free software: you can redistribute it and/or modify it under
  */
 
 /**
- * @page mailbox Representation of a mailbox
+ * @page core_mailbox Representation of a Mailbox
  *
- * Representation of a mailbox
+ * Representation of a Mailbox
  */
 
 #include "config.h"
 #include <sys/stat.h>
-#include <utime.h>
+#include "config/lib.h"
 #include "email/lib.h"
 #include "mailbox.h"
-#include "globals.h"
-#include "maildir/lib.h"
 #include "neomutt.h"
 
 /**
  * mailbox_new - Create a new Mailbox
+ * @param name Name for the Mailbox
  * @retval ptr New Mailbox
  */
 struct Mailbox *mailbox_new(void)
@@ -61,7 +60,7 @@ void mailbox_free(struct Mailbox **ptr)
     return;
 
   struct Mailbox *m = *ptr;
-  mutt_mailbox_changed(m, MBN_CLOSED);
+  mailbox_changed(m, MBN_CLOSED);
   notify_free(&m->notify);
 
   mutt_buffer_free(&m->pathbuf);
@@ -73,65 +72,11 @@ void mailbox_free(struct Mailbox **ptr)
 }
 
 /**
- * mutt_mailbox_cleanup - Restore the timestamp of a mailbox
- * @param path Path to the mailbox
- * @param st   Timestamp info from stat()
- *
- * Fix up the atime and mtime after mbox/mmdf mailbox was modified according to
- * stat() info taken before a modification.
- */
-void mutt_mailbox_cleanup(const char *path, struct stat *st)
-{
-#ifdef HAVE_UTIMENSAT
-  struct timespec ts[2];
-#else
-  struct utimbuf ut;
-#endif
-
-  if (C_CheckMboxSize)
-  {
-    struct Mailbox *m = mutt_mailbox_find(path);
-    if (m && !m->has_new)
-      mutt_mailbox_update(m);
-  }
-  else
-  {
-    /* fix up the times so mailbox won't get confused */
-    if (st->st_mtime > st->st_atime)
-    {
-#ifdef HAVE_UTIMENSAT
-      ts[0].tv_sec = 0;
-      ts[0].tv_nsec = UTIME_OMIT;
-      ts[1].tv_sec = 0;
-      ts[1].tv_nsec = UTIME_NOW;
-      utimensat(0, buf, ts, 0);
-#else
-      ut.actime = st->st_atime;
-      ut.modtime = time(NULL);
-      utime(path, &ut);
-#endif
-    }
-    else
-    {
-#ifdef HAVE_UTIMENSAT
-      ts[0].tv_sec = 0;
-      ts[0].tv_nsec = UTIME_NOW;
-      ts[1].tv_sec = 0;
-      ts[1].tv_nsec = UTIME_NOW;
-      utimensat(0, buf, ts, 0);
-#else
-      utime(path, NULL);
-#endif
-    }
-  }
-}
-
-/**
- * mutt_mailbox_find - Find the mailbox with a given path
+ * mailbox_find - Find the mailbox with a given path
  * @param path Path to match
  * @retval ptr Matching Mailbox
  */
-struct Mailbox *mutt_mailbox_find(const char *path)
+struct Mailbox *mailbox_find(const char *path)
 {
   if (!path)
     return NULL;
@@ -160,14 +105,14 @@ struct Mailbox *mutt_mailbox_find(const char *path)
 }
 
 /**
- * mutt_mailbox_find_name - Find the mailbox with a given name
+ * mailbox_find_name - Find the mailbox with a given name
  * @param name Name to match
  * @retval ptr Matching Mailbox
  * @retval NULL No matching mailbox found
  *
  * @note This searches across all Accounts
  */
-struct Mailbox *mutt_mailbox_find_name(const char *name)
+struct Mailbox *mailbox_find_name(const char *name)
 {
   if (!name)
     return NULL;
@@ -189,10 +134,12 @@ struct Mailbox *mutt_mailbox_find_name(const char *name)
 }
 
 /**
- * mutt_mailbox_update - Get the mailbox's current size
+ * mailbox_update - Get the mailbox's current size
  * @param m Mailbox to check
+ *
+ * @note Only applies to local Mailboxes
  */
-void mutt_mailbox_update(struct Mailbox *m)
+void mailbox_update(struct Mailbox *m)
 {
   struct stat sb;
 
@@ -206,11 +153,11 @@ void mutt_mailbox_update(struct Mailbox *m)
 }
 
 /**
- * mutt_mailbox_changed - Notify observers of a change to a Mailbox
+ * mailbox_changed - Notify observers of a change to a Mailbox
  * @param m      Mailbox
  * @param action Change to Mailbox
  */
-void mutt_mailbox_changed(struct Mailbox *m, enum MailboxNotification action)
+void mailbox_changed(struct Mailbox *m, enum MailboxNotification action)
 {
   if (!m)
     return;
@@ -219,21 +166,21 @@ void mutt_mailbox_changed(struct Mailbox *m, enum MailboxNotification action)
 }
 
 /**
- * mutt_mailbox_size_add - Add an email's size to the total size of a Mailbox
+ * mailbox_size_add - Add an email's size to the total size of a Mailbox
  * @param m Mailbox
  * @param e Email
  */
-void mutt_mailbox_size_add(struct Mailbox *m, const struct Email *e)
+void mailbox_size_add(struct Mailbox *m, const struct Email *e)
 {
   m->size += mutt_email_size(e);
 }
 
 /**
- * mutt_mailbox_size_sub - Subtract an email's size from the total size of a Mailbox
+ * mailbox_size_sub - Subtract an email's size from the total size of a Mailbox
  * @param m Mailbox
  * @param e Email
  */
-void mutt_mailbox_size_sub(struct Mailbox *m, const struct Email *e)
+void mailbox_size_sub(struct Mailbox *m, const struct Email *e)
 {
   m->size -= mutt_email_size(e);
 }
diff --git a/core/mailbox.h b/core/mailbox.h
new file mode 100644 (file)
index 0000000..54675c7
--- /dev/null
@@ -0,0 +1,190 @@
+/**
+ * @file
+ * Representation of a mailbox
+ *
+ * @authors
+ * Copyright (C) 1996-2000,2010,2013 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2018-2019 Richard Russon <rich@flatcap.org>
+ *
+ * @copyright
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MUTT_CORE_MAILBOX_H
+#define MUTT_CORE_MAILBOX_H
+
+#include "config.h"
+#include <stdbool.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <time.h>
+#include "mutt/mutt.h"
+
+struct ConfigSubset;
+struct Email;
+
+#define MB_NORMAL 0
+#define MB_HIDDEN 1
+
+/**
+ * enum MailboxType - Supported mailbox formats
+ */
+enum MailboxType
+{
+  MUTT_MAILBOX_ANY = -2,   ///< Match any Mailbox type
+  MUTT_MAILBOX_ERROR = -1, ///< Error occurred examining Mailbox
+  MUTT_UNKNOWN = 0,        ///< Mailbox wasn't recognised
+  MUTT_MBOX,               ///< 'mbox' Mailbox type
+  MUTT_MMDF,               ///< 'mmdf' Mailbox type
+  MUTT_MH,                 ///< 'MH' Mailbox type
+  MUTT_MAILDIR,            ///< 'Maildir' Mailbox type
+  MUTT_NNTP,               ///< 'NNTP' (Usenet) Mailbox type
+  MUTT_IMAP,               ///< 'IMAP' Mailbox type
+  MUTT_NOTMUCH,            ///< 'Notmuch' (virtual) Mailbox type
+  MUTT_POP,                ///< 'POP3' Mailbox type
+  MUTT_COMPRESSED,         ///< Compressed file Mailbox type
+};
+
+/**
+ * enum MailboxNotification - Notifications about changes to a Mailbox
+ */
+enum MailboxNotification
+{
+  MBN_CLOSED = 1, ///< Mailbox was closed
+  MBN_INVALID,    ///< Email list was changed
+  MBN_RESORT,     ///< Email list needs resorting
+  MBN_UPDATE,     ///< Update internal tables
+  MBN_UNTAG,      ///< Clear the 'last-tagged' pointer
+};
+
+/**
+ * ACL Rights - These show permission to...
+ */
+typedef uint16_t AclFlags;          ///< Flags, e.g. #MUTT_ACL_ADMIN
+#define MUTT_ACL_NO_FLAGS       0   ///< No flags are set
+#define MUTT_ACL_ADMIN   (1 <<  0)  ///< Administer the account (get/set permissions)
+#define MUTT_ACL_CREATE  (1 <<  1)  ///< Create a mailbox
+#define MUTT_ACL_DELETE  (1 <<  2)  ///< Delete a message
+#define MUTT_ACL_DELMX   (1 <<  3)  ///< Delete a mailbox
+#define MUTT_ACL_EXPUNGE (1 <<  4)  ///< Expunge messages
+#define MUTT_ACL_INSERT  (1 <<  5)  ///< Add/copy into the mailbox (used when editing a message)
+#define MUTT_ACL_LOOKUP  (1 <<  6)  ///< Lookup mailbox (visible to 'list')
+#define MUTT_ACL_POST    (1 <<  7)  ///< Post (submit messages to the server)
+#define MUTT_ACL_READ    (1 <<  8)  ///< Read the mailbox
+#define MUTT_ACL_SEEN    (1 <<  9)  ///< Change the 'seen' status of a message
+#define MUTT_ACL_WRITE   (1 << 10)  ///< Write to a message (for flagging or linking threads)
+
+#define MUTT_ACL_ALL    ((1 << 11) - 1)
+
+/**
+ * struct Mailbox - A mailbox
+ */
+struct Mailbox
+{
+  struct Buffer *pathbuf;
+  char *realpath;                     ///< Used for duplicate detection, context comparison, and the sidebar
+  char *name;                         ///< A short name for the Mailbox
+  struct ConfigSubset *sub;           ///< Inherited config items
+  off_t size;                         ///< Size of the Mailbox
+  bool has_new;                       ///< Mailbox has new mail
+
+  // These next three are only set when MailCheckStats is set
+  int msg_count;                      ///< Total number of messages
+  int msg_unread;                     ///< Number of unread messages
+  int msg_flagged;                    ///< Number of flagged messages
+
+  int msg_new;                        ///< Number of new messages
+  int msg_deleted;                    ///< Number of deleted messages
+  int msg_tagged;                     ///< How many messages are tagged?
+
+  struct Email **emails;              ///< Array of Emails
+  int email_max;                      ///< Number of pointers in emails
+  int *v2r;                           ///< Mapping from virtual to real msgno
+  int vcount;                         ///< The number of virtual messages
+
+  bool notified;                      ///< User has been notified
+  enum MailboxType magic;             ///< Mailbox type
+  bool newly_created;                 ///< Mbox or mmdf just popped into existence
+  struct timespec mtime;              ///< Time Mailbox was last changed
+  struct timespec last_visited;       ///< Time of last exit from this mailbox
+  struct timespec stats_last_checked; ///< Mtime of mailbox the last time stats where checked.
+
+  const struct MxOps *mx_ops;         ///< MXAPI callback functions
+
+  bool append                 : 1;    ///< Mailbox is opened in append mode
+  bool changed                : 1;    ///< Mailbox has been modified
+  bool dontwrite              : 1;    ///< Don't write the mailbox on close
+  bool first_check_stats_done : 1;    ///< True when the check have been done at least on time
+  bool peekonly               : 1;    ///< Just taking a glance, revert atime
+  bool quiet                  : 1;    ///< Inhibit status messages?
+  bool readonly               : 1;    ///< Don't allow changes to the mailbox
+
+  AclFlags rights;                    ///< ACL bits, see #AclFlags
+
+#ifdef USE_COMPRESSED
+  void *compress_info;                ///< Compressed mbox module private data
+#endif
+
+  struct Hash *id_hash;               ///< Hash table by msg id
+  struct Hash *subj_hash;             ///< Hash table by subject
+  struct Hash *label_hash;            ///< Hash table for x-labels
+
+  struct Account *account;            ///< Account that owns this Mailbox
+  int opened;                         ///< Number of times mailbox is opened
+
+  int flags;                          ///< e.g. #MB_NORMAL
+
+  void *mdata;                        ///< Driver specific data
+  void (*free_mdata)(void **);        ///< Driver-specific data free function
+
+  struct Notify *notify;              ///< Notifications handler
+};
+
+/**
+ * struct MailboxNode - List of Mailboxes
+ */
+struct MailboxNode
+{
+  struct Mailbox *mailbox;           ///< Mailbox in the list
+  STAILQ_ENTRY(MailboxNode) entries; ///< Linked list
+};
+STAILQ_HEAD(MailboxList, MailboxNode);
+
+/**
+ * struct EventMailbox - An Event that happened to a Mailbox
+ */
+struct EventMailbox
+{
+  struct Mailbox *mailbox; ///< The Mailbox this Event relates to
+};
+
+/**
+ * enum NotifyMailbox - Types of Mailbox Event
+ */
+enum NotifyMailbox
+{
+  NT_MAILBOX_ADD = 1, ///< A new Mailbox has been created
+  NT_MAILBOX_REMOVE,  ///< A Mailbox is about to be destroyed
+};
+
+void            mailbox_changed   (struct Mailbox *m, enum MailboxNotification action);
+struct Mailbox *mailbox_find      (const char *path);
+struct Mailbox *mailbox_find_name (const char *name);
+void            mailbox_free      (struct Mailbox **ptr);
+struct Mailbox *mailbox_new       (void);
+void            mailbox_size_add  (struct Mailbox *m, const struct Email *e);
+void            mailbox_size_sub  (struct Mailbox *m, const struct Email *e);
+void            mailbox_update    (struct Mailbox *m);
+
+#endif /* MUTT_CORE_MAILBOX_H */
similarity index 91%
rename from neomutt.c
rename to core/neomutt.c
index 92d3984a29f6d578e29adce0b43d4d64ac1b2fe6..9369e7beee7e855d9805197598e14513c43c429d 100644 (file)
--- a/neomutt.c
  */
 
 /**
- * @page neomutt Container for Accounts, Notifications
+ * @page core_neomutt Container for Accounts, Notifications
  *
  * Container for Accounts, Notifications
  */
 
 #include "config.h"
+#include <stddef.h>
 #include "mutt/mutt.h"
+#include "config/lib.h"
 #include "neomutt.h"
 #include "account.h"
+#include "mailbox.h"
 
 struct NeoMutt *NeoMutt; ///< Global NeoMutt object
 
 /**
  * neomutt_new - Create the master NeoMutt object
+ * @param cs Config Set
  * @retval ptr New NeoMutt
  */
 struct NeoMutt *neomutt_new(struct ConfigSet *cs)
 {
+  if (!cs)
+    return NULL;
+
   struct NeoMutt *n = mutt_mem_calloc(1, sizeof(*NeoMutt));
 
   TAILQ_INIT(&n->accounts);
@@ -121,6 +128,8 @@ bool neomutt_account_remove(struct NeoMutt *n, struct Account *a)
 /**
  * neomutt_mailboxlist_clear - Free a Mailbox List
  * @param ml Mailbox List to free
+ *
+ * @note The Mailboxes aren't freed
  */
 void neomutt_mailboxlist_clear(struct MailboxList *ml)
 {
@@ -138,11 +147,11 @@ void neomutt_mailboxlist_clear(struct MailboxList *ml)
 
 /**
  * neomutt_mailboxlist_get_all - Get a List of all Mailboxes
- * @param n    NeoMutt
- * @param type Type of Account to match, see #MailboxType
+ * @param n     NeoMutt
+ * @param magic Type of Account to match, see #MailboxType
  * @retval obj List of Mailboxes
  *
- * @note If type is #MUTT_MAILBOX_ANY then all Mailbox types will be matched
+ * @note If magic is #MUTT_MAILBOX_ANY then all Mailbox types will be matched
  */
 struct MailboxList neomutt_mailboxlist_get_all(struct NeoMutt *n, enum MailboxType magic)
 {
similarity index 79%
rename from neomutt.h
rename to core/neomutt.h
index 914e2bcfed208e9e75b09b776425c07475662261..81508515be2ed6bab07ca3f45ce8be9ac969d15a 100644 (file)
--- a/neomutt.h
  * this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef MUTT_NEOMUTT_H
-#define MUTT_NEOMUTT_H
+#ifndef MUTT_CORE_NEOMUTT_H
+#define MUTT_CORE_NEOMUTT_H
 
 #include <stdbool.h>
 #include "account.h"
+#include "mailbox.h"
 
-struct Notify;
+struct ConfigSet;
 
 /**
  * struct NeoMutt - Container for Accounts, Notifications
@@ -50,12 +51,12 @@ enum NotifyGlobal
   NT_GLOBAL_TIMEOUT,     ///< A timer has elapsed
 };
 
-bool            neomutt_account_add(struct NeoMutt *n, struct Account *a);
+bool            neomutt_account_add   (struct NeoMutt *n, struct Account *a);
 bool            neomutt_account_remove(struct NeoMutt *n, struct Account *a);
-void            neomutt_free(struct NeoMutt **ptr);
-struct NeoMutt *neomutt_new(struct ConfigSet *cs);
+void            neomutt_free          (struct NeoMutt **ptr);
+struct NeoMutt *neomutt_new           (struct ConfigSet *cs);
 
-void               neomutt_mailboxlist_clear(struct MailboxList *ml);
+void               neomutt_mailboxlist_clear  (struct MailboxList *ml);
 struct MailboxList neomutt_mailboxlist_get_all(struct NeoMutt *n, enum MailboxType magic);
 
-#endif /* MUTT_NEOMUTT_H */
+#endif /* MUTT_CORE_NEOMUTT_H */
index 486fed55afead6f5473b9cb9cf5da997b8424f30..b06c71a644aa1ae8b3254f39cd896db8bc9d8fe1 100644 (file)
@@ -49,9 +49,9 @@
 #include "curs_lib.h"
 #include "browser.h"
 #include "context.h"
+#include "core/lib.h"
 #include "enter_state.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_logging.h"
 #include "mutt_menu.h"
diff --git a/edit.c b/edit.c
index 84249f467888d38e6a8a3531eadc611b75fcad7a..2e36b01c7c42cb737292ca6e4c9252e86b6f7032 100644 (file)
--- a/edit.c
+++ b/edit.c
 #include "email/lib.h"
 #include "alias.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "hdrline.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_header.h"
 #include "mutt_window.h"
index b6bad5c4a30e9cff8c586229702838ac4ead24da..c5da0b53e659cb0c0b3563782dfe7b294469fbca 100644 (file)
--- a/editmsg.c
+++ b/editmsg.c
@@ -41,9 +41,9 @@
 #include "mutt.h"
 #include "context.h"
 #include "copy.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "muttlib.h"
 #include "mx.h"
 #include "protos.h"
diff --git a/enter.c b/enter.c
index 2c96396e0b91e47d585863cf19acd9d987e787b7..d721c3d4ee317808d74f5a04db3d1cd0c85ab876 100644 (file)
--- a/enter.c
+++ b/enter.c
 #include "alias.h"
 #include "browser.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "enter_state.h"
 #include "globals.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_history.h"
 #include "mutt_mailbox.h"
diff --git a/flags.c b/flags.c
index 5a0ee52525ca4979cd5786344aea85a3995d36ca..12f76b0f323abd1d57ad1ab5c9b2ebe960a9ec80 100644 (file)
--- a/flags.c
+++ b/flags.c
 #include "email/lib.h"
 #include "mutt.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "index.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
 #include "mutt_window.h"
index 6b16b5b2bd8dfb6fc3b55003c355ba2c39ace00c..48914f575945a4d03e75ce19c84fb7ab9cf00419 100644 (file)
--- a/hdrline.c
+++ b/hdrline.c
 #include "hdrline.h"
 #include "alias.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "format_flags.h"
 #include "globals.h"
 #include "hook.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
 #include "mutt_parse.h"
index eef72a68e20c80c5b4ab4c6b00d735ba409ab0a3..d264f59153b4cdb969fe974939873f6d5b9410c0 100644 (file)
 #include "conn/conn.h"
 #include "mutt.h"
 #include "browser.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "imap/imap.h"
-#include "mailbox.h"
 #include "mutt_logging.h"
 #include "muttlib.h"
-#include "neomutt.h"
 
 /**
  * add_folder - Format and add an IMAP folder to the browser
index eedf2179908dd9d52ce67cc27d2a6ac5cdaa29ff..4c6cfa60cc61f06eeb2048a017ec5e80232d2a84 100644 (file)
@@ -43,8 +43,8 @@
 #include "email/lib.h"
 #include "conn/conn.h"
 #include "mutt.h"
+#include "core/lib.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "message.h"
 #include "mutt_account.h"
 #include "mutt_logging.h"
index c5edfe08499b9437aaad8ce88af8fd4c097e4c1a..f19c7ae97d15b201f4d41be7cd23b1b0157967d7 100644 (file)
 #include "conn/conn.h"
 #include "mutt.h"
 #include "imap.h"
-#include "account.h"
 #include "auth.h"
 #include "commands.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "hook.h"
-#include "mailbox.h"
 #include "message.h"
 #include "mutt_account.h"
 #include "mutt_logging.h"
 #include "mutt_socket.h"
 #include "muttlib.h"
 #include "mx.h"
-#include "neomutt.h"
 #include "pattern.h"
 #include "progress.h"
 #include "sort.h"
@@ -839,8 +837,8 @@ void imap_expunge_mailbox(struct Mailbox *m)
   imap_hcache_close(mdata);
 #endif
 
-  mutt_mailbox_changed(m, MBN_UPDATE);
-  mutt_mailbox_changed(m, MBN_RESORT);
+  mailbox_changed(m, MBN_UPDATE);
+  mailbox_changed(m, MBN_RESORT);
 }
 
 /**
index 05bc19e4fff1db0d7af1a4b94cb712dfd470395f..d411aa888012437c721482af92bab9adfc639f19 100644 (file)
 #include "mutt.h"
 #include "message.h"
 #include "bcache.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "hcache/hcache.h"
 #include "imap/imap.h"
-#include "mailbox.h"
 #include "mutt_account.h"
 #include "mutt_curses.h"
 #include "mutt_logging.h"
@@ -828,7 +828,7 @@ static int read_headers_normal_eval_cache(struct ImapAccountData *adata,
         FREE(&tags_copy);
 
         m->msg_count++;
-        mutt_mailbox_size_add(m, m->emails[idx]);
+        mailbox_size_add(m, m->emails[idx]);
 
         /* If this is the first time we are fetching, we need to
          * store the current state of flags back into the header cache */
@@ -908,7 +908,7 @@ static int read_headers_qresync_eval_cache(struct ImapAccountData *adata, char *
       edata->uid = uid;
       mutt_hash_int_insert(mdata->uid_hash, uid, e);
 
-      mutt_mailbox_size_add(m, e);
+      mailbox_size_add(m, e);
       m->emails[m->msg_count++] = e;
 
       msn++;
@@ -1184,7 +1184,7 @@ static int read_headers_fetch_new(struct Mailbox *m, unsigned int msn_begin,
         m->emails[idx]->env = mutt_rfc822_read_header(fp, m->emails[idx], false, false);
         /* content built as a side-effect of mutt_rfc822_read_header */
         m->emails[idx]->content->length = h.content_length;
-        mutt_mailbox_size_add(m, m->emails[idx]);
+        mailbox_size_add(m, m->emails[idx]);
 
 #ifdef USE_HCACHE
         imap_hcache_put(mdata, m->emails[idx]);
index 45ffb40497a90ea2846d81eb5474f0d3276c548d..494f105fb82f035e59440781901a7081046c223e 100644 (file)
 #include "config/lib.h"
 #include "email/lib.h"
 #include "conn/conn.h"
-#include "account.h"
 #include "bcache.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "hcache/hcache.h"
 #include "imap/imap.h"
-#include "mailbox.h"
 #include "message.h"
 #include "mutt_account.h"
-#include "neomutt.h"
 #include "options.h"
 
 /* These Config Variables are only used in imap/util.c */
diff --git a/index.c b/index.c
index fc7575440ebc9ff4e796b086478d23367422824a..d85fd35e3aeb714d087c10a974706e1da1970784 100644 (file)
--- a/index.c
+++ b/index.c
 #include "conn/conn.h"
 #include "mutt.h"
 #include "index.h"
-#include "account.h"
 #include "alias.h"
 #include "browser.h"
 #include "commands.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "format_flags.h"
 #include "globals.h"
 #include "hdrline.h"
 #include "hook.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_account.h"
 #include "mutt_curses.h"
 #include "mutt_header.h"
@@ -63,7 +62,6 @@
 #include "muttlib.h"
 #include "mx.h"
 #include "ncrypt/ncrypt.h"
-#include "neomutt.h"
 #include "opcodes.h"
 #include "options.h"
 #include "pager.h"
@@ -625,7 +623,7 @@ static int main_change_folder(struct Menu *menu, int op, struct Mailbox *m,
   {
     // Try to see if the buffer matches a description before we bail.
     // We'll receive a non-null pointer if there is a corresponding mailbox.
-    m = mutt_mailbox_find_name(buf);
+    m = mailbox_find_name(buf);
     if (m)
     {
       mutt_str_strfcpy(buf, mutt_b2s(m->pathbuf), buflen);
diff --git a/init.c b/init.c
index 6f7b2e7cba9f066687b567739d1a2e279d90135f..c882ee91bd1c8ef492c152a2a67ddd630c646eaa 100644 (file)
--- a/init.c
+++ b/init.c
@@ -47,9 +47,9 @@
 #include "email/lib.h"
 #include "mutt.h"
 #include "init.h"
-#include "account.h"
 #include "alias.h"
 #include "context.h"
+#include "core/lib.h"
 #include "filter.h"
 #include "hcache/hcache.h"
 #include "keymap.h"
@@ -60,7 +60,6 @@
 #include "mx.h"
 #include "myvar.h"
 #include "ncrypt/ncrypt.h"
-#include "neomutt.h"
 #include "options.h"
 #include "protos.h"
 #include "sidebar.h"
diff --git a/init.h b/init.h
index d5ff04ed5d7b8dd3fdbf0b99d6f7f9c6f571a04a..5402c519fb4de4b511da90e000849cee97c9e177 100644 (file)
--- a/init.h
+++ b/init.h
@@ -50,7 +50,7 @@
 #include "imap/imap.h"
 #include "index.h"
 #include "keymap.h"
-#include "mailbox.h"
+#include "core/lib.h"
 #include "maildir/lib.h"
 #include "main.h"
 #include "mutt_account.h"
diff --git a/mailbox.h b/mailbox.h
deleted file mode 100644 (file)
index 43f2151..0000000
--- a/mailbox.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- * @file
- * Representation of a mailbox
- *
- * @authors
- * Copyright (C) 1996-2000,2010,2013 Michael R. Elkins <me@mutt.org>
- * Copyright (C) 2018 Richard Russon <rich@flatcap.org>
- *
- * @copyright
- * This program is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 2 of the License, or (at your option) any later
- * version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef MUTT_MAILBOX_H
-#define MUTT_MAILBOX_H
-
-#include <stdbool.h>
-#include <sys/types.h>
-#include <time.h>
-#include "mutt/mutt.h"
-#include "config.h"
-#include <stdint.h>
-
-struct Email;
-struct stat;
-
-#define MB_NORMAL 0
-#define MB_HIDDEN 1
-
-/**
- * enum MailboxType - Supported mailbox formats
- */
-enum MailboxType
-{
-  MUTT_MAILBOX_ANY = -2,   ///< Match any Mailbox type
-  MUTT_MAILBOX_ERROR = -1, ///< Error occurred examining Mailbox
-  MUTT_UNKNOWN = 0,        ///< Mailbox wasn't recognised
-  MUTT_MBOX,               ///< 'mbox' Mailbox type
-  MUTT_MMDF,               ///< 'mmdf' Mailbox type
-  MUTT_MH,                 ///< 'MH' Mailbox type
-  MUTT_MAILDIR,            ///< 'Maildir' Mailbox type
-  MUTT_NNTP,               ///< 'NNTP' (Usenet) Mailbox type
-  MUTT_IMAP,               ///< 'IMAP' Mailbox type
-  MUTT_NOTMUCH,            ///< 'Notmuch' (virtual) Mailbox type
-  MUTT_POP,                ///< 'POP3' Mailbox type
-  MUTT_COMPRESSED,         ///< Compressed file Mailbox type
-};
-
-/**
- * enum MailboxNotification - Notifications about changes to a Mailbox
- */
-enum MailboxNotification
-{
-  MBN_CLOSED = 1, ///< Mailbox was closed
-  MBN_INVALID,    ///< Email list was changed
-  MBN_RESORT,     ///< Email list needs resorting
-  MBN_UPDATE,     ///< Update internal tables
-  MBN_UNTAG,      ///< Clear the 'last-tagged' pointer
-};
-
-/**
- * ACL Rights - These show permission to...
- */
-typedef uint16_t AclFlags;          ///< Flags, e.g. #MUTT_ACL_ADMIN
-#define MUTT_ACL_NO_FLAGS       0   ///< No flags are set
-#define MUTT_ACL_ADMIN   (1 <<  0)  ///< Administer the account (get/set permissions)
-#define MUTT_ACL_CREATE  (1 <<  1)  ///< Create a mailbox
-#define MUTT_ACL_DELETE  (1 <<  2)  ///< Delete a message
-#define MUTT_ACL_DELMX   (1 <<  3)  ///< Delete a mailbox
-#define MUTT_ACL_EXPUNGE (1 <<  4)  ///< Expunge messages
-#define MUTT_ACL_INSERT  (1 <<  5)  ///< Add/copy into the mailbox (used when editing a message)
-#define MUTT_ACL_LOOKUP  (1 <<  6)  ///< Lookup mailbox (visible to 'list')
-#define MUTT_ACL_POST    (1 <<  7)  ///< Post (submit messages to the server)
-#define MUTT_ACL_READ    (1 <<  8)  ///< Read the mailbox
-#define MUTT_ACL_SEEN    (1 <<  9)  ///< Change the 'seen' status of a message
-#define MUTT_ACL_WRITE   (1 << 10)  ///< Write to a message (for flagging or linking threads)
-
-#define MUTT_ACL_ALL    ((1 << 11) - 1)
-
-/**
- * struct Mailbox - A mailbox
- */
-struct Mailbox
-{
-  struct Buffer *pathbuf;
-  char *realpath; ///< used for duplicate detection, context comparison, and the sidebar
-  char *name;
-  struct ConfigSubset *sub; ///< Inherited config items
-  off_t size;
-  bool has_new; /**< mailbox has new mail */
-
-  /* These next three are only set when MailCheckStats is set */
-  int msg_count;             /**< total number of messages */
-  int msg_unread;            /**< number of unread messages */
-  int msg_flagged;           /**< number of flagged messages */
-  int msg_new;               /**< number of new messages */
-  int msg_deleted;           /**< number of deleted messages */
-  int msg_tagged;            /**< how many messages are tagged? */
-
-  struct Email **emails;
-  int email_max;               /**< number of pointers in emails */
-  int *v2r;                 /**< mapping from virtual to real msgno */
-  int vcount;               /**< the number of virtual messages */
-
-  bool notified;             /**< user has been notified */
-  enum MailboxType magic;    /**< mailbox type */
-  bool newly_created;        /**< mbox or mmdf just popped into existence */
-  struct timespec mtime;
-  struct timespec last_visited;       /**< time of last exit from this mailbox */
-  struct timespec stats_last_checked; /**< mtime of mailbox the last time stats where checked. */
-
-  const struct MxOps *mx_ops;
-
-  bool append                 : 1; /**< mailbox is opened in append mode */
-  bool changed                : 1; /**< mailbox has been modified */
-  bool dontwrite              : 1; /**< don't write the mailbox on close */
-  bool first_check_stats_done : 1; /**< true when the check have been done at least on time */
-  bool peekonly               : 1; /**< just taking a glance, revert atime */
-  bool quiet                  : 1; /**< inhibit status messages? */
-  bool readonly               : 1; /**< don't allow changes to the mailbox */
-
-  AclFlags rights; /**< ACL bits, see #AclFlags */
-
-#ifdef USE_COMPRESSED
-  void *compress_info; /**< compressed mbox module private data */
-#endif
-
-  struct Hash *id_hash;     /**< hash table by msg id */
-  struct Hash *subj_hash;   /**< hash table by subject */
-  struct Hash *label_hash;  /**< hash table for x-labels */
-
-  struct Account *account;
-  int opened;              /**< number of times mailbox is opened */
-
-  int flags; /**< e.g. #MB_NORMAL */
-
-  void *mdata;                 /**< driver specific data */
-  void (*free_mdata)(void **); /**< driver-specific data free function */
-
-  struct Notify *notify;        ///< Notifications handler
-};
-
-/**
- * struct MailboxNode - List of Mailboxes
- */
-struct MailboxNode
-{
-  struct Mailbox *mailbox;
-  STAILQ_ENTRY(MailboxNode) entries;
-};
-STAILQ_HEAD(MailboxList, MailboxNode);
-
-/**
- * struct EventMailbox - An Event that happened to a Mailbox
- */
-struct EventMailbox
-{
-  struct Mailbox *mailbox; ///< The Mailbox this Event relates to
-};
-
-/**
- * enum NotifyMailbox - Types of Mailbox Event
- */
-enum NotifyMailbox
-{
-  NT_MAILBOX_ADD = 1, ///< A new Mailbox has been created
-  NT_MAILBOX_REMOVE,  ///< A Mailbox is about to be destroyed
-};
-
-void            mailbox_free             (struct Mailbox **ptr);
-struct Mailbox *mailbox_new              (void);
-void            mutt_mailbox_changed     (struct Mailbox *m, enum MailboxNotification action);
-void            mutt_mailbox_cleanup     (const char *path, struct stat *st);
-struct Mailbox *mutt_mailbox_find        (const char *path);
-struct Mailbox *mutt_mailbox_find_name   (const char *name);
-void            mutt_mailbox_size_add    (struct Mailbox *m, const struct Email *e);
-void            mutt_mailbox_size_sub    (struct Mailbox *m, const struct Email *e);
-void            mutt_mailbox_update      (struct Mailbox *m);
-
-#endif /* MUTT_MAILBOX_H */
index c7a79106431194dc2ba60dd29510d0e240a59629..e27f8681be2d52feac200a625afe322bd2d221aa 100644 (file)
@@ -46,9 +46,9 @@
 #include "mutt/mutt.h"
 #include "config/lib.h"
 #include "email/lib.h"
+#include "core/lib.h"
 #include "globals.h"
 #include "hcache/hcache.h"
-#include "mailbox.h"
 #include "maildir/lib.h"
 #include "monitor.h"
 #include "muttlib.h"
@@ -505,7 +505,7 @@ int maildir_mbox_check(struct Mailbox *m, int *index_hint)
 
   /* If we didn't just get new mail, update the tables. */
   if (occult)
-    mutt_mailbox_changed(m, MBN_RESORT);
+    mailbox_changed(m, MBN_RESORT);
 
   /* do any delayed parsing we need to do. */
   maildir_delayed_parsing(m, &md, NULL);
@@ -514,7 +514,7 @@ int maildir_mbox_check(struct Mailbox *m, int *index_hint)
   num_new = maildir_move_to_mailbox(m, &md);
   if (num_new > 0)
   {
-    mutt_mailbox_changed(m, MBN_INVALID);
+    mailbox_changed(m, MBN_INVALID);
     m->changed = true;
   }
 
index f42a0926add348f3b055d767636b9931527fc2c5..dae1933fd159b0248d3fb31b7e2b997184815a38 100644 (file)
@@ -29,7 +29,7 @@
 #include <sys/types.h>
 #include <time.h>
 #include "config/lib.h"
-#include "mailbox.h"
+#include "core/lib.h"
 
 struct Account;
 struct Buffer;
index 3a67389ee9ff5440f46c8e8b734cf4c9a9a06a04..5cb8702bd77c9b8a24787b3354147328f1f53628 100644 (file)
 #include "mutt/mutt.h"
 #include "config/lib.h"
 #include "email/lib.h"
+#include "core/lib.h"
 #include "errno.h"
 #include "globals.h"
 #include "lib.h"
-#include "mailbox.h"
 #include "monitor.h"
 #include "mx.h"
 
@@ -703,13 +703,13 @@ int mh_mbox_check(struct Mailbox *m, int *index_hint)
 
   /* If we didn't just get new mail, update the tables. */
   if (occult)
-    mutt_mailbox_changed(m, MBN_RESORT);
+    mailbox_changed(m, MBN_RESORT);
 
   /* Incorporate new messages */
   num_new = maildir_move_to_mailbox(m, &md);
   if (num_new > 0)
   {
-    mutt_mailbox_changed(m, MBN_INVALID);
+    mailbox_changed(m, MBN_INVALID);
     m->changed = true;
   }
 
index 0ddf89d5904329ade075abae611c7dcc9b66b269..196509ea171b6939657f4a58571513e3e36a8be9 100644 (file)
 #include "mutt.h"
 #include "context.h"
 #include "copy.h"
+#include "core/lib.h"
 #include "globals.h"
 #include "hcache/hcache.h"
 #include "lib.h"
-#include "mailbox.h"
 #include "mutt_thread.h"
 #include "muttlib.h"
 #include "mx.h"
@@ -450,7 +450,7 @@ int maildir_move_to_mailbox(struct Mailbox *m, struct Maildir **ptr)
 
     m->emails[m->msg_count] = md->email;
     m->emails[m->msg_count]->index = m->msg_count;
-    mutt_mailbox_size_add(m, md->email);
+    mailbox_size_add(m, md->email);
 
     md->email = NULL;
     m->msg_count++;
diff --git a/main.c b/main.c
index 3fedd51481c5e49f56b37b9b532b1ea5a25f1497..8558deec322b92236b889a19442fe4a27a851b82 100644 (file)
--- a/main.c
+++ b/main.c
 #include "email/lib.h"
 #include "conn/conn.h"
 #include "mutt.h"
-#include "account.h"
 #include "alias.h"
 #include "browser.h"
 #include "color.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "hook.h"
 #include "index.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_attach.h"
 #include "mutt_curses.h"
 #include "mutt_history.h"
@@ -70,7 +69,6 @@
 #include "muttlib.h"
 #include "mx.h"
 #include "ncrypt/ncrypt.h"
-#include "neomutt.h"
 #include "options.h"
 #include "protos.h"
 #include "send.h"
@@ -1173,7 +1171,7 @@ int main(int argc, char *argv[], char *envp[])
       if (C_Spoolfile)
       {
         // Check if C_Spoolfile corresponds a mailboxes' description.
-        struct Mailbox *m_desc = mutt_mailbox_find_name(C_Spoolfile);
+        struct Mailbox *m_desc = mailbox_find_name(C_Spoolfile);
         if (m_desc)
           mutt_buffer_strcpy(folder, m_desc->realpath);
         else
index 4a0159ff039aeb4f7c66be33ce62bfef1bc8c57f..7ac7662a7ad70b99377e55fcd1f8f02596ccdfce 100644 (file)
 #include "email/lib.h"
 #include "mutt.h"
 #include "mbox.h"
-#include "account.h"
 #include "context.h"
 #include "copy.h"
+#include "core/lib.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "mutt_header.h"
 #include "muttlib.h"
 #include "mx.h"
@@ -571,7 +570,7 @@ static int reopen_mailbox(struct Mailbox *m, int *index_hint)
   {
     short old_sort = C_Sort;
     C_Sort = SORT_ORDER;
-    mutt_mailbox_changed(m, MBN_RESORT);
+    mailbox_changed(m, MBN_RESORT);
     C_Sort = old_sort;
   }
 
@@ -579,7 +578,7 @@ static int reopen_mailbox(struct Mailbox *m, int *index_hint)
   old_msg_count = 0;
 
   /* simulate a close */
-  mutt_mailbox_changed(m, MBN_CLOSED);
+  mailbox_changed(m, MBN_CLOSED);
   mutt_hash_free(&m->id_hash);
   mutt_hash_free(&m->subj_hash);
   mutt_hash_free(&m->label_hash);
@@ -995,7 +994,7 @@ static int mbox_mbox_check(struct Mailbox *m, int *index_hint)
   {
     if (mbox_mbox_open(m) < 0)
       return -1;
-    mutt_mailbox_changed(m, MBN_INVALID);
+    mailbox_changed(m, MBN_INVALID);
   }
 
   struct stat st;
@@ -1056,7 +1055,7 @@ static int mbox_mbox_check(struct Mailbox *m, int *index_hint)
             mmdf_parse_mailbox(m);
 
           if (m->msg_count > old_msg_count)
-            mutt_mailbox_changed(m, MBN_INVALID);
+            mailbox_changed(m, MBN_INVALID);
 
           /* Only unlock the folder if it was locked inside of this routine.
            * It may have been locked elsewhere, like in
@@ -1086,7 +1085,7 @@ static int mbox_mbox_check(struct Mailbox *m, int *index_hint)
   {
     if (reopen_mailbox(m, index_hint) != -1)
     {
-      mutt_mailbox_changed(m, MBN_INVALID);
+      mailbox_changed(m, MBN_INVALID);
       if (unlock)
       {
         mbox_unlock_mailbox(m);
@@ -1137,7 +1136,7 @@ static int mbox_mbox_sync(struct Mailbox *m, int *index_hint)
   {
     save_sort = C_Sort;
     C_Sort = SORT_ORDER;
-    mutt_mailbox_changed(m, MBN_RESORT);
+    mailbox_changed(m, MBN_RESORT);
     C_Sort = save_sort;
     need_sort = 1;
   }
@@ -1422,9 +1421,9 @@ static int mbox_mbox_sync(struct Mailbox *m, int *index_hint)
 
   if (C_CheckMboxSize)
   {
-    struct Mailbox *m_tmp = mutt_mailbox_find(mutt_b2s(m->pathbuf));
+    struct Mailbox *m_tmp = mailbox_find(mutt_b2s(m->pathbuf));
     if (m_tmp && !m_tmp->has_new)
-      mutt_mailbox_update(m_tmp);
+      mailbox_update(m_tmp);
   }
 
   return 0; /* signal success */
@@ -1465,7 +1464,7 @@ bail: /* Come here in case of disaster */
   {
     /* if the mailbox was reopened, the thread tree will be invalid so make
      * sure to start threading from scratch.  */
-    mutt_mailbox_changed(m, MBN_RESORT);
+    mailbox_changed(m, MBN_RESORT);
   }
 
   return rc;
diff --git a/menu.c b/menu.c
index 74030d294dca4ee7d36bdd2c157880e8ae7fee8a..9fdda6f0bfb3640af583126b572bde193eb97a9d 100644 (file)
--- a/menu.c
+++ b/menu.c
 #include "color.h"
 #include "commands.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_logging.h"
 #include "mutt_menu.h"
index b0fec9bd4ee57f800a668aa44dc2df4da26206c1..f1e97b439a20bf4d289176bffd3370814ad0b7bf 100644 (file)
--- a/monitor.c
+++ b/monitor.c
@@ -40,9 +40,9 @@
 #include "mutt/mutt.h"
 #include "monitor.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "mx.h"
 
@@ -541,7 +541,7 @@ int mutt_monitor_remove(struct Mailbox *m)
     }
     else
     {
-      if (mutt_mailbox_find(Context->mailbox->realpath))
+      if (mailbox_find(Context->mailbox->realpath))
       {
         rc = 1;
         goto cleanup;
index 403403b7682b4a7871a4d3ef4bcedb01b2f56669..0a508e22028db1308244a7c0f310f9f0420b73ac 100644 (file)
 #include "mutt_attach.h"
 #include "context.h"
 #include "copy.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "filter.h"
 #include "globals.h"
 #include "handler.h"
-#include "mailbox.h"
 #include "muttlib.h"
 #include "mx.h"
 #include "ncrypt/ncrypt.h"
index 54bd766c904a4e7999279fa96f62d9b5f3602f72..b3982a17d9e9ed6b3a854dd6140e7bb6aacade4a 100644 (file)
 #include "mutt.h"
 #include "alias.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "index.h"
-#include "mailbox.h"
 #include "muttlib.h"
 #include "ncrypt/ncrypt.h"
 #include "options.h"
index f11e25e68fd953c80e5c8cc7fc1117ce9f90ba26..3bf6ee8f636165b8e51ac08b859b31be8b17d3c1 100644 (file)
@@ -3,15 +3,15 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 #include <time.h>
+#include <utime.h>
 #include "mutt/mutt.h"
 #include "mutt_mailbox.h"
+#include "core/lib.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "mutt_menu.h"
 #include "mutt_window.h"
 #include "muttlib.h"
 #include "mx.h"
-#include "neomutt.h"
 #include "protos.h"
 
 static time_t MailboxTime = 0; /**< last time we started checking for mail */
@@ -341,3 +341,57 @@ void mutt_mailbox_next(struct Mailbox *m_cur, char *s, size_t slen)
 
   mutt_buffer_pool_release(&s_buf);
 }
+
+/**
+ * mutt_mailbox_cleanup - Restore the timestamp of a mailbox
+ * @param path Path to the mailbox
+ * @param st   Timestamp info from stat()
+ *
+ * Fix up the atime and mtime after mbox/mmdf mailbox was modified according to
+ * stat() info taken before a modification.
+ */
+void mutt_mailbox_cleanup(const char *path, struct stat *st)
+{
+#ifdef HAVE_UTIMENSAT
+  struct timespec ts[2];
+#else
+  struct utimbuf ut;
+#endif
+
+  if (C_CheckMboxSize)
+  {
+    struct Mailbox *m = mailbox_find(path);
+    if (m && !m->has_new)
+      mailbox_update(m);
+  }
+  else
+  {
+    /* fix up the times so mailbox won't get confused */
+    if (st->st_mtime > st->st_atime)
+    {
+#ifdef HAVE_UTIMENSAT
+      ts[0].tv_sec = 0;
+      ts[0].tv_nsec = UTIME_OMIT;
+      ts[1].tv_sec = 0;
+      ts[1].tv_nsec = UTIME_NOW;
+      utimensat(0, buf, ts, 0);
+#else
+      ut.actime = st->st_atime;
+      ut.modtime = time(NULL);
+      utime(path, &ut);
+#endif
+    }
+    else
+    {
+#ifdef HAVE_UTIMENSAT
+      ts[0].tv_sec = 0;
+      ts[0].tv_nsec = UTIME_NOW;
+      ts[1].tv_sec = 0;
+      ts[1].tv_nsec = UTIME_NOW;
+      utimensat(0, buf, ts, 0);
+#else
+      utime(path, NULL);
+#endif
+    }
+  }
+}
index 8703eb5baa877c64001886b8c2fba23b029e9f87..6cb8f6af9b7c6bfc5b107e0c9427cda878c08975 100644 (file)
@@ -6,6 +6,7 @@
 
 struct Buffer;
 struct Mailbox;
+struct stat;
 
 /* These Config Variables are only used in mutt_mailbox.c */
 extern short C_MailCheck;
@@ -17,6 +18,7 @@ extern short C_MailCheckStatsInterval;
 #define MUTT_MAILBOX_CHECK_FORCE_STATS (1 << 1)
 
 int  mutt_mailbox_check       (struct Mailbox *m_cur, int force);
+void mutt_mailbox_cleanup     (const char *path, struct stat *st);
 bool mutt_mailbox_list        (void);
 void mutt_mailbox_next        (struct Mailbox *m_cur, char *s, size_t slen);
 void mutt_mailbox_next_buffer (struct Mailbox *m_cur, struct Buffer *s);
index d21f29b70f0253823a2039fc288a732a0118ea82..a284d82ca0411227a06138cd75e0a710acf54037 100644 (file)
@@ -38,8 +38,8 @@
 #include "mutt.h"
 #include "mutt_thread.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
-#include "mailbox.h"
 #include "mutt_menu.h"
 #include "mx.h"
 #include "protos.h"
diff --git a/mx.c b/mx.c
index 88d85801e06f973e28ff3d6da09f73dafe5d3681..446105bffa88d37b03d44d2062a10c1236f1eb93 100644 (file)
--- a/mx.c
+++ b/mx.c
 #include "email/lib.h"
 #include "mutt.h"
 #include "mx.h"
-#include "account.h"
 #include "alias.h"
 #include "context.h"
 #include "copy.h"
+#include "core/lib.h"
 #include "globals.h"
 #include "hook.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "maildir/lib.h"
 #include "mbox/mbox.h"
 #include "mutt_header.h"
@@ -61,7 +60,6 @@
 #include "mutt_thread.h"
 #include "muttlib.h"
 #include "ncrypt/ncrypt.h"
-#include "neomutt.h"
 #include "opcodes.h"
 #include "options.h"
 #include "pattern.h"
@@ -411,7 +409,7 @@ void mx_fastclose_mailbox(struct Mailbox *m)
   if (m->mx_ops)
     m->mx_ops->mbox_close(m);
 
-  mutt_mailbox_changed(m, MBN_CLOSED);
+  mailbox_changed(m, MBN_CLOSED);
 
   mutt_hash_free(&m->subj_hash);
   mutt_hash_free(&m->id_hash);
@@ -886,7 +884,7 @@ int mx_mbox_sync(struct Mailbox *m, int *index_hint)
         m->msg_deleted = 0;
       }
     }
-    mutt_mailbox_changed(m, MBN_UNTAG);
+    mailbox_changed(m, MBN_UNTAG);
   }
 
   /* really only for IMAP - imap_sync_mailbox results in a call to
@@ -944,8 +942,8 @@ int mx_mbox_sync(struct Mailbox *m, int *index_hint)
       /* IMAP does this automatically after handling EXPUNGE */
       if (m->magic != MUTT_IMAP)
       {
-        mutt_mailbox_changed(m, MBN_UPDATE);
-        mutt_mailbox_changed(m, MBN_RESORT);
+        mailbox_changed(m, MBN_UPDATE);
+        mailbox_changed(m, MBN_RESORT);
       }
     }
   }
@@ -1031,7 +1029,7 @@ int mx_mbox_check(struct Mailbox *m, int *index_hint)
 
   int rc = m->mx_ops->mbox_check(m, index_hint);
   if ((rc == MUTT_NEW_MAIL) || (rc == MUTT_REOPENED))
-    mutt_mailbox_changed(m, MBN_INVALID);
+    mailbox_changed(m, MBN_INVALID);
 
   return rc;
 }
diff --git a/mx.h b/mx.h
index 3308d04af85cef5596a6b519ef27472d82b46eda..35eea0b410dcd391dc603be20d966a48329c116c 100644 (file)
--- a/mx.h
+++ b/mx.h
@@ -30,7 +30,7 @@
 #include <time.h>
 #include "config/lib.h"
 #include "hcache/hcache.h"
-#include "mailbox.h"
+#include "core/lib.h"
 
 struct Email;
 struct Context;
index d75c44413e1fc2572a69b8f2aadbf3e291c5e2d8..67cdb189b995516ccdcf51faf26fba6f4a83b09e 100644 (file)
@@ -32,9 +32,9 @@
 #include "email/lib.h"
 #include "browser.h"
 #include "context.h"
+#include "core/lib.h"
 #include "format_flags.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "muttlib.h"
 #include "nntp.h"
 
index 2c8b309e14477e348736a0dd3d9d235f5a130ee6..e779aba159ae3334f0e749fe6dbfc98d2c63d807 100644 (file)
 #include "conn/conn.h"
 #include "mutt.h"
 #include "bcache.h"
+#include "core/lib.h"
 #include "format_flags.h"
 #include "globals.h"
 #include "hcache/hcache.h"
-#include "mailbox.h"
 #include "mutt_account.h"
 #include "mutt_logging.h"
 #include "mutt_socket.h"
@@ -307,7 +307,7 @@ void nntp_newsrc_gen_entries(struct Mailbox *m)
   {
     save_sort = C_Sort;
     C_Sort = SORT_ORDER;
-    mutt_mailbox_changed(m, MBN_RESORT);
+    mailbox_changed(m, MBN_RESORT);
   }
 
   entries = mdata->newsrc_len;
@@ -372,7 +372,7 @@ void nntp_newsrc_gen_entries(struct Mailbox *m)
   if (save_sort != C_Sort)
   {
     C_Sort = save_sort;
-    mutt_mailbox_changed(m, MBN_RESORT);
+    mailbox_changed(m, MBN_RESORT);
   }
 }
 
index 4448f1c3a36973682179e014797aebd31cdc592a..af82628990e6b07fdd7b28a4f9cdaa5980db7334 100644 (file)
 #include "conn/conn.h"
 #include "mutt.h"
 #include "nntp.h"
-#include "account.h"
 #include "bcache.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "hcache/hcache.h"
 #include "hook.h"
-#include "mailbox.h"
 #include "mutt_account.h"
 #include "mutt_logging.h"
 #include "mutt_parse.h"
@@ -1695,7 +1694,7 @@ static int check_mailbox(struct Mailbox *m)
 
   /* some headers were removed, context must be updated */
   if (rc == MUTT_REOPENED)
-    mutt_mailbox_changed(m, MBN_INVALID);
+    mailbox_changed(m, MBN_INVALID);
 
   /* fetch headers of new articles */
   if (mdata->last_message > mdata->last_loaded)
@@ -1716,7 +1715,7 @@ static int check_mailbox(struct Mailbox *m)
     if (rc2 == 0)
     {
       if (m->msg_count > old_msg_count)
-        mutt_mailbox_changed(m, MBN_INVALID);
+        mailbox_changed(m, MBN_INVALID);
       mdata->last_loaded = mdata->last_message;
     }
     if ((rc == 0) && (m->msg_count > oldmsgcount))
index 7a66158f3700d80dd046200cfb593ecfd9fd1028..fc413c4d9b87db0e83bb62e51728fafc50fd4b8b 100644 (file)
 #include "email/lib.h"
 #include "mutt.h"
 #include "mutt_notmuch.h"
-#include "account.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "globals.h"
 #include "hcache/hcache.h"
 #include "index.h"
-#include "mailbox.h"
 #include "maildir/lib.h"
 #include "mutt_thread.h"
 #include "mx.h"
@@ -991,7 +990,7 @@ static void append_message(header_cache_t *h, struct Mailbox *m,
 
   e->active = true;
   e->index = m->msg_count;
-  mutt_mailbox_size_add(m, e);
+  mailbox_size_add(m, e);
   m->emails[m->msg_count] = e;
   m->msg_count++;
 
@@ -1688,7 +1687,7 @@ int nm_read_entire_thread(struct Mailbox *m, struct Email *e)
   rc = 0;
 
   if (m->msg_count > mdata->oldmsgcount)
-    mutt_mailbox_changed(m, MBN_INVALID);
+    mailbox_changed(m, MBN_INVALID);
 done:
   if (q)
     notmuch_query_destroy(q);
@@ -2311,7 +2310,7 @@ static int nm_mbox_check(struct Mailbox *m, int *index_hint)
   }
 
   if (m->msg_count > mdata->oldmsgcount)
-    mutt_mailbox_changed(m, MBN_INVALID);
+    mailbox_changed(m, MBN_INVALID);
 done:
   if (q)
     notmuch_query_destroy(q);
index 1aa917a53468e6195ba5f30f595c2564a087fd5c..362f21b4a1e4160083acdbda6bb0b432b8e2e124 100644 (file)
@@ -25,7 +25,7 @@
 #include <time.h>
 #include "config/lib.h"
 #include "progress.h"
-#include "mailbox.h"
+#include "core/lib.h"
 
 #ifndef MUTT_NOTMUCH_NOTMUCH_PRIVATE_H
 #define MUTT_NOTMUCH_NOTMUCH_PRIVATE_H
diff --git a/pager.c b/pager.c
index d08f598c669ce1e974e7aaac232aed074556df22..145de78d5dcbef40f07a81b6c3b381e9cefd8a9f 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -47,6 +47,7 @@
 #include "color.h"
 #include "commands.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "format_flags.h"
 #include "globals.h"
@@ -54,7 +55,6 @@
 #include "hook.h"
 #include "index.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_attach.h"
 #include "mutt_curses.h"
 #include "mutt_header.h"
index a982ad68ac442567013bca91127564a3ad5c202b..d0a25babdfeea20c1c7e3cac97273ab6b2639e84 100644 (file)
--- a/pattern.c
+++ b/pattern.c
 #include "alias.h"
 #include "context.h"
 #include "copy.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "filter.h"
 #include "globals.h"
 #include "handler.h"
 #include "hdrline.h"
-#include "mailbox.h"
 #include "mutt_logging.h"
 #include "mutt_menu.h"
 #include "mutt_parse.h"
index 3b7c4c79a80f84214833124b15128eb851f5f239..98a9fdcfd6cc49dd25fb499e6e9a3af588cdcaac 100644 (file)
--- a/pop/pop.c
+++ b/pop/pop.c
 #include "conn/conn.h"
 #include "mutt.h"
 #include "pop.h"
-#include "account.h"
 #include "bcache.h"
 #include "context.h"
+#include "core/lib.h"
 #include "globals.h"
 #include "hcache/hcache.h"
 #include "hook.h"
-#include "mailbox.h"
 #include "mutt_account.h"
 #include "mutt_header.h"
 #include "mutt_logging.h"
@@ -915,7 +914,7 @@ static int pop_mbox_check(struct Mailbox *m, int *index_hint)
   int rc = pop_fetch_headers(m);
   pop_clear_cache(adata);
   if (m->msg_count > old_msg_count)
-    mutt_mailbox_changed(m, MBN_INVALID);
+    mailbox_changed(m, MBN_INVALID);
 
   if (rc < 0)
     return -1;
index c494da723d884417847b1d4defac7e4b1c59a554..9ace3f299d3d9e165c17af254acb70bfd82c2844 100644 (file)
@@ -41,9 +41,8 @@
 #include "email/lib.h"
 #include "conn/conn.h"
 #include "mutt.h"
-#include "account.h"
+#include "core/lib.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "mutt_account.h"
 #include "mutt_logging.h"
 #include "mutt_socket.h"
index 3983d2dbaa3f7a6ee646f7791eb329f0554630be..c079c80dc7267e22fb913ed40de7ef221a18421b 100644 (file)
 #include "conn/conn.h"
 #include "mutt.h"
 #include "context.h"
+#include "core/lib.h"
 #include "format_flags.h"
 #include "globals.h"
 #include "handler.h"
 #include "hdrline.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_logging.h"
 #include "mutt_menu.h"
 #include "mutt_thread.h"
index 2c4754a8551502f65389ed1eea45d75b0207d3bb..29d6c533e2ac6a0af027fc5a237b2749c70b5bdb 100644 (file)
@@ -41,6 +41,7 @@
 #include "recvattach.h"
 #include "commands.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "filter.h"
 #include "format_flags.h"
@@ -49,7 +50,6 @@
 #include "hdrline.h"
 #include "hook.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_attach.h"
 #include "mutt_logging.h"
 #include "mutt_menu.h"
diff --git a/score.c b/score.c
index b92c171372fc09742f0535adaf12ce7160460adc..fa86e69f1d368128308a01603be38771b3428b36 100644 (file)
--- a/score.c
+++ b/score.c
@@ -35,9 +35,9 @@
 #include "mutt.h"
 #include "score.h"
 #include "context.h"
+#include "core/lib.h"
 #include "globals.h"
 #include "keymap.h"
-#include "mailbox.h"
 #include "mutt_commands.h"
 #include "mutt_menu.h"
 #include "options.h"
diff --git a/send.c b/send.c
index 8ea1e3e18b9ded0e431812be1138d5c3dc732b5e..8b784db5898849253bcaaba651fa93402908ba6e 100644 (file)
--- a/send.c
+++ b/send.c
@@ -48,6 +48,7 @@
 #include "compose.h"
 #include "context.h"
 #include "copy.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "edit.h"
 #include "filter.h"
@@ -55,7 +56,6 @@
 #include "handler.h"
 #include "hdrline.h"
 #include "hook.h"
-#include "mailbox.h"
 #include "mutt_attach.h"
 #include "mutt_body.h"
 #include "mutt_header.h"
index 74c305017b9c3dd48ccb60836a30ce4cfc95c366..6b3ecf1781c2a3fa8e3b14090110dbac0f98da06 100644 (file)
--- a/sendlib.c
+++ b/sendlib.c
 #include "sendlib.h"
 #include "context.h"
 #include "copy.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "filter.h"
 #include "globals.h"
 #include "handler.h"
 #include "hook.h"
-#include "mailbox.h"
+#include "mutt_mailbox.h"
 #include "mutt_parse.h"
 #include "mutt_window.h"
 #include "muttlib.h"
index 78b05639563a705ac6b4ac1edb1db1d43ce91bf7..b67396959621d6c756b6b87a8d16d28123cf9f8f 100644 (file)
--- a/sidebar.c
+++ b/sidebar.c
 #include "config/lib.h"
 #include "sidebar.h"
 #include "context.h"
+#include "core/lib.h"
 #include "curs_lib.h"
 #include "format_flags.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "mutt_curses.h"
 #include "mutt_menu.h"
 #include "mutt_window.h"
 #include "muttlib.h"
 #include "mx.h"
-#include "neomutt.h"
 #include "opcodes.h"
 #include "sort.h"
 
diff --git a/sort.c b/sort.c
index 74842771014e3d18f7be8623af3f6e165d406af9..3768cefae2bac6c47c26674752dd35214e2ddbfe 100644 (file)
--- a/sort.c
+++ b/sort.c
@@ -37,8 +37,8 @@
 #include "sort.h"
 #include "alias.h"
 #include "context.h"
+#include "core/lib.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "mutt_logging.h"
 #include "mutt_thread.h"
 #include "options.h"
index c6028f0b1afba6620eeb5eb1419d84db75f1a3a3..9ae7ddda4736795843ba982fbca4c19315fb8c98 100644 (file)
--- a/status.c
+++ b/status.c
@@ -30,9 +30,9 @@
 #include <stdio.h>
 #include "mutt/mutt.h"
 #include "context.h"
+#include "core/lib.h"
 #include "format_flags.h"
 #include "globals.h"
-#include "mailbox.h"
 #include "mutt_mailbox.h"
 #include "mutt_menu.h"
 #include "mutt_window.h"
index e3d66caaf34f0a249968c530110baee222043d56..a20d6ecaca3a990c2f2e9522182abe7d66db2974 100644 (file)
@@ -97,10 +97,7 @@ CONFIG_OBJS  = test/config/account.o \
                  test/config/slist.o \
                  test/config/sort.o \
                  test/config/string.o \
-                 test/config/synonym.o \
-                 account.o \
-                 mailbox.o \
-                 neomutt.o
+                 test/config/synonym.o
 
 DATE_OBJS      = test/date/mutt_date_add_timeout.o \
                  test/date/mutt_date_check_month.o \
index cf3f3945fc54f162c0a3388e379071ab7a6edb84..fc66b0986cb730f7a6c2804732f789baaf98ca3d 100644 (file)
@@ -28,7 +28,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static short VarApple;
 static short VarBanana;
index 6b01cefde6df7bedf894dbcc7f571b5fae660027..1580fb033de7156c2a56886c92b64e7a59420ff8 100644 (file)
@@ -31,7 +31,7 @@
 #include "address/lib.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static struct Address *VarApple;
 static struct Address *VarBanana;
index 8711299cfe3435cea56ec224d2c61717cc5ae94a..ca45b74cbc9990aae8d99d79411962227fe20f0b 100644 (file)
@@ -30,7 +30,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static bool VarApple;
 static bool VarBanana;
index c9732e7ed3cd3b3651c033ef768ddc92dd82756e..f2d8904b0714febb9cc7217edfeb1c50638f43e7 100644 (file)
@@ -31,7 +31,7 @@
 #include "mutt/mutt.h"
 #include "config/lib.h"
 #include "common.h"
-#include "account.h"
+#include "core/lib.h"
 
 const char *line = "----------------------------------------"
                    "----------------------------------------";
index 0b7b2006384e2c0f762b5b10b25df66a37c030c8..3dde846ae8d672256d7acc2bf387aeffc7fec915 100644 (file)
@@ -26,7 +26,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static bool VarApple;
 static bool VarBanana;
index 1d0e12f09923ba5e9a1fe4f4c89a83bc0bacb3c0..8638323fcd6a83074bc7e4a1ff4bbceb4e10e427 100644 (file)
@@ -30,7 +30,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static unsigned char VarApple;
 static unsigned char VarBanana;
index de1c556adb3bff9c0eee5523a4135ae2c359f779..95be1e200171c5f89a4e4034ac9a62ca8a61e0e9 100644 (file)
@@ -28,7 +28,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static char *VarApple;
 static char *VarBanana;
index beaaccb042a483c6490e0b2f87e15682ca2bfa09..121f71a4f66de255c5b4a2b642cdeb8748fcb1e5 100644 (file)
@@ -30,7 +30,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static long VarApple;
 static long VarBanana;
index 6407bd448d03c98ad42fb93af7973d38267310df..b0ed322dedc12f25c92252f8d6a3364f39364471 100644 (file)
@@ -29,7 +29,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static struct MbTable *VarApple;
 static struct MbTable *VarBanana;
index c8d32f03655289c0272b2262c739c1c9b9c6fc6d..925bf77ab86eb2770e4d7740a92b6921ea6dbf76 100644 (file)
@@ -30,7 +30,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static short VarApple;
 static short VarBanana;
index 6caa1cb99adbefcbf91caff3ea4ef3af358a5cb2..ed8f70ecc23ab2c095b394891a9617f3cf07f88e 100644 (file)
@@ -30,7 +30,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static char VarApple;
 static char VarBanana;
index 2cffb6a53455bbbcfa5adf8bed234da9a64e57aa..56e0bb3d769ac1862eed3ea11865cb216be1a9c1 100644 (file)
@@ -29,7 +29,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static struct Regex *VarApple;
 static struct Regex *VarBanana;
index eac7d5d3d8ec5c316adbca1e529759a6d2685e4c..91037ddc9d0f17a049d7a36a63b38fe6eb7b1f6e 100644 (file)
@@ -30,7 +30,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static short VarApple;
 static bool VarBanana;
index 92d5bcb837083c0a9e6a3ae60b995d732537255b..d8250c08318901e7faf56b4b214c36554d48f454 100644 (file)
@@ -31,7 +31,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static struct Slist *VarApple;
 static struct Slist *VarBanana;
index ecc3f7fac42c06312a10815241a9ccc97fb25779..b8d43069ee803fdc9d5541ac218bbbe875a25f54 100644 (file)
@@ -29,7 +29,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static short VarApple;
 static short VarBanana;
index 2392ce460b679807383f22367b07482846b9202e..388ddec4034fb501c57248d6f59b540bcb27bb78 100644 (file)
@@ -29,7 +29,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static char *VarApple;
 static char *VarBanana;
index b555eff77076a8d90de446f2af7d8a1a912d261c..3347f911503703ac1a74ee1b0885325eb3f20e3a 100644 (file)
@@ -29,7 +29,7 @@
 #include "mutt/mutt.h"
 #include "config/common.h"
 #include "config/lib.h"
-#include "account.h"
+#include "core/lib.h"
 
 static char *VarApple;
 static char *VarCherry;
index 31113b5c8c0868e24ae586cddd6855a3b0479c1b..58246f605389440bbb8844f83e8cd006a724deba 100644 (file)
@@ -34,8 +34,7 @@ void test_mutt_rfc822_parse_line(void)
 
   {
     struct Email e = { 0 };
-    TEST_CHECK(mutt_rfc822_parse_line(NULL, &e, "apple", "banana", false,
-                                      false, false) == 0);
+    TEST_CHECK(mutt_rfc822_parse_line(NULL, &e, "apple", "banana", false, false, false) == 0);
   }
 
   {
@@ -57,7 +56,6 @@ void test_mutt_rfc822_parse_line(void)
     struct Envelope envelope;
     memset(&envelope, 0, sizeof(struct Envelope));
     struct Email e = { 0 };
-    TEST_CHECK(mutt_rfc822_parse_line(&envelope, &e, "apple", NULL, false,
-                                      false, false) == 0);
+    TEST_CHECK(mutt_rfc822_parse_line(&envelope, &e, "apple", NULL, false, false, false) == 0);
   }
 }