X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=mutt.h;h=2ef4a1b869505bd30fe7d9c1a5eb8c56a859c4a3;hp=5593224b3f0b8bf4dae164c5ebdbfd4051edf087;hb=ab12fea9d01b3b9bc53081ae4ccc046243f1cb9f;hpb=666a29207bb781f47ec85f6a3c3cdeb554b30c21 diff --git a/mutt.h b/mutt.h index 5593224..2ef4a1b 100644 --- a/mutt.h +++ b/mutt.h @@ -41,8 +41,12 @@ #include #include -#include "rfc822.h" -#include "hash.h" +#include +#include +#include + +#include + #include "charset.h" #include "lib/rx.h" @@ -64,56 +68,6 @@ #define INITVAL(x) #endif -/* flags for mutt_copy_header() */ -#define CH_UPDATE 1 /* update the status and x-status fields? */ -#define CH_WEED (1<<1) /* weed the headers? */ -#define CH_DECODE (1<<2) /* do RFC1522 decoding? */ -#define CH_XMIT (1<<3) /* transmitting this message? */ -#define CH_FROM (1<<4) /* retain the "From " message separator? */ -#define CH_PREFIX (1<<5) /* use Prefix string? */ -#define CH_NOSTATUS (1<<6) /* supress the status and x-status fields */ -#define CH_REORDER (1<<7) /* Re-order output of headers */ -#define CH_NONEWLINE (1<<8) /* don't output terminating newline */ -#define CH_MIME (1<<9) /* ignore MIME fields */ -#define CH_UPDATE_LEN (1<<10) /* update Lines: and Content-Length: */ -#define CH_TXTPLAIN (1<<11) /* generate text/plain MIME headers */ -#define CH_NOLEN (1<<12) /* don't write Content-Length: and Lines: */ -#define CH_WEED_DELIVERED (1<<13) /* weed eventual Delivered-To headers */ -#define CH_FORCE_FROM (1<<14) /* give CH_FROM precedence over CH_WEED? */ -#define CH_NOQFROM (1<<15) /* give CH_FROM precedence over CH_WEED? */ -#define CH_UPDATE_IRT (1<<16) /* update In-Reply-To: */ -#define CH_UPDATE_REFS (1<<17) /* update References: */ - -/* flags for mutt_enter_string() */ -#define M_ALIAS 1 /* do alias "completion" by calling up the alias-menu */ -#define M_FILE (1<<1) /* do file completion */ -#define M_EFILE (1<<2) /* do file completion, plus incoming folders */ -#define M_CMD (1<<3) /* do completion on previous word */ -#define M_PASS (1<<4) /* password mode (no echo) */ -#define M_CLEAR (1<<5) /* clear input if printable character is pressed */ -#define M_COMMAND (1<<6) /* do command completion */ -#define M_PATTERN (1<<7) /* pattern mode - only used for history classes */ -#define M_LASTFOLDER (1<<8) /* last-folder mode - hack hack hack */ - -/* flags for mutt_get_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 */ - -/* flags for km_dokey() */ -#define M_KM_UNBUFFERED 1 /* don't read from the key buffer */ - -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 */ @@ -200,7 +154,6 @@ enum { M_LIMIT, M_EXPIRED, M_SUPERSEDED, - M_REALNAME, /* actions for mutt_pattern_comp/mutt_pattern_exec */ M_AND, @@ -226,6 +179,7 @@ enum { M_REFERENCE, M_RECIPIENT, M_LIST, + M_SUBSCRIBED_LIST, M_PERSONAL_RECIP, M_PERSONAL_FROM, M_ADDRESS, @@ -234,9 +188,12 @@ enum { M_CRYPT_ENCRYPT, M_PGP_KEY, M_XLABEL, + M_MIMEATTACH, #ifdef USE_NNTP M_NEWSGROUPS, #endif + M_REALNAME, + M_MULTIPART, /* Options for Mailcap lookup */ M_EDIT, @@ -266,6 +223,7 @@ enum { /* quad-option vars */ enum { OPT_ABORT, + OPT_ATTACH, OPT_BOUNCE, OPT_COPY, OPT_DELETE, @@ -347,7 +305,9 @@ enum { OPTCOLLAPSEUNREAD, OPTCONFIRMAPPEND, OPTCONFIRMCREATE, + OPTCOUNTATTACH, OPTDELETEUNTAG, + OPTDELSP, OPTDIGESTCOLLAPSE, OPTDUPTHREADS, OPTEDITHDRS, @@ -361,7 +321,7 @@ enum { OPTFORCENAME, OPTFORWDECODE, OPTFORWQUOTE, -#if USE_HCACHE +#ifdef USE_HCACHE OPTHCACHEVERIFY, #if HAVE_QDBM OPTHCACHECOMPRESS, @@ -378,6 +338,7 @@ enum { OPTHIDETOPMISSING, OPTIGNORELISTREPLYTO, #ifdef USE_IMAP + OPTIMAPCHECKSUBSCRIBED, OPTIMAPLSUB, OPTIMAPPASSIVE, OPTIMAPPEEK, @@ -465,6 +426,7 @@ enum { OPTWRAPSEARCH, OPTWRITEBCC, /* write out a bcc header? */ OPTXMAILER, + OPTXMAILTO, /* 1 if $edit_header is forcebly set */ OPTXTERMSETTITLES, OPTCRYPTUSEGPGME, @@ -558,11 +520,6 @@ enum { #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; @@ -571,16 +528,10 @@ typedef struct spam_list_t { } 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 **); +#define mutt_new_spam_list() p_new(SPAM_LIST, 1) 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); +int mutt_matches_ignore (const char *, LIST *); void mutt_init (int, LIST *); @@ -615,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 */ @@ -641,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 */ @@ -668,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. */ @@ -705,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; @@ -712,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 */ @@ -744,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? */ @@ -755,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 */ @@ -771,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 @@ -805,7 +758,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 @@ -813,12 +766,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; @@ -870,57 +825,18 @@ typedef struct { unsigned int counting:1; /* do we just want to cound? */ } CONTEXT; -typedef struct attachptr { - BODY *content; - int parent_type; - char *tree; - int level; - int num; - unsigned int unowned:1; /* don't unlink on detach */ -} ATTACHPTR; - +/* for attachment counter */ typedef struct { - FILE *fpin; - FILE *fpout; - char *prefix; - int flags; -} STATE; + char *major; + int major_int; + const char *minor; + regex_t minor_rx; +} ATTACH_MATCH; -/* used by enter.c */ +/* 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 */ -typedef struct { - wchar_t *wbuf; - size_t wbuflen; - size_t lastchar; - size_t curpos; - size_t begin; - int tabs; -} ENTER_STATE; - -/* flags for the STATE struct */ -#define M_DISPLAY (1<<0) /* output is displayed to the user */ -#define M_VERIFY (1<<1) /* perform signature verification */ -#define M_PENDINGPREFIX (1<<2) /* prefix to write, but character must follow */ -#define M_WEED (1<<3) /* weed headers even when not in display mode */ -#define M_CHARCONV (1<<4) /* Do character set conversions */ -#define M_PRINTING (1<<5) /* are we printing? - M_DISPLAY "light" */ -#define M_REPLYING (1<<6) /* are we replying? */ -#define M_FIRSTDONE (1<<7) /* the first attachment has been done */ - -#define state_set_prefix(s) ((s)->flags |= M_PENDINGPREFIX) -#define state_reset_prefix(s) ((s)->flags &= ~M_PENDINGPREFIX) -#define state_puts(x,y) fputs(x,(y)->fpout) -#define state_putc(x,y) fputc(x,(y)->fpout) - -void state_mark_attach (STATE *); -void state_attach_puts (const char *, STATE *); -void state_prefix_putc (char, STATE *); -int state_printf (STATE *, const char *, ...); - -#include "ascii.h" -#include "alias.h" -#include "addrbook.h" -#include "buffer.h" #include "protos.h" #include "lib.h" #include "globals.h"