move rfc822.c as well
[apps/madmutt.git] / mutt.h
diff --git a/mutt.h b/mutt.h
index 7e8e495..2ef4a1b 100644 (file)
--- a/mutt.h
+++ b/mutt.h
 #include <pwd.h>
 #include <grp.h>
 
-#include "rfc822.h"
-#include "list.h"
-#include "hash.h"
+#include <lib-lib/buffer.h>
+#include <lib-lib/hash.h>
+#include <lib-lib/list.h>
+
+#include <lib-mime/mime.h>
+
 #include "charset.h"
 #include "lib/rx.h"
 
 #define INITVAL(x)
 #endif
 
-/* flags for mutt_extract_token() */
-#define M_TOKEN_EQUAL          1       /* treat '=' as a special */
-#define M_TOKEN_CONDENSE       (1<<1)  /* ^(char) to control chars (macros) */
-#define M_TOKEN_SPACE          (1<<2)  /* don't treat whitespace as a term */
-#define M_TOKEN_QUOTE          (1<<3)  /* don't interpret quotes */
-#define M_TOKEN_PATTERN                (1<<4)  /* !)|~ are terms (for patterns) */
-#define M_TOKEN_COMMENT                (1<<5)  /* don't reap comments */
-#define M_TOKEN_SEMICOLON      (1<<6)  /* don't treat ; as special */
-
-typedef struct {
-  char *data;                   /* pointer to data */
-  char *dptr;                   /* current read/write position */
-  size_t dsize;                 /* length of data */
-  int destroy;                  /* destroy `data' when done? */
-} BUFFER;
-
 typedef struct {
   int ch;                       /* raw key pressed */
   int op;                       /* function op */
@@ -201,6 +188,7 @@ enum {
   M_CRYPT_ENCRYPT,
   M_PGP_KEY,
   M_XLABEL,
+  M_MIMEATTACH,
 #ifdef USE_NNTP
   M_NEWSGROUPS,
 #endif
@@ -317,6 +305,7 @@ enum {
   OPTCOLLAPSEUNREAD,
   OPTCONFIRMAPPEND,
   OPTCONFIRMCREATE,
+  OPTCOUNTATTACH,
   OPTDELETEUNTAG,
   OPTDELSP,
   OPTDIGESTCOLLAPSE,
@@ -332,7 +321,7 @@ enum {
   OPTFORCENAME,
   OPTFORWDECODE,
   OPTFORWQUOTE,
-#if USE_HCACHE
+#ifdef USE_HCACHE
   OPTHCACHEVERIFY,
 #if HAVE_QDBM
   OPTHCACHECOMPRESS,
@@ -539,7 +528,7 @@ typedef struct spam_list_t {
 } SPAM_LIST;
 
 
-#define mutt_new_spam_list() mem_calloc (1, sizeof (SPAM_LIST))
+#define mutt_new_spam_list() p_new(SPAM_LIST, 1)
 void mutt_free_spam_list (SPAM_LIST **);
 
 int mutt_matches_ignore (const char *, LIST *);
@@ -577,12 +566,6 @@ typedef struct envelope {
   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 */
@@ -603,13 +586,13 @@ typedef struct body {
   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.
+  off_t 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 */
+  off_t offset;                 /* offset where the actual data begins */
+  off_t length;                 /* length (in bytes) of attachment */
   char *filename;               /* when sending a message, this is the file
                                  * to which this structure refers
                                  */
@@ -630,6 +613,8 @@ typedef struct body {
 
   struct attachptr *aptr;       /* Menu information, used in recvattach.c */
 
+  signed short attach_count;
+
   time_t stamp;                 /* time stamp of last
                                  * encoding update.
                                  */
@@ -667,6 +652,7 @@ typedef struct body {
   unsigned int badsig:1;        /* bad cryptographic signature (needed to check encrypted s/mime-signatures) */
 
   unsigned int collapsed:1;     /* used by recvattach */
+  unsigned int attach_qualifies:1;
 
 } BODY;
 
@@ -674,7 +660,7 @@ typedef struct header {
   unsigned int security:11;     /* bit 0-6: flags, bit 7,8: application.
                                    see: crypt.h pgplib.h, smime.h */
 
-  unsigned int mime:1;          /* has a Mime-Version header? */
+  unsigned int mime:1;          /* has a MIME-Version header? */
   unsigned int flagged:1;       /* marked important? */
   unsigned int tagged:1;
   unsigned int appended:1;      /* has been saved */
@@ -706,6 +692,9 @@ typedef struct header {
   unsigned int searched:1;
   unsigned int matched:1;
 
+  /* tells whether the attach count is valid */
+  unsigned int attach_valid:1;
+
   /* the following are used to support collapsing threads  */
   unsigned int collapsed:1;     /* is this message part of a collapsed thread? */
   unsigned int limited:1;       /* is this message in a limited view?  */
@@ -717,7 +706,7 @@ typedef struct header {
 
   time_t date_sent;             /* time when the message was sent (UTC) */
   time_t received;              /* time when the message was placed in the mailbox */
-  long offset;                  /* where in the stream does this message begin? */
+  off_t offset;                 /* where in the stream does this message begin? */
   int lines;                    /* how many lines in the body of this message? */
   int index;                    /* the absolute (unsorted) message number */
   int msgno;                    /* number displayed to the user */
@@ -733,6 +722,8 @@ typedef struct header {
   char *tree;                   /* character string to print thread tree */
   struct thread *thread;
 
+  short attach_total;
+
 #ifdef MIXMASTER
   LIST *chain;
 #endif
@@ -834,6 +825,18 @@ typedef struct {
   unsigned int counting:1;      /* do we just want to cound? */
 } CONTEXT;
 
+/* for attachment counter */
+typedef struct {
+  char *major;
+  int major_int;
+  const char *minor;
+  regex_t minor_rx;
+} ATTACH_MATCH;
+
+/* Flags for mutt_count_body_parts() */
+#define M_PARTS_TOPLEVEL (1<<0) /* is the top-level part */
+#define M_PARTS_RECOUNT (1<<1) /* force recount */
+
 #include "protos.h"
 #include "lib.h"
 #include "globals.h"