NeoMutt  2025-12-11-694-ga89709
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
mxapi.h
Go to the documentation of this file.
1
23
24#ifndef MUTT_CORE_MXAPI_H
25#define MUTT_CORE_MXAPI_H
26
27#include <stdbool.h>
28#include <stdint.h>
29#include "mailbox.h"
30
31struct Account;
32struct Buffer;
33struct Email;
34struct Message;
35struct stat;
36
37/* flags for mutt_open_mailbox() */
38typedef uint8_t OpenMailboxFlags;
39#define MUTT_OPEN_NO_FLAGS 0
40#define MUTT_NOSORT (1 << 0)
41#define MUTT_APPEND (1 << 1)
42#define MUTT_READONLY (1 << 2)
43#define MUTT_QUIET (1 << 3)
44#define MUTT_PEEK (1 << 5)
45#define MUTT_APPENDNEW (1 << 6)
47
48typedef uint8_t CheckStatsFlags;
49#define MUTT_MAILBOX_CHECK_NO_FLAGS 0
50#define MUTT_MAILBOX_CHECK_POSTPONED (1 << 0)
51#define MUTT_MAILBOX_CHECK_STATS (1 << 1)
52#define MUTT_MAILBOX_CHECK_IMMEDIATE (1 << 2)
53
67
77
86struct MxOps
87{
89 const char *name;
90 bool is_local;
91
105 bool (*ac_owns_path)(struct Account *a, const char *path);
106
120 bool (*ac_add)(struct Account *a, struct Mailbox *m);
121
132 enum MxOpenReturns (*mbox_open)(struct Mailbox *m);
133
146 bool (*mbox_open_append)(struct Mailbox *m, OpenMailboxFlags flags);
147
158 enum MxStatus (*mbox_check)(struct Mailbox *m);
159
171 enum MxStatus (*mbox_check_stats)(struct Mailbox *m, CheckStatsFlags flags);
172
183 enum MxStatus (*mbox_sync)(struct Mailbox *m);
184
195 enum MxStatus (*mbox_close)(struct Mailbox *m);
196
212 bool (*msg_open)(struct Mailbox *m, struct Message *msg, struct Email *e);
213
228 bool (*msg_open_new)(struct Mailbox *m, struct Message *msg, const struct Email *e);
229
243 int (*msg_commit)(struct Mailbox *m, struct Message *msg);
244
258 int (*msg_close)(struct Mailbox *m, struct Message *msg);
259
270 int (*msg_padding_size)(struct Mailbox *m);
271
285 int (*msg_save_hcache)(struct Mailbox *m, struct Email *e);
286
302 int (*tags_edit)(struct Mailbox *m, const char *tags, struct Buffer *buf);
303
319 int (*tags_commit)(struct Mailbox *m, struct Email *e, const char *buf);
320
332 enum MailboxType (*path_probe)(const char *path, const struct stat *st);
333
345 int (*path_canon)(struct Buffer *path);
346
359 int (*path_is_empty)(struct Buffer *path);
360};
361
362#endif /* MUTT_CORE_MXAPI_H */
Representation of a mailbox.
MailboxType
Supported mailbox formats.
Definition mailbox.h:40
uint8_t OpenMailboxFlags
Flags for mutt_open_mailbox(), e.g. MUTT_NOSORT.
Definition mxapi.h:38
MxOpenReturns
Return values for mbox_open()
Definition mxapi.h:72
@ MX_OPEN_ERROR
Open failed with an error.
Definition mxapi.h:74
@ MX_OPEN_ABORT
Open was aborted.
Definition mxapi.h:75
@ MX_OPEN_OK
Open succeeded.
Definition mxapi.h:73
uint8_t CheckStatsFlags
Flags for mutt_mailbox_check.
Definition mxapi.h:48
MxStatus
Return values from mbox_check(), mbox_check_stats(), mbox_sync(), and mbox_close()
Definition mxapi.h:59
@ MX_STATUS_LOCKED
Couldn't lock the Mailbox.
Definition mxapi.h:63
@ MX_STATUS_ERROR
An error occurred.
Definition mxapi.h:60
@ MX_STATUS_OK
No changes.
Definition mxapi.h:61
@ MX_STATUS_FLAGS
Nondestructive flags change (IMAP)
Definition mxapi.h:65
@ MX_STATUS_REOPENED
Mailbox was reopened.
Definition mxapi.h:64
@ MX_STATUS_NEW_MAIL
New mail received in Mailbox.
Definition mxapi.h:62
A group of associated Mailboxes.
Definition account.h:36
String manipulation buffer.
Definition buffer.h:36
The envelope/body of an email.
Definition email.h:39
A mailbox.
Definition mailbox.h:78
A local copy of an email.
Definition message.h:34
Definition mxapi.h:87
int(* path_is_empty)(struct Buffer *path)
Definition mxapi.h:359
bool is_local
True, if Mailbox type has local files/dirs.
Definition mxapi.h:90
bool(* msg_open)(struct Mailbox *m, struct Message *msg, struct Email *e)
Definition mxapi.h:212
int(* tags_commit)(struct Mailbox *m, struct Email *e, const char *buf)
Definition mxapi.h:319
int(* msg_save_hcache)(struct Mailbox *m, struct Email *e)
Definition mxapi.h:285
enum MailboxType(* path_probe)(const char *path, const struct stat *st)
Definition mxapi.h:332
enum MailboxType type
Mailbox type, e.g. MUTT_IMAP.
Definition mxapi.h:88
int(* msg_padding_size)(struct Mailbox *m)
Definition mxapi.h:270
bool(* ac_owns_path)(struct Account *a, const char *path)
Definition mxapi.h:105
int(* tags_edit)(struct Mailbox *m, const char *tags, struct Buffer *buf)
Definition mxapi.h:302
int(* msg_commit)(struct Mailbox *m, struct Message *msg)
Definition mxapi.h:243
enum MxStatus(* mbox_check_stats)(struct Mailbox *m, CheckStatsFlags flags)
Definition mxapi.h:171
bool(* ac_add)(struct Account *a, struct Mailbox *m)
Definition mxapi.h:120
enum MxOpenReturns(* mbox_open)(struct Mailbox *m)
Definition mxapi.h:132
int(* msg_close)(struct Mailbox *m, struct Message *msg)
Definition mxapi.h:258
bool(* msg_open_new)(struct Mailbox *m, struct Message *msg, const struct Email *e)
Definition mxapi.h:228
const char * name
Mailbox name, e.g. "imap".
Definition mxapi.h:89
int(* path_canon)(struct Buffer *path)
Definition mxapi.h:345
enum MxStatus(* mbox_close)(struct Mailbox *m)
Definition mxapi.h:195
enum MxStatus(* mbox_sync)(struct Mailbox *m)
Definition mxapi.h:183
bool(* mbox_open_append)(struct Mailbox *m, OpenMailboxFlags flags)
Definition mxapi.h:146
enum MxStatus(* mbox_check)(struct Mailbox *m)
Definition mxapi.h:158