NeoMutt  2025-01-09-41-g086358
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
mxapi.h
Go to the documentation of this file.
1
24#ifndef MUTT_CORE_MXAPI_H
25#define MUTT_CORE_MXAPI_H
26
27#include "config.h"
28#include <stdbool.h>
29#include <stdint.h>
30#include "mailbox.h"
31
32struct Account;
33struct Buffer;
34struct Email;
35struct Message;
36struct stat;
37
38/* flags for mutt_open_mailbox() */
39typedef uint8_t OpenMailboxFlags;
40#define MUTT_OPEN_NO_FLAGS 0
41#define MUTT_NOSORT (1 << 0)
42#define MUTT_APPEND (1 << 1)
43#define MUTT_READONLY (1 << 2)
44#define MUTT_QUIET (1 << 3)
45#define MUTT_PEEK (1 << 5)
46#define MUTT_APPENDNEW (1 << 6)
48
49typedef uint8_t CheckStatsFlags;
50#define MUTT_MAILBOX_CHECK_NO_FLAGS 0
51#define MUTT_MAILBOX_CHECK_POSTPONED (1 << 0)
52#define MUTT_MAILBOX_CHECK_STATS (1 << 1)
53#define MUTT_MAILBOX_CHECK_IMMEDIATE (1 << 2)
54
60{
67};
68
73{
77};
78
87struct MxOps
88{
90 const char *name;
91 bool is_local;
92
106 bool (*ac_owns_path)(struct Account *a, const char *path);
107
121 bool (*ac_add)(struct Account *a, struct Mailbox *m);
122
133 enum MxOpenReturns (*mbox_open)(struct Mailbox *m);
134
147 bool (*mbox_open_append)(struct Mailbox *m, OpenMailboxFlags flags);
148
159 enum MxStatus (*mbox_check)(struct Mailbox *m);
160
172 enum MxStatus (*mbox_check_stats)(struct Mailbox *m, CheckStatsFlags flags);
173
184 enum MxStatus (*mbox_sync)(struct Mailbox *m);
185
196 enum MxStatus (*mbox_close)(struct Mailbox *m);
197
213 bool (*msg_open)(struct Mailbox *m, struct Message *msg, struct Email *e);
214
229 bool (*msg_open_new)(struct Mailbox *m, struct Message *msg, const struct Email *e);
230
244 int (*msg_commit)(struct Mailbox *m, struct Message *msg);
245
259 int (*msg_close)(struct Mailbox *m, struct Message *msg);
260
271 int (*msg_padding_size)(struct Mailbox *m);
272
286 int (*msg_save_hcache)(struct Mailbox *m, struct Email *e);
287
303 int (*tags_edit)(struct Mailbox *m, const char *tags, struct Buffer *buf);
304
320 int (*tags_commit)(struct Mailbox *m, struct Email *e, const char *buf);
321
333 enum MailboxType (*path_probe)(const char *path, const struct stat *st);
334
346 int (*path_canon)(struct Buffer *path);
347
360 int (*path_is_empty)(struct Buffer *path);
361};
362
363#endif /* MUTT_CORE_MXAPI_H */
MailboxType
Supported mailbox formats.
Definition: mailbox.h:41
Maildir Mailbox.
uint8_t OpenMailboxFlags
Flags for mutt_open_mailbox(), e.g. MUTT_NOSORT.
Definition: mxapi.h:39
MxOpenReturns
Return values for mbox_open()
Definition: mxapi.h:73
@ MX_OPEN_ERROR
Open failed with an error.
Definition: mxapi.h:75
@ MX_OPEN_ABORT
Open was aborted.
Definition: mxapi.h:76
@ MX_OPEN_OK
Open succeeded.
Definition: mxapi.h:74
uint8_t CheckStatsFlags
Flags for mutt_mailbox_check.
Definition: mxapi.h:49
MxStatus
Return values from mbox_check(), mbox_check_stats(), mbox_sync(), and mbox_close()
Definition: mxapi.h:60
@ MX_STATUS_LOCKED
Couldn't lock the Mailbox.
Definition: mxapi.h:64
@ MX_STATUS_ERROR
An error occurred.
Definition: mxapi.h:61
@ MX_STATUS_OK
No changes.
Definition: mxapi.h:62
@ MX_STATUS_FLAGS
Nondestructive flags change (IMAP)
Definition: mxapi.h:66
@ MX_STATUS_REOPENED
Mailbox was reopened.
Definition: mxapi.h:65
@ MX_STATUS_NEW_MAIL
New mail received in Mailbox.
Definition: mxapi.h:63
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:79
A local copy of an email.
Definition: message.h:34
Definition: mxapi.h:88
int(* path_is_empty)(struct Buffer *path)
Definition: mxapi.h:360
bool is_local
True, if Mailbox type has local files/dirs.
Definition: mxapi.h:91
bool(* msg_open)(struct Mailbox *m, struct Message *msg, struct Email *e)
Definition: mxapi.h:213
int(* tags_commit)(struct Mailbox *m, struct Email *e, const char *buf)
Definition: mxapi.h:320
int(* msg_save_hcache)(struct Mailbox *m, struct Email *e)
Definition: mxapi.h:286
enum MailboxType(* path_probe)(const char *path, const struct stat *st)
Definition: mxapi.h:333
enum MailboxType type
Mailbox type, e.g. MUTT_IMAP.
Definition: mxapi.h:89
int(* msg_padding_size)(struct Mailbox *m)
Definition: mxapi.h:271
bool(* ac_owns_path)(struct Account *a, const char *path)
Definition: mxapi.h:106
int(* tags_edit)(struct Mailbox *m, const char *tags, struct Buffer *buf)
Definition: mxapi.h:303
int(* msg_commit)(struct Mailbox *m, struct Message *msg)
Definition: mxapi.h:244
enum MxStatus(* mbox_check_stats)(struct Mailbox *m, CheckStatsFlags flags)
Definition: mxapi.h:172
bool(* ac_add)(struct Account *a, struct Mailbox *m)
Definition: mxapi.h:121
enum MxOpenReturns(* mbox_open)(struct Mailbox *m)
Definition: mxapi.h:133
int(* msg_close)(struct Mailbox *m, struct Message *msg)
Definition: mxapi.h:259
bool(* msg_open_new)(struct Mailbox *m, struct Message *msg, const struct Email *e)
Definition: mxapi.h:229
const char * name
Mailbox name, e.g. "imap".
Definition: mxapi.h:90
int(* path_canon)(struct Buffer *path)
Definition: mxapi.h:346
enum MxStatus(* mbox_close)(struct Mailbox *m)
Definition: mxapi.h:196
enum MxStatus(* mbox_sync)(struct Mailbox *m)
Definition: mxapi.h:184
bool(* mbox_open_append)(struct Mailbox *m, OpenMailboxFlags flags)
Definition: mxapi.h:147
enum MxStatus(* mbox_check)(struct Mailbox *m)
Definition: mxapi.h:159