NeoMutt  2025-12-11-911-gd8d604
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
41{
43 MUTT_NOSORT = 1U << 0,
44 MUTT_APPEND = 1U << 1,
45 MUTT_READONLY = 1U << 2,
46 MUTT_QUIET = 1U << 3,
47 MUTT_PEEK = 1U << 5,
48 MUTT_APPENDNEW = 1U << 6,
50};
51typedef uint8_t OpenMailboxFlags;
52
63typedef uint8_t CheckStatsFlags;
64
78
88
97struct MxOps
98{
100 const char *name;
101 bool is_local;
102
116 bool (*ac_owns_path)(struct Account *a, const char *path);
117
131 bool (*ac_add)(struct Account *a, struct Mailbox *m);
132
143 enum MxOpenReturns (*mbox_open)(struct Mailbox *m);
144
157 bool (*mbox_open_append)(struct Mailbox *m, OpenMailboxFlags flags);
158
169 enum MxStatus (*mbox_check)(struct Mailbox *m);
170
182 enum MxStatus (*mbox_check_stats)(struct Mailbox *m, CheckStatsFlags flags);
183
194 enum MxStatus (*mbox_sync)(struct Mailbox *m);
195
206 enum MxStatus (*mbox_close)(struct Mailbox *m);
207
223 bool (*msg_open)(struct Mailbox *m, struct Message *msg, struct Email *e);
224
239 bool (*msg_open_new)(struct Mailbox *m, struct Message *msg, const struct Email *e);
240
254 int (*msg_commit)(struct Mailbox *m, struct Message *msg);
255
269 int (*msg_close)(struct Mailbox *m, struct Message *msg);
270
281 int (*msg_padding_size)(struct Mailbox *m);
282
296 int (*msg_save_hcache)(struct Mailbox *m, struct Email *e);
297
313 int (*tags_edit)(struct Mailbox *m, const char *tags, struct Buffer *buf);
314
330 int (*tags_commit)(struct Mailbox *m, struct Email *e, const char *buf);
331
343 enum MailboxType (*path_probe)(const char *path, const struct stat *st);
344
356 int (*path_canon)(struct Buffer *path);
357
370 int (*path_is_empty)(struct Buffer *path);
371};
372
373#endif /* MUTT_CORE_MXAPI_H */
Representation of a mailbox.
MailboxType
Supported mailbox formats.
Definition mailbox.h:40
uint8_t OpenMailboxFlags
Definition mxapi.h:51
OpenMailboxFlag
Flags for mutt_open_mailbox(), e.g.
Definition mxapi.h:41
@ MUTT_QUIET
Do not print any messages.
Definition mxapi.h:46
@ MUTT_APPENDNEW
Set in mx_open_mailbox_append if the mailbox doesn't exist.
Definition mxapi.h:48
@ MUTT_READONLY
Open in read-only mode.
Definition mxapi.h:45
@ MUTT_NOSORT
Do not sort the mailbox after opening it.
Definition mxapi.h:43
@ MUTT_APPEND
Open mailbox for appending messages.
Definition mxapi.h:44
@ MUTT_OPEN_NONE
No flags are set.
Definition mxapi.h:42
@ MUTT_PEEK
Revert atime back after taking a look (if applicable)
Definition mxapi.h:47
MxOpenReturns
Return values for mbox_open()
Definition mxapi.h:83
@ MX_OPEN_ERROR
Open failed with an error.
Definition mxapi.h:85
@ MX_OPEN_ABORT
Open was aborted.
Definition mxapi.h:86
@ MX_OPEN_OK
Open succeeded.
Definition mxapi.h:84
CheckStatsFlag
Flags for mutt_mailbox_check.
Definition mxapi.h:57
@ MUTT_MAILBOX_CHECK_STATS
Ignore mail_check_stats and calculate statistics (used by <check-stats>)
Definition mxapi.h:60
@ MUTT_MAILBOX_CHECK_POSTPONED
Make sure the number of postponed messages is updated.
Definition mxapi.h:59
@ MUTT_MAILBOX_CHECK_NONE
No flags are set.
Definition mxapi.h:58
@ MUTT_MAILBOX_CHECK_IMMEDIATE
Don't postpone the actual checking.
Definition mxapi.h:61
uint8_t CheckStatsFlags
Definition mxapi.h:63
MxStatus
Return values from mbox_check(), mbox_check_stats(), mbox_sync(), and mbox_close()
Definition mxapi.h:70
@ MX_STATUS_LOCKED
Couldn't lock the Mailbox.
Definition mxapi.h:74
@ MX_STATUS_ERROR
An error occurred.
Definition mxapi.h:71
@ MX_STATUS_OK
No changes.
Definition mxapi.h:72
@ MX_STATUS_FLAGS
Nondestructive flags change (IMAP)
Definition mxapi.h:76
@ MX_STATUS_REOPENED
Mailbox was reopened.
Definition mxapi.h:75
@ MX_STATUS_NEW_MAIL
New mail received in Mailbox.
Definition mxapi.h:73
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:81
A local copy of an email.
Definition message.h:34
Definition mxapi.h:98
int(* path_is_empty)(struct Buffer *path)
Definition mxapi.h:370
bool is_local
True, if Mailbox type has local files/dirs.
Definition mxapi.h:101
bool(* msg_open)(struct Mailbox *m, struct Message *msg, struct Email *e)
Definition mxapi.h:223
int(* tags_commit)(struct Mailbox *m, struct Email *e, const char *buf)
Definition mxapi.h:330
int(* msg_save_hcache)(struct Mailbox *m, struct Email *e)
Definition mxapi.h:296
enum MailboxType(* path_probe)(const char *path, const struct stat *st)
Definition mxapi.h:343
enum MailboxType type
Mailbox type, e.g. MUTT_IMAP.
Definition mxapi.h:99
int(* msg_padding_size)(struct Mailbox *m)
Definition mxapi.h:281
bool(* ac_owns_path)(struct Account *a, const char *path)
Definition mxapi.h:116
int(* tags_edit)(struct Mailbox *m, const char *tags, struct Buffer *buf)
Definition mxapi.h:313
int(* msg_commit)(struct Mailbox *m, struct Message *msg)
Definition mxapi.h:254
enum MxStatus(* mbox_check_stats)(struct Mailbox *m, CheckStatsFlags flags)
Definition mxapi.h:182
bool(* ac_add)(struct Account *a, struct Mailbox *m)
Definition mxapi.h:131
enum MxOpenReturns(* mbox_open)(struct Mailbox *m)
Definition mxapi.h:143
int(* msg_close)(struct Mailbox *m, struct Message *msg)
Definition mxapi.h:269
bool(* msg_open_new)(struct Mailbox *m, struct Message *msg, const struct Email *e)
Definition mxapi.h:239
const char * name
Mailbox name, e.g. "imap".
Definition mxapi.h:100
int(* path_canon)(struct Buffer *path)
Definition mxapi.h:356
enum MxStatus(* mbox_close)(struct Mailbox *m)
Definition mxapi.h:206
enum MxStatus(* mbox_sync)(struct Mailbox *m)
Definition mxapi.h:194
bool(* mbox_open_append)(struct Mailbox *m, OpenMailboxFlags flags)
Definition mxapi.h:157
enum MxStatus(* mbox_check)(struct Mailbox *m)
Definition mxapi.h:169