From: Richard Russon Date: Fri, 12 Jul 2019 15:16:39 +0000 (+0100) Subject: create libcore X-Git-Tag: 2019-10-25~139^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1833999e25a1912d6b50182df512eebccf76977c;p=neomutt create libcore --- diff --git a/Makefile.autosetup b/Makefile.autosetup index 1b05f382c..d4a7e7045 100644 --- a/Makefile.autosetup +++ b/Makefile.autosetup @@ -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) diff --git a/browser.c b/browser.c index dc64e3baf..aac624855 100644 --- a/browser.c +++ b/browser.c @@ -48,11 +48,11 @@ #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 c8573a092..f7cfacd9d 100644 --- 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" diff --git a/commands.c b/commands.c index 889122ff7..ab2072df0 100644 --- a/commands.c +++ b/commands.c @@ -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)) diff --git a/compose.c b/compose.c index 7a392c978..f0add93c4 100644 --- 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" diff --git a/compress.c b/compress.c index 6af4e5e22..f8b8071a9 100644 --- a/compress.c +++ b/compress.c @@ -42,13 +42,12 @@ #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" diff --git a/context.c b/context.c index 65aa7ad09..c766407d9 100644 --- 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) diff --git a/context.h b/context.h index ffe6eb53c..28d7cbd5e 100644 --- a/context.h +++ b/context.h @@ -27,7 +27,7 @@ #include #include #include -#include "mailbox.h" +#include "core/lib.h" #include "pattern.h" struct EmailList; diff --git a/copy.c b/copy.c index 108168f24..33ccecc36 100644 --- a/copy.c +++ b/copy.c @@ -39,10 +39,10 @@ #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" diff --git a/account.c b/core/account.c similarity index 88% rename from account.c rename to core/account.c index b52f77762..5d106a500 100644 --- a/account.c +++ b/core/account.c @@ -3,7 +3,7 @@ * A group of associated Mailboxes * @authors - * Copyright (C) 2018 Richard Russon + * Copyright (C) 2018-2019 Richard Russon * * @copyright * This program is free software: you can redistribute it and/or modify it under @@ -21,29 +21,33 @@ */ /** - * @page account A group of associated Mailboxes + * @page core_account A group of associated Mailboxes * * A group of associated Mailboxes */ #include "config.h" +#include #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) { diff --git a/account.h b/core/account.h similarity index 80% rename from account.h rename to core/account.h index fd7c7b846..2d711c562 100644 --- a/account.h +++ b/core/account.h @@ -21,16 +21,14 @@ * this program. If not, see . */ -#ifndef MUTT_ACCOUNT_H -#define MUTT_ACCOUNT_H +#ifndef MUTT_CORE_ACCOUNT_H +#define MUTT_CORE_ACCOUNT_H #include #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 index 000000000..14f1ed468 --- /dev/null +++ b/core/lib.h @@ -0,0 +1,42 @@ +/** + * @file + * Convenience wrapper for the core headers + * + * @authors + * Copyright (C) 2019 Richard Russon + * + * @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 . + */ + +/** + * @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 */ diff --git a/mailbox.c b/core/mailbox.c similarity index 59% rename from mailbox.c rename to core/mailbox.c index 7df01e93a..a84a5ad03 100644 --- a/mailbox.c +++ b/core/mailbox.c @@ -5,7 +5,7 @@ * @authors * Copyright (C) 1996-2000,2010,2013 Michael R. Elkins * Copyright (C) 2016-2017 Kevin J. McCarthy - * Copyright (C) 2018 Richard Russon + * Copyright (C) 2018-2019 Richard Russon * * @copyright * This program is free software: you can redistribute it and/or modify it under @@ -23,22 +23,21 @@ */ /** - * @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 -#include +#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 index 000000000..54675c768 --- /dev/null +++ b/core/mailbox.h @@ -0,0 +1,190 @@ +/** + * @file + * Representation of a mailbox + * + * @authors + * Copyright (C) 1996-2000,2010,2013 Michael R. Elkins + * Copyright (C) 2018-2019 Richard Russon + * + * @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 . + */ + +#ifndef MUTT_CORE_MAILBOX_H +#define MUTT_CORE_MAILBOX_H + +#include "config.h" +#include +#include +#include +#include +#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 */ diff --git a/neomutt.c b/core/neomutt.c similarity index 91% rename from neomutt.c rename to core/neomutt.c index 92d3984a2..9369e7bee 100644 --- a/neomutt.c +++ b/core/neomutt.c @@ -21,24 +21,31 @@ */ /** - * @page neomutt Container for Accounts, Notifications + * @page core_neomutt Container for Accounts, Notifications * * Container for Accounts, Notifications */ #include "config.h" +#include #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) { diff --git a/neomutt.h b/core/neomutt.h similarity index 79% rename from neomutt.h rename to core/neomutt.h index 914e2bcfe..81508515b 100644 --- a/neomutt.h +++ b/core/neomutt.h @@ -20,13 +20,14 @@ * this program. If not, see . */ -#ifndef MUTT_NEOMUTT_H -#define MUTT_NEOMUTT_H +#ifndef MUTT_CORE_NEOMUTT_H +#define MUTT_CORE_NEOMUTT_H #include #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 */ diff --git a/curs_lib.c b/curs_lib.c index 486fed55a..b06c71a64 100644 --- a/curs_lib.c +++ b/curs_lib.c @@ -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 84249f467..2e36b01c7 100644 --- a/edit.c +++ b/edit.c @@ -42,10 +42,10 @@ #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" diff --git a/editmsg.c b/editmsg.c index b6bad5c4a..c5da0b53e 100644 --- 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 2c96396e0..d721c3d4e 100644 --- a/enter.c +++ b/enter.c @@ -38,11 +38,11 @@ #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 5a0ee5252..12f76b0f3 100644 --- a/flags.c +++ b/flags.c @@ -34,10 +34,10 @@ #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" diff --git a/hdrline.c b/hdrline.c index 6b16b5b2b..48914f575 100644 --- a/hdrline.c +++ b/hdrline.c @@ -44,11 +44,11 @@ #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" diff --git a/imap/browse.c b/imap/browse.c index eef72a68e..d264f5915 100644 --- a/imap/browse.c +++ b/imap/browse.c @@ -40,13 +40,12 @@ #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 diff --git a/imap/command.c b/imap/command.c index eedf21799..4c6cfa60c 100644 --- a/imap/command.c +++ b/imap/command.c @@ -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" diff --git a/imap/imap.c b/imap/imap.c index c5edfe084..f19c7ae97 100644 --- a/imap/imap.c +++ b/imap/imap.c @@ -43,20 +43,18 @@ #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); } /** diff --git a/imap/message.c b/imap/message.c index 05bc19e4f..d411aa888 100644 --- a/imap/message.c +++ b/imap/message.c @@ -43,11 +43,11 @@ #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]); diff --git a/imap/util.c b/imap/util.c index 45ffb4049..494f105fb 100644 --- a/imap/util.c +++ b/imap/util.c @@ -47,16 +47,14 @@ #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 fc7575440..d85fd35e3 100644 --- a/index.c +++ b/index.c @@ -40,18 +40,17 @@ #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 6f7b2e7cb..c882ee91b 100644 --- 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 d5ff04ed5..5402c519f 100644 --- 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 index 43f21513b..000000000 --- a/mailbox.h +++ /dev/null @@ -1,190 +0,0 @@ -/** - * @file - * Representation of a mailbox - * - * @authors - * Copyright (C) 1996-2000,2010,2013 Michael R. Elkins - * Copyright (C) 2018 Richard Russon - * - * @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 . - */ - -#ifndef MUTT_MAILBOX_H -#define MUTT_MAILBOX_H - -#include -#include -#include -#include "mutt/mutt.h" -#include "config.h" -#include - -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 */ diff --git a/maildir/maildir.c b/maildir/maildir.c index c7a791064..e27f8681b 100644 --- a/maildir/maildir.c +++ b/maildir/maildir.c @@ -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; } diff --git a/maildir/maildir_private.h b/maildir/maildir_private.h index f42a0926a..dae1933fd 100644 --- a/maildir/maildir_private.h +++ b/maildir/maildir_private.h @@ -29,7 +29,7 @@ #include #include #include "config/lib.h" -#include "mailbox.h" +#include "core/lib.h" struct Account; struct Buffer; diff --git a/maildir/mh.c b/maildir/mh.c index 3a67389ee..5cb8702bd 100644 --- a/maildir/mh.c +++ b/maildir/mh.c @@ -44,10 +44,10 @@ #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; } diff --git a/maildir/shared.c b/maildir/shared.c index 0ddf89d59..196509ea1 100644 --- a/maildir/shared.c +++ b/maildir/shared.c @@ -51,10 +51,10 @@ #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 3fedd5148..8558deec3 100644 --- a/main.c +++ b/main.c @@ -49,17 +49,16 @@ #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 diff --git a/mbox/mbox.c b/mbox/mbox.c index 4a0159ff0..7ac7662a7 100644 --- a/mbox/mbox.c +++ b/mbox/mbox.c @@ -46,11 +46,10 @@ #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 74030d294..9fdda6f0b 100644 --- a/menu.c +++ b/menu.c @@ -38,10 +38,10 @@ #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" diff --git a/monitor.c b/monitor.c index b0fec9bd4..f1e97b439 100644 --- 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; diff --git a/mutt_attach.c b/mutt_attach.c index 403403b76..0a508e220 100644 --- a/mutt_attach.c +++ b/mutt_attach.c @@ -43,11 +43,11 @@ #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" diff --git a/mutt_header.c b/mutt_header.c index 54bd766c9..b3982a17d 100644 --- a/mutt_header.c +++ b/mutt_header.c @@ -38,10 +38,10 @@ #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" diff --git a/mutt_mailbox.c b/mutt_mailbox.c index f11e25e68..3bf6ee8f6 100644 --- a/mutt_mailbox.c +++ b/mutt_mailbox.c @@ -3,15 +3,15 @@ #include #include #include +#include #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 + } + } +} diff --git a/mutt_mailbox.h b/mutt_mailbox.h index 8703eb5ba..6cb8f6af9 100644 --- a/mutt_mailbox.h +++ b/mutt_mailbox.h @@ -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); diff --git a/mutt_thread.c b/mutt_thread.c index d21f29b70..a284d82ca 100644 --- a/mutt_thread.c +++ b/mutt_thread.c @@ -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 88d85801e..446105bff 100644 --- a/mx.c +++ b/mx.c @@ -45,14 +45,13 @@ #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 3308d04af..35eea0b41 100644 --- a/mx.h +++ b/mx.h @@ -30,7 +30,7 @@ #include #include "config/lib.h" #include "hcache/hcache.h" -#include "mailbox.h" +#include "core/lib.h" struct Email; struct Context; diff --git a/nntp/browse.c b/nntp/browse.c index d75c44413..67cdb189b 100644 --- a/nntp/browse.c +++ b/nntp/browse.c @@ -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" diff --git a/nntp/newsrc.c b/nntp/newsrc.c index 2c8b309e1..e779aba15 100644 --- a/nntp/newsrc.c +++ b/nntp/newsrc.c @@ -45,10 +45,10 @@ #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); } } diff --git a/nntp/nntp.c b/nntp/nntp.c index 4448f1c3a..af8262899 100644 --- a/nntp/nntp.c +++ b/nntp/nntp.c @@ -43,14 +43,13 @@ #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)) diff --git a/notmuch/mutt_notmuch.c b/notmuch/mutt_notmuch.c index 7a66158f3..fc413c4d9 100644 --- a/notmuch/mutt_notmuch.c +++ b/notmuch/mutt_notmuch.c @@ -57,12 +57,11 @@ #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); diff --git a/notmuch/notmuch_private.h b/notmuch/notmuch_private.h index 1aa917a53..362f21b4a 100644 --- a/notmuch/notmuch_private.h +++ b/notmuch/notmuch_private.h @@ -25,7 +25,7 @@ #include #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 d08f598c6..145de78d5 100644 --- 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" diff --git a/pattern.c b/pattern.c index a982ad68a..d0a25babd 100644 --- a/pattern.c +++ b/pattern.c @@ -48,12 +48,12 @@ #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" diff --git a/pop/pop.c b/pop/pop.c index 3b7c4c79a..98a9fdcfd 100644 --- a/pop/pop.c +++ b/pop/pop.c @@ -44,13 +44,12 @@ #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; diff --git a/pop/pop_lib.c b/pop/pop_lib.c index c494da723..9ace3f299 100644 --- a/pop/pop_lib.c +++ b/pop/pop_lib.c @@ -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" diff --git a/postpone.c b/postpone.c index 3983d2dba..c079c80dc 100644 --- a/postpone.c +++ b/postpone.c @@ -41,12 +41,12 @@ #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" diff --git a/recvattach.c b/recvattach.c index 2c4754a85..29d6c533e 100644 --- a/recvattach.c +++ b/recvattach.c @@ -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 b92c17137..fa86e69f1 100644 --- 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 8ea1e3e18..8b784db58 100644 --- 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" diff --git a/sendlib.c b/sendlib.c index 74c305017..6b3ecf178 100644 --- a/sendlib.c +++ b/sendlib.c @@ -50,12 +50,13 @@ #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" diff --git a/sidebar.c b/sidebar.c index 78b056395..b67396959 100644 --- a/sidebar.c +++ b/sidebar.c @@ -38,16 +38,15 @@ #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 748427710..3768cefae 100644 --- 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" diff --git a/status.c b/status.c index c6028f0b1..9ae7ddda4 100644 --- a/status.c +++ b/status.c @@ -30,9 +30,9 @@ #include #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" diff --git a/test/Makefile.autosetup b/test/Makefile.autosetup index e3d66caaf..a20d6ecac 100644 --- a/test/Makefile.autosetup +++ b/test/Makefile.autosetup @@ -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 \ diff --git a/test/config/account.c b/test/config/account.c index cf3f3945f..fc66b0986 100644 --- a/test/config/account.c +++ b/test/config/account.c @@ -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; diff --git a/test/config/address.c b/test/config/address.c index 6b01cefde..1580fb033 100644 --- a/test/config/address.c +++ b/test/config/address.c @@ -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; diff --git a/test/config/bool.c b/test/config/bool.c index 8711299cf..ca45b74cb 100644 --- a/test/config/bool.c +++ b/test/config/bool.c @@ -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; diff --git a/test/config/common.c b/test/config/common.c index c9732e7ed..f2d8904b0 100644 --- a/test/config/common.c +++ b/test/config/common.c @@ -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 = "----------------------------------------" "----------------------------------------"; diff --git a/test/config/dump.c b/test/config/dump.c index 0b7b20063..3dde846ae 100644 --- a/test/config/dump.c +++ b/test/config/dump.c @@ -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; diff --git a/test/config/enum.c b/test/config/enum.c index 1d0e12f09..8638323fc 100644 --- a/test/config/enum.c +++ b/test/config/enum.c @@ -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; diff --git a/test/config/initial.c b/test/config/initial.c index de1c556ad..95be1e200 100644 --- a/test/config/initial.c +++ b/test/config/initial.c @@ -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; diff --git a/test/config/long.c b/test/config/long.c index beaaccb04..121f71a4f 100644 --- a/test/config/long.c +++ b/test/config/long.c @@ -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; diff --git a/test/config/mbtable.c b/test/config/mbtable.c index 6407bd448..b0ed322de 100644 --- a/test/config/mbtable.c +++ b/test/config/mbtable.c @@ -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; diff --git a/test/config/number.c b/test/config/number.c index c8d32f036..925bf77ab 100644 --- a/test/config/number.c +++ b/test/config/number.c @@ -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; diff --git a/test/config/quad.c b/test/config/quad.c index 6caa1cb99..ed8f70ecc 100644 --- a/test/config/quad.c +++ b/test/config/quad.c @@ -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; diff --git a/test/config/regex.c b/test/config/regex.c index 2cffb6a53..56e0bb3d7 100644 --- a/test/config/regex.c +++ b/test/config/regex.c @@ -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; diff --git a/test/config/set.c b/test/config/set.c index eac7d5d3d..91037ddc9 100644 --- a/test/config/set.c +++ b/test/config/set.c @@ -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; diff --git a/test/config/slist.c b/test/config/slist.c index 92d5bcb83..d8250c083 100644 --- a/test/config/slist.c +++ b/test/config/slist.c @@ -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; diff --git a/test/config/sort.c b/test/config/sort.c index ecc3f7fac..b8d43069e 100644 --- a/test/config/sort.c +++ b/test/config/sort.c @@ -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; diff --git a/test/config/string.c b/test/config/string.c index 2392ce460..388ddec40 100644 --- a/test/config/string.c +++ b/test/config/string.c @@ -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; diff --git a/test/config/synonym.c b/test/config/synonym.c index b555eff77..3347f9115 100644 --- a/test/config/synonym.c +++ b/test/config/synonym.c @@ -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; diff --git a/test/parse/mutt_rfc822_parse_line.c b/test/parse/mutt_rfc822_parse_line.c index 31113b5c8..58246f605 100644 --- a/test/parse/mutt_rfc822_parse_line.c +++ b/test/parse/mutt_rfc822_parse_line.c @@ -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); } }