update gettext copy.
[apps/madmutt.git] / mutt.h
diff --git a/mutt.h b/mutt.h
index 688d550..c3a3801 100644 (file)
--- a/mutt.h
+++ b/mutt.h
@@ -201,6 +201,7 @@ enum {
   M_CRYPT_ENCRYPT,
   M_PGP_KEY,
   M_XLABEL,
+  M_MIMEATTACH,
 #ifdef USE_NNTP
   M_NEWSGROUPS,
 #endif
@@ -317,6 +318,7 @@ enum {
   OPTCOLLAPSEUNREAD,
   OPTCONFIRMAPPEND,
   OPTCONFIRMCREATE,
+  OPTCOUNTATTACH,
   OPTDELETEUNTAG,
   OPTDELSP,
   OPTDIGESTCOLLAPSE,
@@ -332,7 +334,7 @@ enum {
   OPTFORCENAME,
   OPTFORWDECODE,
   OPTFORWQUOTE,
-#if USE_HCACHE
+#ifdef USE_HCACHE
   OPTHCACHEVERIFY,
 #if HAVE_QDBM
   OPTHCACHECOMPRESS,
@@ -539,7 +541,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 *);
@@ -603,13 +605,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 +632,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 +671,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 +679,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 +711,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 +725,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 +741,8 @@ typedef struct header {
   char *tree;                   /* character string to print thread tree */
   struct thread *thread;
 
+  short attach_total;
+
 #ifdef MIXMASTER
   LIST *chain;
 #endif
@@ -767,7 +777,7 @@ typedef struct thread {
 
 
 /* flag to mutt_pattern_comp() */
-#define M_FULL_MSG     1       /* enable body and header matching */
+#define M_FULL_MSG      (1<<0)       /* enable body and header matching */
 
 typedef enum {
   M_MATCH_FULL_ADDRESS = 1
@@ -775,12 +785,14 @@ typedef enum {
 
 typedef struct pattern_t {
   short op;
-  short not;
-  short alladdr;
+  unsigned int not : 1;
+  unsigned int alladdr : 1;
+  unsigned int stringmatch : 1;
   int min;
   int max;
   struct pattern_t *next;
   struct pattern_t *child;      /* arguments to logical op */
+  char* str;
   regex_t *rx;
 } pattern_t;
 
@@ -832,6 +844,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"