-#define mutt_bit_alloc(n) calloc ((n + 7) / 8, sizeof (char))
-#define mutt_bit_set(v,n) v[n/8] |= (1 << (n % 8))
-#define mutt_bit_unset(v,n) v[n/8] &= ~(1 << (n % 8))
-#define mutt_bit_toggle(v,n) v[n/8] ^= (1 << (n % 8))
-#define mutt_bit_isset(v,n) (v[n/8] & (1 << (n % 8)))
-
-#define set_option(x) mutt_bit_set(Options,x)
-#define unset_option(x) mutt_bit_unset(Options,x)
-#define toggle_option(x) mutt_bit_toggle(Options,x)
-#define option(x) mutt_bit_isset(Options,x)
-
-typedef struct list_t {
- char *data;
- struct list_t *next;
-} LIST;
-
-typedef struct spam_list_t {
- rx_t *rx;
- int nmatch;
- char *template;
- struct spam_list_t *next;
-} SPAM_LIST;
-
-
-#define mutt_new_list() mem_calloc (1, sizeof (LIST))
-#define mutt_new_spam_list() mem_calloc (1, sizeof (SPAM_LIST))
-void mutt_free_list (LIST **);
-void mutt_free_spam_list (SPAM_LIST **);
-LIST *mutt_copy_list (LIST *);
-int mutt_matches_ignore (const char *, LIST *);
-
-/* add an element to a list */
-LIST *mutt_add_list (LIST*, const char*);
-LIST *mutt_add_list_n (LIST*, const void*, size_t len);
-
-void mutt_init (int, LIST *);
-
-typedef struct alias {
- struct alias *self; /* XXX - ugly hack */
- char *name;
- ADDRESS *addr;
- struct alias *next;
- short tagged;
- short del;
- short num;
-} ALIAS;
-
-typedef struct envelope {
- ADDRESS *return_path;
- ADDRESS *from;
- ADDRESS *to;
- ADDRESS *cc;
- ADDRESS *bcc;
- ADDRESS *sender;
- ADDRESS *reply_to;
- ADDRESS *mail_followup_to;
- char *list_post; /* this stores a mailto URL, or nothing */
- char *subject;
- char *real_subj; /* offset of the real subject */
- char *message_id;
- char *supersedes;
- char *date;
- char *x_label;
- char *organization;
-#ifdef USE_NNTP
- char *newsgroups;
- char *xref;
- char *followup_to;
- char *x_comment_to;
-#endif
- BUFFER *spam;
- LIST *references; /* message references (in reverse order) */
- LIST *in_reply_to; /* in-reply-to header content */
- LIST *userhdrs; /* user defined headers */
- unsigned int irt_changed:1; /* In-Reply-To changed to link/break threads */
- unsigned int refs_changed:1; /* References changed to break thread */
-} ENVELOPE;
-
-typedef struct parameter {
- char *attribute;
- char *value;
- struct parameter *next;
-} PARAMETER;
-
-/* Information that helps in determing the Content-* of an attachment */
-typedef struct content {
- long hibin; /* 8-bit characters */
- long lobin; /* unprintable 7-bit chars (eg., control chars) */
- long crlf; /* '\r' and '\n' characters */
- long ascii; /* number of ascii chars */
- long linemax; /* length of the longest line in the file */
- unsigned int space:1; /* whitespace at the end of lines? */
- unsigned int binary:1; /* long lines, or CR not in CRLF pair */
- unsigned int from:1; /* has a line beginning with "From "? */
- unsigned int dot:1; /* has a line consisting of a single dot? */
- unsigned int cr:1; /* has CR, even when in a CRLF pair */
-} CONTENT;
-
-typedef struct body {
- char *xtype; /* content-type if x-unknown */
- char *subtype; /* content-type subtype */
- PARAMETER *parameter; /* parameters of the content-type */
- char *description; /* content-description */
- char *form_name; /* Content-Disposition form-data name param */
- long hdr_offset; /* offset in stream where the headers begin.
- * this info is used when invoking metamail,
- * where we need to send the headers of the
- * attachment
- */
- long offset; /* offset where the actual data begins */
- long length; /* length (in bytes) of attachment */
- char *filename; /* when sending a message, this is the file
- * to which this structure refers
- */
- char *d_filename; /* filename to be used for the
- * content-disposition header.
- * If NULL, filename is used
- * instead.
- */
- char *file_charset; /* charset of attached file */
- CONTENT *content; /* structure used to store detailed info about
- * the content of the attachment. this is used
- * to determine what content-transfer-encoding
- * is required when sending mail.
- */
- struct body *next; /* next attachment in the list */
- struct body *parts; /* parts of a multipart or message/rfc822 */
- struct header *hdr; /* header information for message/rfc822 */