68#define GV_HIDE_MVIEW_CONTENTS
79void dot_patternlist(FILE *fp,
struct PatternList *pl,
struct ListHead *links);
83 static const char *values[] = {
"false",
"true" };
84 fprintf(fp,
"\t\t<tr>\n");
85 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", name);
86 fprintf(fp,
"\t\t\t<td border=\"0\">=</td>\n");
87 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", values[val]);
88 fprintf(fp,
"\t\t</tr>\n");
94 fprintf(fp,
"\t\t<tr>\n");
95 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", name);
96 fprintf(fp,
"\t\t\t<td border=\"0\">=</td>\n");
97 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%c</td>\n", ch);
98 fprintf(fp,
"\t\t</tr>\n");
109 fprintf(fp,
"\t\t<tr>\n");
110 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", name);
111 fprintf(fp,
"\t\t\t<td border=\"0\">=</td>\n");
114 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%p (%d)</td>\n",
115 (
void *) struct_fp, fileno(struct_fp));
119 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">NULL</td>\n");
121 fprintf(fp,
"\t\t</tr>\n");
126 fprintf(fp,
"\t\t<tr>\n");
127 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", name);
128 fprintf(fp,
"\t\t\t<td border=\"0\">=</td>\n");
129 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%d</td>\n", num);
130 fprintf(fp,
"\t\t</tr>\n");
135 for (; buf[0]; buf++)
139 else if (buf[0] ==
'>')
141 else if (buf[0] ==
'&')
148 if ((!str || (str[0] ==
'\0')) && !force)
151 char buf[1024] =
"[NULL]";
159 bool quoted = ((buf[0] !=
'[') && (buf[0] !=
'*'));
161 fprintf(fp,
"\t\t<tr>\n");
162 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", name);
163 fprintf(fp,
"\t\t\t<td border=\"0\">=</td>\n");
165 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">\"%s\"</td>\n", buf);
167 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", buf);
168 fprintf(fp,
"\t\t</tr>\n");
174 snprintf(buf, buflen,
"0%03o", umask);
180 snprintf(buf, buflen,
"obj_%p", ptr);
183void dot_ptr(FILE *fp,
const char *name,
void *ptr,
const char *colour)
185 fprintf(fp,
"\t\t<tr>\n");
186 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", name);
187 fprintf(fp,
"\t\t\t<td border=\"0\">=</td>\n");
190 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\" bgcolor=\"%s\">%p</td>\n",
195 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%p</td>\n", ptr);
197 fprintf(fp,
"\t\t</tr>\n");
201 const char *label,
bool back,
const char *colour)
208 char obj1[64] = { 0 };
209 char obj2[64] = { 0 };
210 char text[256] = { 0 };
211 char lstr[128] = { 0 };
217 snprintf(lstr,
sizeof(lstr),
"edgetooltip=\"%s\"", label);
219 snprintf(text,
sizeof(text),
"%s -> %s [ %s %s color=\"%s\" ]", obj1, obj2,
220 back ?
"dir=back" :
"", lstr, colour);
226 fprintf(fp,
"digraph neomutt\n");
227 fprintf(fp,
"{\n\n");
229 fprintf(fp,
"\tgraph [\n");
230 fprintf(fp,
"\t\trankdir=\"TB\"\n");
231 fprintf(fp,
"\t\tnodesep=\"0.5\"\n");
232 fprintf(fp,
"\t\tranksep=\"0.5\"\n");
233 fprintf(fp,
"\t];\n");
235 fprintf(fp,
"\tnode [\n");
236 fprintf(fp,
"\t\tshape=\"plain\"\n");
237 fprintf(fp,
"\t];\n");
239 fprintf(fp,
"\tedge [\n");
240 fprintf(fp,
"\t\tpenwidth=\"4.5\"\n");
241 fprintf(fp,
"\t\tarrowsize=\"1.0\"\n");
242 fprintf(fp,
"\t\tcolor=\"#c0c0c0\"\n");
243 fprintf(fp,
"\t];\n");
253 fprintf(fp,
"\t%s;\n", np->
data);
255 fprintf(fp,
"\n}\n");
260 char obj[64] = { 0 };
266 fprintf(fp,
"\t%s [\n", obj);
267 fprintf(fp,
"\t\tlabel=<<table cellspacing=\"0\" border=\"1\" rows=\"*\" "
268 "color=\"#d0d0d0\">\n");
269 fprintf(fp,
"\t\t<tr>\n");
270 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\" bgcolor=\"%s\" port=\"top\" colspan=\"3\"><font color=\"#000000\" point-size=\"20\"><b>%s</b></font> <font point-size=\"12\">(%p)</font></td>\n",
272 fprintf(fp,
"\t\t</tr>\n");
277 fprintf(fp,
"\t\t</table>>\n");
278 fprintf(fp,
"\t];\n");
282void dot_node(FILE *fp,
void *ptr,
const char *name,
const char *colour)
284 char obj[64] = { 0 };
287 fprintf(fp,
"\t%s [\n", obj);
288 fprintf(fp,
"\t\tlabel=<<table cellspacing=\"0\" border=\"1\" rows=\"*\" "
289 "color=\"#d0d0d0\">\n");
290 fprintf(fp,
"\t\t<tr>\n");
291 fprintf(fp,
"\t\t\t<td border=\"0\" bgcolor=\"%s\" port=\"top\"><font color=\"#000000\" point-size=\"20\"><b>%s</b></font></td>\n",
293 fprintf(fp,
"\t\t</tr>\n");
297void dot_node_link(FILE *fp,
void *ptr,
const char *name,
void *link,
const char *colour)
299 char obj[64] = { 0 };
302 fprintf(fp,
"\t%s [\n", obj);
303 fprintf(fp,
"\t\tlabel=<<table cellspacing=\"0\" border=\"1\" rows=\"*\" "
304 "color=\"#d0d0d0\">\n");
305 fprintf(fp,
"\t\t<tr>\n");
306 fprintf(fp,
"\t\t\t<td border=\"0\" bgcolor=\"%s\" port=\"top\"><font color=\"#000000\" point-size=\"20\"><b>%s</b></font></td>\n",
308 fprintf(fp,
"\t\t</tr>\n");
310 fprintf(fp,
"\t\t<tr>\n");
311 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\" bgcolor=\"%s\">%p</td>\n", colour, link);
312 fprintf(fp,
"\t\t</tr>\n");
325 const char *slash = strrchr(path,
'/');
336 char tmp[1024] = { 0 };
341 if (u->
path && (u->
path[0] !=
'\0'))
344 snprintf(buf, buflen,
"%s:%s", u->
host, u->
user);
349#ifndef GV_HIDE_CONFIG
351 struct ListHead *links)
363 snprintf(scope,
sizeof(scope),
"%s:", sub->
name);
366 for (
size_t i = 0; list[i]; i++)
373 size_t slen = strlen(scope);
376 if (strchr(iname + slen,
':'))
419 const char *typestr = NULL;
448 typestr =
"COMPRESSED";
454 fprintf(fp,
"\t\t<tr>\n");
455 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", name);
456 fprintf(fp,
"\t\t\t<td border=\"0\">=</td>\n");
457 fprintf(fp,
"\t\t\t<td border=\"0\" align=\"left\">%s</td>\n", typestr);
458 fprintf(fp,
"\t\t</tr>\n");
473 char buf[64] = { 0 };
487 char buf[64] = { 0 };
535 char buf[64] = { 0 };
604#ifndef GV_HIDE_CONFIG
624 char name[256] = { 0 };
641#ifndef GV_HIDE_CONFIG
666 dot_add_link(links, prev, np,
"MailboxNode->next",
false, NULL);
706 dot_add_link(links, adata, adata->
conn,
"ImapAccountData->conn",
false, NULL);
712 char buf[64] = { 0 };
763 dot_add_link(links, adata, adata->
conn,
"NntpAccountData->conn",
false, NULL);
776 char buf[64] = { 0 };
791 dot_add_link(links, adata, adata->
conn,
"PopAccountData->conn",
false, NULL);
821#ifndef GV_HIDE_CONFIG
827 char name[256] = { 0 };
846 dot_add_link(links, a, first,
"Account->mailboxes",
false, NULL);
862 dot_add_link(links, prev, np,
"Account->next",
false, NULL);
873#ifdef GV_HIDE_MVIEW_CONTENTS
884 char name[256] = { 0 };
887 time_t now = time(NULL);
892 snprintf(name,
sizeof(name),
"%s-%s.gv", date, title);
900 FILE *fp = fopen(name,
"w");
906#ifndef GV_HIDE_NEOMUTT
909 "NeoMutt->accounts",
false, NULL);
910#ifndef GV_HIDE_CONFIG
914 char obj1[64] = { 0 };
915 char obj2[64] = { 0 };
918 buf_printf(&buf,
"{ rank=same %s %s }", obj1, obj2);
930#ifndef GV_HIDE_NEOMUTT
932 fprintf(fp,
"\t{ rank=same ");
936 fprintf(fp,
"%s ", name);
939 fprintf(fp,
"%s ", name);
944 fprintf(fp,
"\t{ rank=same ");
953 fprintf(fp,
"%s ",
name);
962#ifndef GV_HIDE_BODY_CONTENT
994#define ADD_BOOL(F) add_flag(&buf, cont->F, #F)
1035void dot_body(FILE *fp,
struct Body *b,
struct ListHead *links,
bool link_next)
1064#define ADD_BOOL(F) add_flag(&buf, b->F, #F)
1088#ifdef GV_HIDE_BODY_CONTENT
1101#ifndef GV_HIDE_BODY_CONTENT
1109#ifndef GV_HIDE_ENVELOPE
1130 if (b->
next && link_next)
1132 char name[256] = { 0 };
1154#ifndef GV_HIDE_BODY_CONTENT
1172#ifndef GV_HIDE_ENVELOPE
1194 struct ListHead *links)
1213#define ADD_FLAG(F) add_flag(&buf, (env->changed & F), #F)
1221#define ADDR_LIST(AL) dot_addr_list(fp, #AL, &env->AL, links)
1277#define ADD_BOOL(F) add_flag(&buf, e->F, #F)
1306#define ADD_BOOL(F) add_flag(&buf, (e->security & F), #F)
1341 snprintf(zone,
sizeof(zone),
" (%c%02u%02u)", e->
zoccident ?
'-' :
'+',
1361#ifndef GV_HIDE_ENVELOPE
1389 char name[256] = { 0 };
1392 time_t now = time(NULL);
1396 FILE *fp = fopen(name,
"w");
1411 char name[256] = { 0 };
1418 snprintf(format,
sizeof(format),
"%%T-%s.gv", title);
1420 time_t now = time(NULL);
1424 FILE *fp = fopen(name,
"w");
1464 short idxmax,
struct ListHead *links)
1472 for (
size_t i = 0; i < idxmax; i++)
1474 snprintf(arr,
sizeof(arr),
"idx[%zu]", i);
1475 dot_ptr(fp, arr, idx[i],
"#3bcbc4");
1480 for (
size_t i = 0; i < idxlen; i++)
1483 dot_add_link(links, idx, idx[i],
"AttachCtx->idx",
false, NULL);
1494 for (
size_t i = 0; i < vcount; i++)
1496 snprintf(arr,
sizeof(arr),
"v2r[%zu]", i);
1504 struct ListHead *links)
1512 for (
size_t i = 0; i < fp_max; i++)
1514 snprintf(arr,
sizeof(arr),
"fp_idx[%zu]", i);
1522 short body_max,
struct ListHead *links)
1530 for (
size_t i = 0; i < body_max; i++)
1532 snprintf(arr,
sizeof(arr),
"body_idx[%zu]", i);
1533 dot_ptr(fp, arr, body_idx[i],
"#2020ff");
1538 for (
size_t i = 0; i < body_max; i++)
1542 dot_body(fp, body_idx[i], links,
true);
1543 dot_add_link(links, body_idx, body_idx[i],
"AttachCtx->Body",
false,
"#008000");
1562 dot_add_link(links, actx, actx->
idx,
"AttachCtx->idx",
false, NULL);
1568 dot_add_link(links, actx, actx->
v2r,
"AttachCtx->v2r",
false, NULL);
1588 char name[256] = { 0 };
1591 time_t now = time(NULL);
1595 FILE *fp = fopen(name,
"w");
1610 static struct Mapping PatternNames[] = {
1668 if ((pat->
min != 0) || (pat->
max != 0))
1674#define ADD_BOOL(F) add_flag(&buf, pat->F, #F)
1714 dot_add_link(links, pat, first,
"Patern->child",
false,
"#00ff00");
1724 char name[256] = { 0 };
1733 dot_add_link(links, prev, np,
"PatternList->next",
false,
"#ff0000");
1748 char name[256] = { 0 };
1751 time_t now = time(NULL);
1755 FILE *fp = fopen(name,
"w");
size_t mutt_addrlist_write(const struct AddressList *al, struct Buffer *buf, bool display)
Write an Address to a buffer.
GUI display the mailboxes in a side panel.
int buf_printf(struct Buffer *buf, const char *fmt,...)
Format a string overwriting a Buffer.
int buf_add_printf(struct Buffer *buf, const char *fmt,...)
Format a string appending a Buffer.
void buf_dealloc(struct Buffer *buf)
Release the memory allocated by a buffer.
void buf_reset(struct Buffer *buf)
Reset an existing Buffer.
bool buf_is_empty(const struct Buffer *buf)
Is the Buffer empty?
struct Buffer buf_make(size_t size)
Make a new buffer on the stack.
struct Buffer * buf_init(struct Buffer *buf)
Initialise a new Buffer.
size_t buf_addch(struct Buffer *buf, char c)
Add a single character to a Buffer.
size_t buf_addstr(struct Buffer *buf, const char *s)
Add a string to a Buffer.
static const char * buf_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
Compressed mbox local mailbox type.
Convenience wrapper for the config headers.
Convenience wrapper for the core headers.
const char * get_content_type(enum ContentType type)
const char * get_content_encoding(enum ContentEncoding enc)
const char * get_content_disposition(enum ContentDisposition disp)
Structs that make up an email.
#define MUTT_ENV_CHANGED_SUBJECT
Protected header update.
#define MUTT_ENV_CHANGED_XLABEL
X-Label edited.
#define MUTT_ENV_CHANGED_IRT
In-Reply-To changed to link/break threads.
#define MUTT_ENV_CHANGED_REFS
References changed to break thread.
void dot_array_actx_idx(FILE *fp, struct AttachPtr **idx, short idxlen, short idxmax, struct ListHead *links)
void dot_mailbox_pop(FILE *fp, struct PopAccountData *adata, struct ListHead *links)
void dot_ptr_name(char *buf, size_t buflen, const void *ptr)
void dot_parameter_list(FILE *fp, const char *name, const struct ParameterList *pl)
void dot_graph_header(FILE *fp)
void dot_account_pop(FILE *fp, struct PopAccountData *adata, struct ListHead *links)
void dot_object_footer(FILE *fp)
void dot_path_fs(char *buf, size_t buflen, const char *path)
void dump_graphviz_body(struct Body *b)
void dot_addr_list(FILE *fp, const char *name, const struct AddressList *al, struct ListHead *links)
void dot_mailbox_imap(FILE *fp, struct ImapMboxData *mdata, struct ListHead *links)
void dot_comp(FILE *fp, struct CompressInfo *ci, struct ListHead *links)
void dot_mailbox_type(FILE *fp, const char *name, enum MailboxType type)
void dot_attach_ptr2(FILE *fp, struct AttachPtr *aptr, struct ListHead *links)
void dot_type_date(char *buf, size_t buflen, time_t timestamp)
void dot_array_actx_v2r(FILE *fp, short *v2r, short vcount, struct ListHead *links)
void dot_type_number(FILE *fp, const char *name, int num)
void dot_email(FILE *fp, struct Email *e, struct ListHead *links)
void dot_type_char(FILE *fp, const char *name, char ch)
void dot_account_list(FILE *fp, struct AccountList *al, struct ListHead *links)
void dot_account_mbox(FILE *fp, struct MboxAccountData *adata, struct ListHead *links)
void dot_type_file(FILE *fp, const char *name, FILE *struct_fp)
void dump_graphviz(const char *title, struct MailboxView *mv)
void dot_type_bool(FILE *fp, const char *name, bool val)
void dot_list_head(FILE *fp, const char *name, const struct ListHead *list)
void dot_config(FILE *fp, const char *name, int type, struct ConfigSubset *sub, struct ListHead *links)
void dot_array_actx_body_idx(FILE *fp, struct Body **body_idx, short body_len, short body_max, struct ListHead *links)
void dot_account_imap(FILE *fp, struct ImapAccountData *adata, struct ListHead *links)
void dot_patternlist(FILE *fp, struct PatternList *pl, struct ListHead *links)
void dot_type_umask(char *buf, size_t buflen, int umask)
void dot_graph_footer(FILE *fp, struct ListHead *links)
void dot_mailbox_node(FILE *fp, struct MailboxNode *mn, struct ListHead *links)
void dot_mview(FILE *fp, struct MailboxView *mv, struct ListHead *links)
void dot_account(FILE *fp, struct Account *a, struct ListHead *links)
void dot_connection(FILE *fp, struct Connection *c, struct ListHead *links)
void dot_mailbox_mbox(FILE *fp, struct MboxAccountData *mdata, struct ListHead *links)
void dot_node_link(FILE *fp, void *ptr, const char *name, void *link, const char *colour)
void dot_type_string(FILE *fp, const char *name, const char *str, bool force)
void dot_account_notmuch(FILE *fp, struct NmAccountData *adata, struct ListHead *links)
void dot_type_string_escape(char *buf, size_t buflen)
void dot_array_actx_fp_idx(FILE *fp, FILE **fp_idx, short fp_len, short fp_max, struct ListHead *links)
void dot_attach_ctx(FILE *fp, struct AttachCtx *actx, struct ListHead *links)
void dot_path_imap(char *buf, size_t buflen, const char *path)
void dot_node(FILE *fp, void *ptr, const char *name, const char *colour)
void dot_mailbox_notmuch(FILE *fp, struct NmMboxData *mdata, struct ListHead *links)
void dot_pattern(FILE *fp, struct Pattern *pat, struct ListHead *links)
void dot_content(FILE *fp, struct Content *cont, struct ListHead *links)
void dot_account_nntp(FILE *fp, struct NntpAccountData *adata, struct ListHead *links)
void dot_attach_ptr(FILE *fp, struct AttachPtr *aptr, struct ListHead *links)
void dot_mailbox_list(FILE *fp, struct MailboxList *ml, struct ListHead *links, bool abbr)
void dot_ptr(FILE *fp, const char *name, void *ptr, const char *colour)
const char * pattern_type_name(int type)
void dot_object_header(FILE *fp, const void *ptr, const char *name, const char *colour)
void dump_graphviz_patternlist(struct PatternList *pl)
void dot_envelope(FILE *fp, struct Envelope *env, struct ListHead *links)
void dump_graphviz_attach_ctx(struct AttachCtx *actx)
void dot_mailbox(FILE *fp, struct Mailbox *m, struct ListHead *links)
void dot_mailbox_maildir(FILE *fp, struct MaildirMboxData *mdata, struct ListHead *links)
void dot_mailbox_nntp(FILE *fp, struct NntpMboxData *mdata, struct ListHead *links)
void dump_graphviz_email(struct Email *e, const char *title)
void dot_add_link(struct ListHead *links, void *src, void *dst, const char *label, bool back, const char *colour)
void dot_body(FILE *fp, struct Body *b, struct ListHead *links, bool link_next)
Imap-specific Account data.
Imap-specific Mailbox data.
Shared constants/structs that are private to IMAP.
struct ListNode * mutt_list_insert_tail(struct ListHead *h, char *s)
Append a string to the end of a List.
void mutt_list_free(struct ListHead *h)
Free a List AND its strings.
static const char * timestamp(time_t stamp)
Create a YYYY-MM-DD HH:MM:SS timestamp.
MailboxType
Supported mailbox formats.
@ MUTT_NOTMUCH
'Notmuch' (virtual) Mailbox type
@ MUTT_MMDF
'mmdf' Mailbox type
@ MUTT_POP
'POP3' Mailbox type
@ MUTT_MH
'MH' Mailbox type
@ MUTT_NNTP
'NNTP' (Usenet) Mailbox type
@ MUTT_IMAP
'IMAP' Mailbox type
@ MUTT_MBOX
'mbox' Mailbox type
@ MUTT_COMPRESSED
Compressed file Mailbox type.
@ MUTT_MAILDIR
'Maildir' Mailbox type
Maildir-specific Email data.
Maildir local mailbox type.
Maildir-specific Mailbox data.
Maildir/MH private types.
const char * mutt_map_get_name(int val, const struct Mapping *map)
Lookup a string for a constant.
size_t mutt_date_localtime_format(char *buf, size_t buflen, const char *format, time_t t)
Format localtime.
Convenience wrapper for the library headers.
bool mutt_str_inline_replace(char *buf, size_t buflen, size_t xlen, const char *rstr)
Replace the beginning of a string.
char * mutt_str_dup(const char *str)
Copy a string, safely.
bool mutt_str_equal(const char *a, const char *b)
Compare two strings.
size_t mutt_str_startswith(const char *str, const char *prefix)
Check whether a string starts with a prefix.
size_t mutt_str_copy(char *dest, const char *src, size_t dsize)
Copy a string into a buffer (guaranteeing NUL-termination)
char * mutt_str_cat(char *buf, size_t buflen, const char *s)
Concatenate two strings.
API for encryption/signing of emails.
#define SEC_INLINE
Email has an inline signature.
#define SEC_AUTOCRYPT
(Autocrypt) Message will be, or was Autocrypt encrypt+signed
#define SEC_OPPENCRYPT
Opportunistic encrypt mode.
#define PGP_TRADITIONAL_CHECKED
Email has a traditional (inline) signature.
#define SEC_GOODSIGN
Email has a valid signature.
#define APPLICATION_PGP
Use PGP to encrypt/sign.
#define SEC_SIGNOPAQUE
Email has an opaque signature (encrypted)
#define SEC_BADSIGN
Email has a bad signature.
#define APPLICATION_SMIME
Use SMIME to encrypt/sign.
#define SEC_PARTSIGN
Not all parts of the email is signed.
#define SEC_ENCRYPT
Email is encrypted.
#define SEC_AUTOCRYPT_OVERRIDE
(Autocrypt) Indicates manual set/unset of encryption
#define SEC_SIGN
Email is signed.
#define SEC_KEYBLOCK
Email has a key attached.
Nntp-specific Account data.
Usenet network mailbox type; talk to an NNTP server.
Nntp-specific Mailbox data.
Notmuch-specific Account data.
Notmuch virtual mailbox type.
Notmuch-specific Mailbox data.
Match patterns to emails.
@ MUTT_PAT_HEADER
Pattern matches email's header.
@ MUTT_PAT_WHOLE_MSG
Pattern matches raw email text.
@ MUTT_PAT_BROKEN
Message is part of a broken thread.
@ MUTT_PAT_ID_EXTERNAL
Message-Id is among results from an external query.
@ MUTT_PAT_OR
Either pattern can match.
@ MUTT_PAT_CHILDREN
Pattern matches a child email.
@ MUTT_PAT_PARENT
Pattern matches parent.
@ MUTT_PAT_REFERENCE
Pattern matches 'References:' or 'In-Reply-To:' field.
@ MUTT_PAT_FROM
Pattern matches 'From:' field.
@ MUTT_PAT_DRIVER_TAGS
Pattern matches message tags.
@ MUTT_PAT_COLLAPSED
Thread is collapsed.
@ MUTT_PAT_CRYPT_VERIFIED
Message is crypographically verified.
@ MUTT_PAT_HORMEL
Pattern matches email's spam score.
@ MUTT_PAT_SUBJECT
Pattern matches 'Subject:' field.
@ MUTT_PAT_LIST
Email is on mailing list.
@ MUTT_PAT_NEWSGROUPS
Pattern matches newsgroup.
@ MUTT_PAT_PERSONAL_RECIP
Email is addressed to the user.
@ MUTT_PAT_CC
Pattern matches 'Cc:' field.
@ MUTT_PAT_SUBSCRIBED_LIST
Email is on subscribed mailing list.
@ MUTT_PAT_SERVERSEARCH
Server-side pattern matches.
@ MUTT_PAT_RECIPIENT
User is a recipient of the email.
@ MUTT_PAT_CRYPT_ENCRYPT
Message is encrypted.
@ MUTT_PAT_UNREFERENCED
Message is unreferenced in the thread.
@ MUTT_PAT_CRYPT_SIGN
Message is signed.
@ MUTT_PAT_MESSAGE
Pattern matches message number.
@ MUTT_PAT_AND
Both patterns must match.
@ MUTT_PAT_DATE
Pattern matches 'Date:' field.
@ MUTT_PAT_XLABEL
Pattern matches keyword/label.
@ MUTT_PAT_SCORE
Pattern matches email's score.
@ MUTT_PAT_MIMEATTACH
Pattern matches number of attachments.
@ MUTT_PAT_DUPLICATED
Duplicate message.
@ MUTT_PAT_PERSONAL_FROM
Email is from the user.
@ MUTT_PAT_TO
Pattern matches 'To:' field.
@ MUTT_PAT_BCC
Pattern matches 'Bcc:' field.
@ MUTT_PAT_SENDER
Pattern matches sender.
@ MUTT_PAT_DATE_RECEIVED
Pattern matches date received.
@ MUTT_PAT_ADDRESS
Pattern matches any address field.
@ MUTT_PAT_MIMETYPE
Pattern matches MIME type.
@ MUTT_PAT_PGP_KEY
Message has PGP key.
@ MUTT_PAT_ID
Pattern matches email's Message-Id.
@ MUTT_PAT_THREAD
Pattern matches email thread.
@ MUTT_PAT_SIZE
Pattern matches email's size.
@ MUTT_PAT_BODY
Pattern matches email's body.
struct Buffer * buf_pool_get(void)
Get a Buffer from the pool.
void buf_pool_release(struct Buffer **ptr)
Return a Buffer to the pool.
Pop-specific Account data.
#define SLIST_FOREACH(var, head, field)
#define TAILQ_FOREACH(var, head, field)
#define STAILQ_HEAD_INITIALIZER(head)
#define STAILQ_FIRST(head)
#define STAILQ_FOREACH(var, head, field)
#define TAILQ_FIRST(head)
#define STAILQ_EMPTY(head)
#define SLIST_FIRST(head)
#define TAILQ_EMPTY(head)
A group of associated Mailboxes.
enum MailboxType type
Type of Mailboxes this Account contains.
char * name
Name of Account.
struct ConfigSubset * sub
Inherited config items.
void * adata
Private data (for Mailbox backends)
struct MailboxList mailboxes
List of Mailboxes.
short vcount
The number of virtual attachments.
short body_len
Number of Body parts.
FILE * fp_root
Used by recvattach for updating.
short fp_max
Size of FILE array.
struct Email * email
Used by recvattach for updating.
struct AttachPtr ** idx
Array of attachments.
struct Body ** body_idx
Extra struct Body* used for decryption.
short fp_len
Number of FILE handles.
short body_max
Size of Body array.
FILE ** fp_idx
Extra FILE* used for decryption.
short idxmax
Size of attachment array.
short idxlen
Number of attachmentes.
short * v2r
Mapping from virtual to real attachment.
An email to which things will be attached.
struct Body * body
Attachment.
bool collapsed
Group is collapsed.
int num
Attachment index number.
int level
Nesting depth of attachment.
FILE * fp
Used in the recvattach menu.
bool unowned
Don't unlink on detach.
bool decrypted
Not part of message as stored in the email->body.
int parent_type
Type of parent attachment, e.g. TYPE_MULTIPART.
char * language
content-language (RFC8255)
char * d_filename
filename to be used for the content-disposition header If NULL, filename is used instead.
struct Body * parts
parts of a multipart or message/rfc822
LOFF_T offset
offset where the actual data begins
signed short attach_count
Number of attachments.
char * xtype
content-type if x-unknown
time_t stamp
Time stamp of last encoding update.
struct Envelope * mime_headers
Memory hole protected headers.
LOFF_T length
length (in bytes) of attachment
char * charset
Send mode: charset of attached file as stored on disk.
struct ParameterList parameter
Parameters of the content-type.
struct AttachPtr * aptr
Menu information, used in recvattach.c.
struct Email * email
header information for message/rfc822
char * description
content-description
unsigned int disposition
content-disposition, ContentDisposition
struct Content * content
Detailed info about the content of the attachment.
struct Body * next
next attachment in the list
char * subtype
content-type subtype
unsigned int encoding
content-transfer-encoding, ContentEncoding
long hdr_offset
Offset in stream where the headers begin.
char * form_name
Content-Disposition form-data name param.
unsigned int type
content-type primary type, ContentType
char * filename
When sending a message, this is the file to which this structure refers.
String manipulation buffer.
char * data
Pointer to data.
Private data for compress.
const char * cmd_append
append-hook command
const char * cmd_open
open-hook command
const char * cmd_close
close-hook command
A set of inherited config items.
const char * name
Scope name of Subset.
struct ConfigSet * cs
Parent ConfigSet.
char login[128]
Login name.
char host[128]
Server to login to.
unsigned short port
Port to connect to.
char inbuf[1024]
Buffer for incoming traffic.
struct ConnAccount account
Account details: username, password, etc.
int fd
Socket file descriptor.
Info about an attachment.
long crlf
\r and \n characters
long hibin
8-bit characters
long ascii
Number of ascii chars.
long nulbin
Null characters (0x0)
long linemax
Length of the longest line in the file.
long lobin
Unprintable 7-bit chars (eg., control chars)
The envelope/body of an email.
unsigned int zminutes
Minutes away from UTC.
struct Envelope * env
Envelope information.
int lines
How many lines in the body of this message?
struct Body * body
List of MIME parts.
size_t num_hidden
Number of hidden messages in this view (only valid when collapsed is set)
bool zoccident
True, if west of UTC, False if east.
LOFF_T offset
Where in the stream does this message begin?
short attach_total
Number of qualifying attachments in message, if attach_valid.
unsigned int zhours
Hours away from UTC.
time_t date_sent
Time when the message was sent (UTC)
int vnum
Virtual message number.
int msgno
Number displayed to the user.
char * path
Path of Email (for local Mailboxes)
int index
The absolute (unsorted) message number.
time_t received
Time when the message was placed in the mailbox.
struct ListHead userhdrs
user defined headers
char * supersedes
Supersedes header.
char * list_subscribe
This stores a mailto URL, or nothing.
char * followup_to
List of 'followup-to' fields.
char * message_id
Message ID.
char * x_comment_to
List of 'X-comment-to' fields.
struct AutocryptHeader * autocrypt_gossip
Autocrypt Gossip header.
char * newsgroups
List of newsgroups.
struct ListHead references
message references (in reverse order)
struct AutocryptHeader * autocrypt
Autocrypt header.
struct Buffer spam
Spam header.
struct ListHead in_reply_to
in-reply-to header content
char * subject
Email's subject.
char * xref
List of cross-references.
char * organization
Organisation header.
char * list_post
This stores a mailto URL, or nothing.
char * real_subj
Offset of the real subject.
char * disp_subj
Display subject (modified copy of subject)
char * list_unsubscribe
This stores a mailto URL, or nothing.
The item stored in a Hash Table.
union HashKey key
Key representing the data.
int type
Type of data stored in Hash Table, e.g. DT_STRING.
IMAP-specific Account data -.
bool qresync
true, if QRESYNC is successfully ENABLE'd
unsigned char seqid
tag sequence prefix
bool unicode
If true, we can send UTF-8, and the server will use UTF8 rather than mUTF7.
struct Mailbox * mailbox
Current selected mailbox.
struct Connection * conn
Connection to IMAP server.
IMAP-specific Mailbox data -.
char * real_name
Original Mailbox name, e.g.: INBOX can be just \0.
char * munge_name
Munged version of the mailbox name.
struct Mailbox * mailbox
Mailbox in the list.
bool collapsed
Are all threads collapsed?
off_t vsize
Size (in bytes) of the messages shown.
struct Mailbox * mailbox
Current Mailbox.
char * pattern
Limit pattern string.
int vcount
The number of virtual messages.
char * realpath
Used for duplicate detection, context comparison, and the sidebar.
int * v2r
Mapping from virtual to real msgno.
int msg_count
Total number of messages.
int email_max
Number of pointers in emails.
enum MailboxType type
Mailbox type.
void * mdata
Driver specific data.
struct Email ** emails
Array of Emails.
char * name
A short name for the Mailbox.
struct Buffer pathbuf
Path of the Mailbox.
struct Account * account
Account that owns this Mailbox.
int opened
Number of times mailbox is opened.
void * compress_info
Compressed mbox module private data.
struct ConfigSubset * sub
Inherited config items.
Maildir-specific Mailbox data -.
mode_t mh_umask
umask to use when creating files
struct timespec mtime_cur
Timestamp of the 'cur' dir.
Mapping between user-readable string and a constant.
Mbox-specific Account data -.
bool append
mailbox is opened in append mode
bool locked
is the mailbox locked?
struct timespec atime
File's last-access time.
Container for Accounts, Notifications.
struct AccountList accounts
List of all Accounts.
struct ConfigSubset * sub
Inherited config items.
Notmuch-specific Account data -.
notmuch_database_t * db
Connection to Notmuch database.
Notmuch-specific Mailbox data -.
int db_limit
Maximum number of results to return.
NNTP-specific Account data -.
bool hasXOVER
Server supports XOVER command.
struct Connection * conn
Connection to NNTP Server.
bool hasXGTITLE
Server supports XGTITLE command.
bool hasCAPABILITIES
Server supports CAPABILITIES command.
bool hasSTARTTLS
Server supports STARTTLS command.
bool hasLISTGROUPrange
Server supports LISTGROUPrange command.
bool hasLISTGROUP
Server supports LISTGROUP command.
bool hasOVER
Server supports OVER command.
bool hasDATE
Server supports DATE command.
bool hasLIST_NEWSGROUPS
Server supports LIST_NEWSGROUPS command.
NNTP-specific Mailbox data -.
char * group
Name of newsgroup.
char * desc
Description of newsgroup.
Attribute associated with a MIME part.
char * attribute
Parameter name.
char * value
Parameter value.
A simple (non-regex) pattern.
bool group_match
Check a group of Addresses.
struct PatternList * child
Arguments to logical operation.
long min
Minimum for range checks.
bool string_match
Check a string for a match.
regex_t * regex
Compiled regex, for non-pattern matching.
char * str
String, if string_match is set.
long max
Maximum for range checks.
short op
Operation, e.g. MUTT_PAT_SCORE.
bool is_multi
Multiple case (only for ~I pattern now)
POP-specific Account data -.
struct Connection * conn
Connection to POP server.
A parsed URL proto://user:password@host:port/path?a=1&b=2
time_t tv_sec
Number of seconds since the epoch.
int cs_subset_he_string_get(const struct ConfigSubset *sub, struct HashElem *he, struct Buffer *result)
Get a config item as a string.
struct HashElem ** get_elem_list(struct ConfigSet *cs)
Create a sorted list of all config items.
#define DT_INHERIT_MBOX
Config item can be Mailbox-specific.
#define DTYPE(x)
Mask for the Data Type.
#define DT_INHERIT_ACC
Config item can be Account-specific.
#define DT_STRING
a string
#define DT_SENSITIVE
Contains sensitive value, e.g. password.
const char * strkey
String key.
struct Url * url_parse(const char *src)
Fill in Url.
void url_free(struct Url **ptr)
Free the contents of a URL.