#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 */
M_REFERENCE,
M_RECIPIENT,
M_LIST,
+ M_SUBSCRIBED_LIST,
M_PERSONAL_RECIP,
M_PERSONAL_FROM,
M_ADDRESS,
M_CRYPT_ENCRYPT,
M_PGP_KEY,
M_XLABEL,
+ M_MIMEATTACH,
#ifdef USE_NNTP
M_NEWSGROUPS,
#endif
OPTCOLLAPSEUNREAD,
OPTCONFIRMAPPEND,
OPTCONFIRMCREATE,
+ OPTCOUNTATTACH,
OPTDELETEUNTAG,
OPTDELSP,
OPTDIGESTCOLLAPSE,
OPTFORCENAME,
OPTFORWDECODE,
OPTFORWQUOTE,
-#if USE_HCACHE
+#ifdef USE_HCACHE
OPTHCACHEVERIFY,
#if HAVE_QDBM
OPTHCACHECOMPRESS,
} 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 *);
void mutt_init (int, LIST *);
typedef struct envelope {
- ADDRESS *return_path;
- ADDRESS *from;
- ADDRESS *to;
- ADDRESS *cc;
- ADDRESS *bcc;
- ADDRESS *sender;
- ADDRESS *reply_to;
- ADDRESS *mail_followup_to;
+ address_t *return_path;
+ address_t *from;
+ address_t *to;
+ address_t *cc;
+ address_t *bcc;
+ address_t *sender;
+ address_t *reply_to;
+ address_t *mail_followup_to;
char *list_post; /* this stores a mailto URL, or nothing */
char *subject;
char *real_subj; /* offset of the real subject */
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 */
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
*/
struct attachptr *aptr; /* Menu information, used in recvattach.c */
+ signed short attach_count;
+
time_t stamp; /* time stamp of last
* encoding update.
*/
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;
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 */
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? */
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 */
char *tree; /* character string to print thread tree */
struct thread *thread;
+ short attach_total;
+
#ifdef MIXMASTER
LIST *chain;
#endif
/* 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
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;
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"