+
/*
* Copyright (C) 1996-2002 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 2004 g10 Code GmbH
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#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_CRYPTHOOK (1<<8)
#define M_ACCOUNTHOOK (1<<9)
#define M_REPLYHOOK (1<<10)
+#define M_SEND2HOOK (1<<11)
+
+#ifdef USE_COMPRESSED
+#define M_OPENHOOK (1<<12)
+#define M_APPENDHOOK (1<<13)
+#define M_CLOSEHOOK (1<<14)
+#endif
/* tree characters for linearize_tree and print_enriched_string */
#define M_TREE_LLCORNER 1
M_DATE,
M_DATE_RECEIVED,
M_DUPLICATED,
+ M_UNREFERENCED,
M_ID,
M_BODY,
M_HEADER,
+ M_HORMEL,
M_WHOLE_MSG,
M_SENDER,
M_MESSAGE,
OPT_DELETE,
OPT_FORWEDIT,
OPT_INCLUDE,
+#ifdef USE_IMAP
+ OPT_IMAPRECONNECT,
+#endif
OPT_MFUPTO,
OPT_MIMEFWD,
OPT_MIMEFWDREST,
OPT_MOVE,
- OPT_PGPTRADITIONAL, /* create old-style PGP messages */
+ OPT_PGPMIMEAUTO, /* ask to revert to PGP/MIME when inline fails */
#ifdef USE_POP
OPT_POPDELETE,
OPT_POPRECONNECT,
OPT_QUIT,
OPT_REPLYTO,
OPT_RECALL,
-#ifdef USE_SSL
+#if defined(USE_SSL) || defined(USE_GNUTLS)
OPT_SSLSTARTTLS,
#endif
OPT_SUBJECT,
#define M_SEL_MULTI (1<<1)
#define M_SEL_FOLDER (1<<2)
+/* flags for parse_spam_list */
+#define M_SPAM 1
+#define M_NOSPAM 2
/* boolean vars */
enum
OPTFORCENAME,
OPTFORWDECODE,
OPTFORWQUOTE,
+#if USE_HCACHE
+ OPTHCACHEVERIFY,
+#endif
OPTHDRS,
OPTHEADER,
OPTHELP,
OPTHIDDENHOST,
OPTHIDELIMITED,
OPTHIDEMISSING,
+ OPTHIDETHREADSUBJECT,
OPTHIDETOPLIMITED,
OPTHIDETOPMISSING,
OPTIGNORELISTREPLYTO,
OPTIMAPPASSIVE,
OPTIMAPPEEK,
OPTIMAPSERVERNOISE,
-# ifdef USE_SSL
+# if defined(USE_SSL) || defined(USE_GNUTLS)
OPTIMAPFORCESSL,
# endif
#endif
-#if defined(USE_SSL) || defined(USE_NSS)
+#if defined(USE_SSL) || defined(USE_NSS) || defined(USE_GNUTLS)
+# ifndef USE_GNUTLS
OPTSSLV2,
+# endif
OPTSSLV3,
OPTTLSV1,
+# ifndef USE_GNUTLS
OPTSSLSYSTEMCERTS,
+# endif
#endif
OPTIMPLICITAUTOVIEW,
+ OPTINCLUDEONLYFIRST,
OPTKEEPFLAGGED,
OPTMAILCAPSANITIZE,
OPTMAILDIRTRASH,
OPTSIGDASHES,
OPTSIGONTOP,
OPTSORTRE,
+ OPTSPAMSEP,
OPTSTATUSONTOP,
OPTSTRICTTHREADS,
OPTSUSPEND,
OPTXMAILER,
OPTXTERMSETTITLES,
+ OPTCRYPTUSEGPGME,
+
/* PGP options */
OPTCRYPTAUTOSIGN,
OPTPGPIGNORESUB,
OPTPGPCHECKEXIT,
OPTPGPLONGIDS,
- OPTPGPAUTOTRAD,
#if 0
OPTPGPENCRYPTSELF,
#endif
OPTPGPSTRICTENC,
OPTFORWDECRYPT,
OPTPGPSHOWUNUSABLE,
+ OPTPGPAUTOINLINE,
+ OPTPGPREPLYINLINE,
/* news options */
struct rx_list_t *next;
} RX_LIST;
+typedef struct spam_list_t
+{
+ REGEXP *rx;
+ int nmatch;
+ char *template;
+ struct spam_list_t *next;
+} SPAM_LIST;
+
+
#define mutt_new_list() safe_calloc (1, sizeof (LIST))
+#define mutt_new_spam_list() safe_calloc (1, sizeof (SPAM_LIST))
#define mutt_new_rx_list() safe_calloc (1, sizeof (RX_LIST))
void mutt_free_list (LIST **);
void mutt_free_rx_list (RX_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 *);
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 *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 */
/* send mode: don't adjust the character
* set when in send-mode.
*/
+ unsigned int is_signed_data : 1; /* A lot of MUAs don't indicate
+ S/MIME signed-data correctly,
+ e.g. they use foo.p7m even for
+ the name of signed data. This
+ flag is used to keep track of
+ the actual message type. It
+ gets set during the verification
+ (which is done if the encryption
+ try failed) and check by the
+ function to figure the type of
+ the message. */
unsigned int goodsig : 1; /* good cryptographic signature */
+ unsigned int warnsig : 1; /* maybe good signature */
unsigned int badsig : 1; /* bad cryptographic signature (needed to check encrypted s/mime-signatures) */
unsigned int collapsed : 1; /* used by recvattach */
typedef struct header
{
- unsigned int security : 9; /* bit 0-6: flags, bit 7,8: application.
+ 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 subject_changed : 1; /* used for threading */
unsigned int threaded : 1; /* used for threading */
unsigned int display_subject : 1; /* used for threading */
+ unsigned int irt_changed : 1; /* In-Reply-To changed to link/break threads */
+ unsigned int refs_changed : 1; /* References changed to break thread */
unsigned int recip_valid : 1; /* is_recipient is valid */
unsigned int active : 1; /* message is not to be removed */
unsigned int trash : 1; /* message is marked as trashed on disk.
char *tree; /* character string to print thread tree */
struct thread *thread;
+#ifdef IMAP_EDIT_THREADS
+ ENVELOPE *new_env; /* envelope information for rethreading */
+#endif
+
#ifdef MIXMASTER
LIST *chain;
#endif
char *pattern; /* limit pattern string */
pattern_t *limit_pattern; /* compiled limit pattern */
HEADER **hdrs;
+ HEADER *last_tag; /* last tagged msg. used to link threads */
THREAD *tree; /* top of thread tree */
HASH *id_hash; /* hash table by msg id */
HASH *subj_hash; /* hash table by subject */
short magic; /* mailbox type */
+#ifdef USE_COMPRESSED
+ void *compressinfo; /* compressed mbox module private data */
+ char *realpath; /* path to compressed mailbox */
+#endif /* USE_COMPRESSED */
+
unsigned int locked : 1; /* is the mailbox locked? */
unsigned int changed : 1; /* mailbox has been modified */
unsigned int readonly : 1; /* don't allow changes to the mailbox */
#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)