summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRocco Rutte <pdmef@gmx.net>2009-03-15 12:40:14 +0100
committerRocco Rutte <pdmef@gmx.net>2009-03-15 12:40:14 +0100
commit06d425398e3ef6fd3b152d95f6def1b4b14ff43e (patch)
tree4d8015427f4b02571c253896b3ce4bb0eb9b4efe
parent09022bca8254bf1c582aea8996800dac97112599 (diff)
parent10808048cb527f52efe90eddcd920003c17aee90 (diff)
Merge
-rw-r--r--ChangeLog46
-rw-r--r--doc/manual.xml.head2
-rw-r--r--hash.c38
-rw-r--r--hash.h11
-rw-r--r--init.c4
-rw-r--r--init.h525
-rw-r--r--mbyte.h6
-rw-r--r--mh.c12
-rw-r--r--mutt.h6
-rw-r--r--regex.c13
-rw-r--r--thread.c12
11 files changed, 388 insertions, 287 deletions
diff --git a/ChangeLog b/ChangeLog
index 94a76774..1d89f175 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,49 @@
+2009-03-09 12:04 +0100 Vincent Lefevre <vincent@vinc17.org> (4ce562b7f5d7)
+
+ * mbyte.h: Unbreak compilation on OS X with --with-regex/--without-wc-
+ funcs. Closes #3149.
+
+2009-03-09 11:58 +0100 Rocco Rutte <pdmef@gmx.net> (f3a33b77dc90)
+
+ * ChangeLog, mutt.h, regex.c: Unbreak compilation with --without-wc-
+ funcs on OS X 10.5.*, see #3149.
+
+2009-03-09 11:49 +0100 Rocco Rutte <pdmef@gmx.net> (bcf1e9692caf)
+
+ * init.h: Fix 11cd72da743a
+
+2009-03-09 11:30 +0100 Rocco Rutte <pdmef@gmx.net> (11cd72da743a)
+
+ * ChangeLog, init.h: Sort SSL-related variables, see #3191.
+
+2009-03-09 11:11 +0100 Rocco Rutte <pdmef@gmx.net> (a96d427b203b)
+
+ * hash.c, hash.h, init.c, mh.c, thread.c: Restore $reverse_alias
+ feature by using case-insensitive hash keys
+
+ The fix is implemented as callbacks in the hash table so we can
+ avoid working with copies of the mailbox keys but work on the
+ originals instead and don't pollute the code with lower-case
+ conversions all over the place.
+
+ While I'm at it, turn int hashes into unsigned values since the hash
+ function returns unsigned values now, too.
+
+ Closes #3185.
+
+2009-03-07 13:49 +0100 Rocco Rutte <pdmef@gmx.net> (ff1906f70b1b)
+
+ * ChangeLog, init.h: Sort most variables (except crypto), see #3191.
+
+2009-03-07 12:26 +0100 Rocco Rutte <pdmef@gmx.net> (49d3d03d41c2)
+
+ * doc/manual.xml.head: Fix typo, see #2430.
+
+2009-02-20 22:14 +0100 Rocco Rutte <pdmef@gmx.net> (35fbea209c6e)
+
+ * ChangeLog, doc/manual.xml.head: Manual: verbosely document how the
+ initial folder is determined, see #3189.
+
2009-02-20 18:27 +0100 Rocco Rutte <pdmef@gmx.net> (3f57a654639d)
* doc/manual.xml.head: Document address normalization. Closes #2430.
diff --git a/doc/manual.xml.head b/doc/manual.xml.head
index 982f310a..6bddfb70 100644
--- a/doc/manual.xml.head
+++ b/doc/manual.xml.head
@@ -5178,7 +5178,7 @@ macro pager \cb |urlview\n
<title>Miscellany</title>
<para>
-This section documents various feature that fit nowhere else.
+This section documents various features that fit nowhere else.
</para>
<variablelist>
diff --git a/hash.c b/hash.c
index 7e4e19fd..08f71717 100644
--- a/hash.c
+++ b/hash.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 1996-2009 Michael R. Elkins <me@mutt.org>
*
* 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
@@ -23,12 +23,13 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
+#include <ctype.h>
#include "mutt.h"
#define SOMEPRIME 149711
-unsigned int hash_string (const unsigned char *s, unsigned int n)
+static unsigned int hash_string (const unsigned char *s, unsigned int n)
{
unsigned int h = 0;
@@ -39,13 +40,34 @@ unsigned int hash_string (const unsigned char *s, unsigned int n)
return h;
}
-HASH *hash_create (int nelem)
+static unsigned int hash_case_string (const unsigned char *s, unsigned int n)
+{
+ unsigned int h = 0;
+
+ while (*s)
+ h += (h << 7) + tolower (*s++);
+ h = (h * SOMEPRIME) % n;
+
+ return h;
+}
+
+HASH *hash_create (int nelem, int lower)
{
HASH *table = safe_malloc (sizeof (HASH));
if (nelem == 0)
nelem = 2;
table->nelem = nelem;
table->table = safe_calloc (nelem, sizeof (struct hash_elem *));
+ if (lower)
+ {
+ table->hash_string = hash_case_string;
+ table->cmp_string = mutt_strcasecmp;
+ }
+ else
+ {
+ table->hash_string = hash_string;
+ table->cmp_string = mutt_strcmp;
+ }
return table;
}
@@ -57,10 +79,10 @@ HASH *hash_create (int nelem)
int hash_insert (HASH * table, const char *key, void *data, int allow_dup)
{
struct hash_elem *ptr;
- int h;
+ unsigned int h;
ptr = (struct hash_elem *) safe_malloc (sizeof (struct hash_elem));
- h = hash_string ((unsigned char *) key, table->nelem);
+ h = table->hash_string ((unsigned char *) key, table->nelem);
ptr->key = key;
ptr->data = data;
@@ -76,7 +98,7 @@ int hash_insert (HASH * table, const char *key, void *data, int allow_dup)
for (tmp = table->table[h], last = NULL; tmp; last = tmp, tmp = tmp->next)
{
- r = mutt_strcmp (tmp->key, key);
+ r = table->cmp_string (tmp->key, key);
if (r == 0)
{
FREE (&ptr);
@@ -99,7 +121,7 @@ void *hash_find_hash (const HASH * table, int hash, const char *key)
struct hash_elem *ptr = table->table[hash];
for (; ptr; ptr = ptr->next)
{
- if (mutt_strcmp (key, ptr->key) == 0)
+ if (table->cmp_string (key, ptr->key) == 0)
return (ptr->data);
}
return NULL;
@@ -114,7 +136,7 @@ void hash_delete_hash (HASH * table, int hash, const char *key, const void *data
while (ptr)
{
if ((data == ptr->data || !data)
- && mutt_strcmp (ptr->key, key) == 0)
+ && table->cmp_string (ptr->key, key) == 0)
{
*last = ptr->next;
if (destroy)
diff --git a/hash.h b/hash.h
index 5338aca4..fb77d0c1 100644
--- a/hash.h
+++ b/hash.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 1996-2000 Michael R. Elkins <me@mutt.org>
+ * Copyright (C) 1996-2009 Michael R. Elkins <me@mutt.org>
*
* 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
@@ -30,15 +30,16 @@ typedef struct
{
int nelem;
struct hash_elem **table;
+ unsigned int (*hash_string)(const unsigned char *, unsigned int);
+ int (*cmp_string)(const char *, const char *);
}
HASH;
-#define hash_find(table, key) hash_find_hash(table, hash_string ((unsigned char *)key, table->nelem), key)
+#define hash_find(table, key) hash_find_hash(table, table->hash_string ((unsigned char *)key, table->nelem), key)
-#define hash_delete(table,key,data,destroy) hash_delete_hash(table, hash_string ((unsigned char *)key, table->nelem), key, data, destroy)
+#define hash_delete(table,key,data,destroy) hash_delete_hash(table, table->hash_string ((unsigned char *)key, table->nelem), key, data, destroy)
-HASH *hash_create (int nelem);
-unsigned int hash_string (const unsigned char *s, unsigned int n);
+HASH *hash_create (int nelem, int lower);
int hash_insert (HASH * table, const char *key, void *data, int allow_dup);
void *hash_find_hash (const HASH * table, int hash, const char *key);
void hash_delete_hash (HASH * table, int hash, const char *key, const void *data,
diff --git a/init.c b/init.c
index 9b98d770..199a7f0b 100644
--- a/init.c
+++ b/init.c
@@ -2885,8 +2885,8 @@ void mutt_init (int skip_sys_rc, LIST *commands)
err.data = error;
err.dsize = sizeof (error);
- Groups = hash_create (1031);
- ReverseAlias = hash_create (1031);
+ Groups = hash_create (1031, 0);
+ ReverseAlias = hash_create (1031, 1);
mutt_menu_init ();
diff --git a/init.h b/init.h
index fcb130cb..ed9ca113 100644
--- a/init.h
+++ b/init.h
@@ -260,6 +260,14 @@ struct option_t MuttVars[] = {
** in a reply. For a full listing of defined \fCprintf(3)\fP-like sequences see
** the section on $$index_format.
*/
+ { "auto_tag", DT_BOOL, R_NONE, OPTAUTOTAG, 0 },
+ /*
+ ** .pp
+ ** When \fIset\fP, functions in the \fIindex\fP menu which affect a message
+ ** will be applied to all tagged messages (if there are any). When
+ ** unset, you must first use the \fC<tag-prefix>\fP function (bound to ``;''
+ ** by default) to make the next function apply to all tagged messages.
+ */
{ "autoedit", DT_BOOL, R_NONE, OPTAUTOEDIT, 0 },
/*
** .pp
@@ -271,14 +279,6 @@ struct option_t MuttVars[] = {
** .pp
** Also see $$fast_reply.
*/
- { "auto_tag", DT_BOOL, R_NONE, OPTAUTOTAG, 0 },
- /*
- ** .pp
- ** When \fIset\fP, functions in the \fIindex\fP menu which affect a message
- ** will be applied to all tagged messages (if there are any). When
- ** unset, you must first use the \fC<tag-prefix>\fP function (bound to ``;''
- ** by default) to make the next function apply to all tagged messages.
- */
{ "beep", DT_BOOL, R_NONE, OPTBEEP, 1 },
/*
** .pp
@@ -314,21 +314,27 @@ struct option_t MuttVars[] = {
** follow these menus. The option is \fIunset\fP by default because many
** visual terminals don't permit making the cursor invisible.
*/
- { "check_mbox_size", DT_BOOL, R_NONE, OPTCHECKMBOXSIZE, 0 },
+#if defined(USE_SSL)
+ { "certificate_file", DT_PATH, R_NONE, UL &SslCertFile, UL "~/.mutt_certificates" },
/*
** .pp
- ** When this variable is \fIset\fP, mutt will use file size attribute instead of
- ** access time when checking for new mail in mbox and mmdf folders.
+ ** This variable specifies the file where the certificates you trust
+ ** are saved. When an unknown certificate is encountered, you are asked
+ ** if you accept it or not. If you accept it, the certificate can also
+ ** be saved in this file and further connections are automatically
+ ** accepted.
** .pp
- ** This variable is \fIunset\fP by default and should only be enabled when
- ** new mail detection for these folder types is unreliable or doesn't work.
+ ** You can also manually add CA certificates in this file. Any server
+ ** certificate that is signed with one of these CA certificates is
+ ** also automatically accepted.
** .pp
- ** Note that enabling this variable should happen before any ``$mailboxes''
- ** directives occur in configuration files regarding mbox or mmdf folders
- ** because mutt needs to determine the initial new mail status of such a
- ** mailbox by performing a fast mailbox scan when it is defined.
- ** Afterwards the new mail status is tracked by file size changes.
+ ** Example:
+ ** .ts
+ ** set certificate_file=~/.mutt/certificates
+ ** .te
+ **
*/
+#endif
{ "charset", DT_STR, R_NONE, UL &Charset, UL 0 },
/*
** .pp
@@ -341,6 +347,21 @@ struct option_t MuttVars[] = {
** \fBNote:\fP It should only be set in case Mutt isn't abled to determine the
** character set used correctly.
*/
+ { "check_mbox_size", DT_BOOL, R_NONE, OPTCHECKMBOXSIZE, 0 },
+ /*
+ ** .pp
+ ** When this variable is \fIset\fP, mutt will use file size attribute instead of
+ ** access time when checking for new mail in mbox and mmdf folders.
+ ** .pp
+ ** This variable is \fIunset\fP by default and should only be enabled when
+ ** new mail detection for these folder types is unreliable or doesn't work.
+ ** .pp
+ ** Note that enabling this variable should happen before any ``$mailboxes''
+ ** directives occur in configuration files regarding mbox or mmdf folders
+ ** because mutt needs to determine the initial new mail status of such a
+ ** mailbox by performing a fast mailbox scan when it is defined.
+ ** Afterwards the new mail status is tracked by file size changes.
+ */
{ "check_new", DT_BOOL, R_NONE, OPTCHECKNEW, 1 },
/*
** .pp
@@ -360,12 +381,6 @@ struct option_t MuttVars[] = {
** When \fIunset\fP, Mutt will not collapse a thread if it contains any
** unread messages.
*/
- { "uncollapse_jump", DT_BOOL, R_NONE, OPTUNCOLLAPSEJUMP, 0 },
- /*
- ** .pp
- ** When \fIset\fP, Mutt will jump to the next unread message, if any,
- ** when the current thread is \fIun\fPcollapsed.
- */
{ "compose_format", DT_STR, R_BOTH, UL &ComposeFormat, UL "-- Mutt: Compose [Approx. msg size: %l Atts: %a]%>-" },
/*
** .pp
@@ -600,6 +615,14 @@ struct option_t MuttVars[] = {
** agents tend to do with messages (in order to prevent tools from
** misinterpreting the line as a mbox message separator).
*/
+#if defined(USE_SSL_OPENSSL)
+ { "entropy_file", DT_PATH, R_NONE, UL &SslEntropyFile, 0 },
+ /*
+ ** .pp
+ ** The file which includes random data that is used to initialize SSL
+ ** library functions.
+ */
+#endif
{ "envelope_from_address", DT_ADDR, R_NONE, UL &EnvFrom, 0 },
/*
** .pp
@@ -778,6 +801,42 @@ struct option_t MuttVars[] = {
** of the message you are replying to into the edit buffer.
** The $$weed setting applies.
*/
+#ifdef USE_HCACHE
+ { "header_cache", DT_PATH, R_NONE, UL &HeaderCache, 0 },
+ /*
+ ** .pp
+ ** This variable points to the header cache database.
+ ** If pointing to a directory Mutt will contain a header cache
+ ** database file per folder, if pointing to a file that file will
+ ** be a single global header cache. By default it is \fIunset\fP so no header
+ ** caching will be used.
+ ** .pp
+ ** Header caching can greatly improve speed when opening POP, IMAP
+ ** MH or Maildir folders, see ``$caching'' for details.
+ */
+#if defined(HAVE_QDBM) || defined(HAVE_TC)
+ { "header_cache_compress", DT_BOOL, R_NONE, OPTHCACHECOMPRESS, 1 },
+ /*
+ ** .pp
+ ** When mutt is compiled with qdbm or tokyocabinet as header cache backend,
+ ** this option determines whether the database will be compressed.
+ ** Compression results in database files roughly being one fifth
+ ** of the usual diskspace, but the uncompression can result in a
+ ** slower opening of cached folder(s) which in general is still
+ ** much faster than opening non header cached folders.
+ */
+#endif /* HAVE_QDBM */
+#if defined(HAVE_GDBM) || defined(HAVE_DB4)
+ { "header_cache_pagesize", DT_STR, R_NONE, UL &HeaderCachePageSize, UL "16384" },
+ /*
+ ** .pp
+ ** When mutt is compiled with either gdbm or bdb4 as the header cache backend,
+ ** this option changes the database page size. Too large or too small
+ ** values can waste space, memory, or CPU time. The default should be more
+ ** or less optimal for most use cases.
+ */
+#endif /* HAVE_GDBM || HAVE_DB4 */
+#endif /* USE_HCACHE */
{ "help", DT_BOOL, R_BOTH, OPTHELP, 1 },
/*
** .pp
@@ -1186,18 +1245,6 @@ struct option_t MuttVars[] = {
** DOING!\fP
*/
#ifdef USE_HCACHE
- { "header_cache", DT_PATH, R_NONE, UL &HeaderCache, 0 },
- /*
- ** .pp
- ** This variable points to the header cache database.
- ** If pointing to a directory Mutt will contain a header cache
- ** database file per folder, if pointing to a file that file will
- ** be a single global header cache. By default it is \fIunset\fP so no header
- ** caching will be used.
- ** .pp
- ** Header caching can greatly improve speed when opening POP, IMAP
- ** MH or Maildir folders, see ``$caching'' for details.
- */
{ "maildir_header_cache_verify", DT_BOOL, R_NONE, OPTHCACHEVERIFY, 1 },
/*
** .pp
@@ -1206,29 +1253,7 @@ struct option_t MuttVars[] = {
** message every time the folder is opened (which can be very slow for NFS
** folders).
*/
-#if defined(HAVE_GDBM) || defined(HAVE_DB4)
- { "header_cache_pagesize", DT_STR, R_NONE, UL &HeaderCachePageSize, UL "16384" },
- /*
- ** .pp
- ** When mutt is compiled with either gdbm or bdb4 as the header cache backend,
- ** this option changes the database page size. Too large or too small
- ** values can waste space, memory, or CPU time. The default should be more
- ** or less optimal for most use cases.
- */
-#endif /* HAVE_GDBM || HAVE_DB4 */
-#if defined(HAVE_QDBM) || defined(HAVE_TC)
- { "header_cache_compress", DT_BOOL, R_NONE, OPTHCACHECOMPRESS, 1 },
- /*
- ** .pp
- ** When mutt is compiled with qdbm or tokyocabinet as header cache backend,
- ** this option determines whether the database will be compressed.
- ** Compression results in database files roughly being one fifth
- ** of the usual diskspace, but the uncompression can result in a
- ** slower opening of cached folder(s) which in general is still
- ** much faster than opening non header cached folders.
- */
-#endif /* HAVE_QDBM */
-#endif /* USE_HCACHE */
+#endif
{ "maildir_trash", DT_BOOL, R_NONE, OPTMAILDIRTRASH, 0 },
/*
** .pp
@@ -1276,12 +1301,6 @@ struct option_t MuttVars[] = {
** ``mbox'', ``MMDF'', ``MH'' and ``Maildir''. This is overriden by the
** \fC-m\fP command-line option.
*/
- { "metoo", DT_BOOL, R_NONE, OPTMETOO, 0 },
- /*
- ** .pp
- ** If \fIunset\fP, Mutt will remove your address (see the ``$alternates''
- ** command) from the list of recipients when replying to a message.
- */
{ "menu_context", DT_NUM, R_NONE, UL &MenuContext, 0 },
/*
** .pp
@@ -1303,6 +1322,39 @@ struct option_t MuttVars[] = {
** is cleared and the next or previous page of the menu is displayed
** (useful for slow links to avoid many redraws).
*/
+#if defined(USE_IMAP) || defined(USE_POP)
+ { "message_cache_clean", DT_BOOL, R_NONE, OPTMESSAGECACHECLEAN, 0 },
+ /*
+ ** .pp
+ ** If \fIset\fP, mutt will clean out obsolete entries from the message cache when
+ ** the mailbox is synchronized. You probably only want to set it
+ ** every once in a while, since it can be a little slow
+ ** (especially for large folders).
+ */
+ { "message_cachedir", DT_PATH, R_NONE, UL &MessageCachedir, 0 },
+ /*
+ ** .pp
+ ** Set this to a directory and mutt will cache copies of messages from
+ ** your IMAP and POP servers here. You are free to remove entries at any
+ ** time.
+ ** .pp
+ ** When setting this variable to a directory, mutt needs to fetch every
+ ** remote message only once and can perform regular expression searches
+ ** as fast as for local folders.
+ ** .pp
+ ** Also see the $$message_cache_clean variable.
+ */
+#endif
+ { "message_format", DT_STR, R_NONE, UL &MsgFmt, UL "%s" },
+ /*
+ ** .pp
+ ** This is the string displayed in the ``attachment'' menu for
+ ** attachments of type \fCmessage/rfc822\fP. For a full listing of defined
+ ** \fCprintf(3)\fP-like sequences see the section on $$index_format.
+ */
+ { "msg_format", DT_SYN, R_NONE, UL "message_format", 0 },
+ /*
+ */
{ "meta_key", DT_BOOL, R_NONE, OPTMETAKEY, 0 },
/*
** .pp
@@ -1314,6 +1366,12 @@ struct option_t MuttVars[] = {
** high bit from \fC0xf8\fP is \fC0x78\fP, which is the ASCII character
** ``x''.
*/
+ { "metoo", DT_BOOL, R_NONE, OPTMETOO, 0 },
+ /*
+ ** .pp
+ ** If \fIunset\fP, Mutt will remove your address (see the ``$alternates''
+ ** command) from the list of recipients when replying to a message.
+ */
{ "mh_purge", DT_BOOL, R_NONE, OPTMHPURGE, 0 },
/*
** .pp
@@ -1399,39 +1457,6 @@ struct option_t MuttVars[] = {
** from your spool mailbox to your $$mbox mailbox, or as a result of
** a ``$mbox-hook'' command.
*/
-#if defined(USE_IMAP) || defined(USE_POP)
- { "message_cachedir", DT_PATH, R_NONE, UL &MessageCachedir, 0 },
- /*
- ** .pp
- ** Set this to a directory and mutt will cache copies of messages from
- ** your IMAP and POP servers here. You are free to remove entries at any
- ** time.
- ** .pp
- ** When setting this variable to a directory, mutt needs to fetch every
- ** remote message only once and can perform regular expression searches
- ** as fast as for local folders.
- ** .pp
- ** Also see the $$message_cache_clean variable.
- */
- { "message_cache_clean", DT_BOOL, R_NONE, OPTMESSAGECACHECLEAN, 0 },
- /*
- ** .pp
- ** If \fIset\fP, mutt will clean out obsolete entries from the message cache when
- ** the mailbox is synchronized. You probably only want to set it
- ** every once in a while, since it can be a little slow
- ** (especially for large folders).
- */
-#endif
- { "message_format", DT_STR, R_NONE, UL &MsgFmt, UL "%s" },
- /*
- ** .pp
- ** This is the string displayed in the ``attachment'' menu for
- ** attachments of type \fCmessage/rfc822\fP. For a full listing of defined
- ** \fCprintf(3)\fP-like sequences see the section on $$index_format.
- */
- { "msg_format", DT_SYN, R_NONE, UL "message_format", 0 },
- /*
- */
{ "narrow_tree", DT_BOOL, R_TREE|R_INDEX, OPTNARROWTREE, 0 },
/*
** .pp
@@ -2123,118 +2148,20 @@ struct option_t MuttVars[] = {
** keyid (the hash-value that OpenSSL generates) to work properly
** (S/MIME only)
*/
-#if defined(USE_SSL)
- { "ssl_client_cert", DT_PATH, R_NONE, UL &SslClientCert, 0 },
- /*
- ** .pp
- ** The file containing a client certificate and its associated private
- ** key.
- */
- { "ssl_force_tls", DT_BOOL, R_NONE, OPTSSLFORCETLS, 0 },
- /*
- ** .pp
- ** If this variable is \fIset\fP, Mutt will require that all connections
- ** to remote servers be encrypted. Furthermore it will attempt to
- ** negotiate TLS even if the server does not advertise the capability,
- ** since it would otherwise have to abort the connection anyway. This
- ** option supersedes $$ssl_starttls.
- */
- { "ssl_starttls", DT_QUAD, R_NONE, OPT_SSLSTARTTLS, M_YES },
- /*
- ** .pp
- ** If \fIset\fP (the default), mutt will attempt to use \fCSTARTTLS\fP on servers
- ** advertising the capability. When \fIunset\fP, mutt will not attempt to
- ** use \fCSTARTTLS\fP regardless of the server's capabilities.
- */
- { "ssl_verify_dates", DT_BOOL, R_NONE, OPTSSLVERIFYDATES, 1 },
- /*
- ** .pp
- ** If \fIset\fP (the default), mutt will not automatically accept a server
- ** certificate that is either not yet valid or already expired. You should
- ** only unset this for particular known hosts, using the
- ** \fC$<account-hook>\fP function.
- */
- { "ssl_verify_host", DT_BOOL, R_NONE, OPTSSLVERIFYHOST, 1 },
- /*
- ** .pp
- ** If \fIset\fP (the default), mutt will not automatically accept a server
- ** certificate whose host name does not match the host used in your folder
- ** URL. You should only unset this for particular known hosts, using
- ** the \fC$<account-hook>\fP function.
- */
- { "certificate_file", DT_PATH, R_NONE, UL &SslCertFile, UL "~/.mutt_certificates" },
- /*
- ** .pp
- ** This variable specifies the file where the certificates you trust
- ** are saved. When an unknown certificate is encountered, you are asked
- ** if you accept it or not. If you accept it, the certificate can also
- ** be saved in this file and further connections are automatically
- ** accepted.
- ** .pp
- ** You can also manually add CA certificates in this file. Any server
- ** certificate that is signed with one of these CA certificates is
- ** also automatically accepted.
- ** .pp
- ** Example:
- ** .ts
- ** set certificate_file=~/.mutt/certificates
- ** .te
- */
-# ifdef USE_SSL_OPENSSL
- { "ssl_usesystemcerts", DT_BOOL, R_NONE, OPTSSLSYSTEMCERTS, 1 },
- /*
- ** .pp
- ** If set to \fIyes\fP, mutt will use CA certificates in the
- ** system-wide certificate store when checking if a server certificate
- ** is signed by a trusted CA.
- */
- { "entropy_file", DT_PATH, R_NONE, UL &SslEntropyFile, 0 },
- /*
- ** .pp
- ** The file which includes random data that is used to initialize SSL
- ** library functions.
- */
- { "ssl_use_sslv2", DT_BOOL, R_NONE, OPTSSLV2, 1 },
- /*
- ** .pp
- ** This variable specifies whether to attempt to use SSLv2 in the
- ** SSL authentication process.
- */
-# endif /* defined USE_SSL_OPENSSL */
- { "ssl_use_sslv3", DT_BOOL, R_NONE, OPTSSLV3, 1 },
- /*
- ** .pp
- ** This variable specifies whether to attempt to use SSLv3 in the
- ** SSL authentication process.
- */
- { "ssl_use_tlsv1", DT_BOOL, R_NONE, OPTTLSV1, 1 },
- /*
- ** .pp
- ** This variable specifies whether to attempt to use TLSv1 in the
- ** SSL authentication process.
- */
-# ifdef USE_SSL_GNUTLS
- { "ssl_min_dh_prime_bits", DT_NUM, R_NONE, UL &SslDHPrimeBits, 0 },
+ { "pipe_decode", DT_BOOL, R_NONE, OPTPIPEDECODE, 0 },
/*
** .pp
- ** This variable specifies the minimum acceptable prime size (in bits)
- ** for use in any Diffie-Hellman key exchange. A value of 0 will use
- ** the default from the GNUTLS library.
+ ** Used in connection with the \fC<pipe-message>\fP command. When \fIunset\fP,
+ ** Mutt will pipe the messages without any preprocessing. When \fIset\fP, Mutt
+ ** will weed headers and will attempt to decode the messages
+ ** first.
*/
- { "ssl_ca_certificates_file", DT_PATH, R_NONE, UL &SslCACertFile, 0 },
+ { "pipe_sep", DT_STR, R_NONE, UL &PipeSep, UL "\n" },
/*
** .pp
- ** This variable specifies a file containing trusted CA certificates.
- ** Any server certificate that is signed with one of these CA
- ** certificates is also automatically accepted.
- ** .pp
- ** Example:
- ** .ts
- ** set ssl_ca_certificates_file=/etc/ssl/certs/ca-certificates.crt
- ** .te
+ ** The separator to add between messages when piping a list of tagged
+ ** messages to an external Unix command.
*/
-# endif /* USE_SSL_GNUTLS */
-#endif /* defined(USE_SSL) */
{ "pipe_split", DT_BOOL, R_NONE, OPTPIPESPLIT, 0 },
/*
** .pp
@@ -2245,21 +2172,15 @@ struct option_t MuttVars[] = {
** In both cases the messages are piped in the current sorted order,
** and the $$pipe_sep separator is added after each message.
*/
- { "pipe_decode", DT_BOOL, R_NONE, OPTPIPEDECODE, 0 },
- /*
- ** .pp
- ** Used in connection with the \fC<pipe-message>\fP command. When \fIunset\fP,
- ** Mutt will pipe the messages without any preprocessing. When \fIset\fP, Mutt
- ** will weed headers and will attempt to decode the messages
- ** first.
- */
- { "pipe_sep", DT_STR, R_NONE, UL &PipeSep, UL "\n" },
+#ifdef USE_POP
+ { "pop_auth_try_all", DT_BOOL, R_NONE, OPTPOPAUTHTRYALL, 1 },
/*
** .pp
- ** The separator to add between messages when piping a list of tagged
- ** messages to an external Unix command.
+ ** If \fIset\fP, Mutt will try all available authentication methods.
+ ** When \fIunset\fP, Mutt will only fall back to other authentication
+ ** methods if the previous methods are unavailable. If a method is
+ ** available but authentication fails, Mutt will not connect to the POP server.
*/
-#ifdef USE_POP
{ "pop_authenticators", DT_STR, R_NONE, UL &PopAuthenticators, UL 0 },
/*
** .pp
@@ -2276,14 +2197,6 @@ struct option_t MuttVars[] = {
** set pop_authenticators="digest-md5:apop:user"
** .te
*/
- { "pop_auth_try_all", DT_BOOL, R_NONE, OPTPOPAUTHTRYALL, 1 },
- /*
- ** .pp
- ** If \fIset\fP, Mutt will try all available authentication methods.
- ** When \fIunset\fP, Mutt will only fall back to other authentication
- ** methods if the previous methods are unavailable. If a method is
- ** available but authentication fails, Mutt will not connect to the POP server.
- */
{ "pop_checkinterval", DT_NUM, R_NONE, UL &PopCheckTimeout, 60 },
/*
** .pp
@@ -2315,6 +2228,16 @@ struct option_t MuttVars[] = {
** for retrieving only unread messages from the POP server when using
** the \fC$<fetch-mail>\fP function.
*/
+ { "pop_pass", DT_STR, R_NONE, UL &PopPass, UL "" },
+ /*
+ ** .pp
+ ** Specifies the password for your POP account. If \fIunset\fP, Mutt will
+ ** prompt you for your password when you open a POP mailbox.
+ ** .pp
+ ** \fBWarning\fP: you should only use this option when you are on a
+ ** fairly secure machine, because the superuser can read your muttrc
+ ** even if you are the only one who can read the file.
+ */
{ "pop_reconnect", DT_QUAD, R_NONE, OPT_POPRECONNECT, M_ASKYES },
/*
** .pp
@@ -2328,16 +2251,6 @@ struct option_t MuttVars[] = {
** .pp
** This variable defaults to your user name on the local machine.
*/
- { "pop_pass", DT_STR, R_NONE, UL &PopPass, UL "" },
- /*
- ** .pp
- ** Specifies the password for your POP account. If \fIunset\fP, Mutt will
- ** prompt you for your password when you open a POP mailbox.
- ** .pp
- ** \fBWarning\fP: you should only use this option when you are on a
- ** fairly secure machine, because the superuser can read your muttrc
- ** even if you are the only one who can read the file.
- */
#endif /* USE_POP */
{ "post_indent_string",DT_STR, R_NONE, UL &PostIndentString, UL "" },
/*
@@ -2780,6 +2693,14 @@ struct option_t MuttVars[] = {
** replacing ``%s'' with the supplied string.
** For the default value, ``joe'' would be expanded to: ``~f joe | ~s joe''.
*/
+ { "sleep_time", DT_NUM, R_NONE, UL &SleepTime, 1 },
+ /*
+ ** .pp
+ ** Specifies time, in seconds, to pause while displaying certain informational
+ ** messages, while moving from folder to folder and after expunging
+ ** messages from the current folder. The default is to pause one second, so
+ ** a value of zero for this option suppresses the pause.
+ */
{ "smart_wrap", DT_BOOL, R_PAGER, OPTWRAP, 1 },
/*
** .pp
@@ -2796,14 +2717,6 @@ struct option_t MuttVars[] = {
** a line quoted text if it also matches $$smileys. This mostly
** happens at the beginning of a line.
*/
- { "sleep_time", DT_NUM, R_NONE, UL &SleepTime, 1 },
- /*
- ** .pp
- ** Specifies time, in seconds, to pause while displaying certain informational
- ** messages, while moving from folder to folder and after expunging
- ** messages from the current folder. The default is to pause one second, so
- ** a value of zero for this option suppresses the pause.
- */
#ifdef USE_SMTP
# ifdef USE_SASL
{ "smtp_authenticators", DT_STR, R_NONE, UL &SmtpAuthenticators, UL 0 },
@@ -2947,6 +2860,98 @@ struct option_t MuttVars[] = {
** initially set this variable to the value of the environment
** variable \fC$$$MAIL\fP or \fC$$$MAILDIR\fP if either is defined.
*/
+#if defined(USE_SSL)
+#ifdef USE_SSL_GNUTLS
+ { "ssl_ca_certificates_file", DT_PATH, R_NONE, UL &SslCACertFile, 0 },
+ /*
+ ** .pp
+ ** This variable specifies a file containing trusted CA certificates.
+ ** Any server certificate that is signed with one of these CA
+ ** certificates is also automatically accepted.
+ ** .pp
+ ** Example:
+ ** .ts
+ ** set ssl_ca_certificates_file=/etc/ssl/certs/ca-certificates.crt
+ ** .te
+ */
+#endif /* USE_SSL_GNUTLS */
+ { "ssl_client_cert", DT_PATH, R_NONE, UL &SslClientCert, 0 },
+ /*
+ ** .pp
+ ** The file containing a client certificate and its associated private
+ ** key.
+ */
+ { "ssl_force_tls", DT_BOOL, R_NONE, OPTSSLFORCETLS, 0 },
+ /*
+ ** .pp
+ ** If this variable is \fIset\fP, Mutt will require that all connections
+ ** to remote servers be encrypted. Furthermore it will attempt to
+ ** negotiate TLS even if the server does not advertise the capability,
+ ** since it would otherwise have to abort the connection anyway. This
+ ** option supersedes $$ssl_starttls.
+ */
+# ifdef USE_SSL_GNUTLS
+ { "ssl_min_dh_prime_bits", DT_NUM, R_NONE, UL &SslDHPrimeBits, 0 },
+ /*
+ ** .pp
+ ** This variable specifies the minimum acceptable prime size (in bits)
+ ** for use in any Diffie-Hellman key exchange. A value of 0 will use
+ ** the default from the GNUTLS library.
+ */
+# endif /* USE_SSL_GNUTLS */
+ { "ssl_starttls", DT_QUAD, R_NONE, OPT_SSLSTARTTLS, M_YES },
+ /*
+ ** .pp
+ ** If \fIset\fP (the default), mutt will attempt to use \fCSTARTTLS\fP on servers
+ ** advertising the capability. When \fIunset\fP, mutt will not attempt to
+ ** use \fCSTARTTLS\fP regardless of the server's capabilities.
+ */
+# ifdef USE_SSL_OPENSSL
+ { "ssl_use_sslv2", DT_BOOL, R_NONE, OPTSSLV2, 1 },
+ /*
+ ** .pp
+ ** This variable specifies whether to attempt to use SSLv2 in the
+ ** SSL authentication process.
+ */
+# endif /* defined USE_SSL_OPENSSL */
+ { "ssl_use_sslv3", DT_BOOL, R_NONE, OPTSSLV3, 1 },
+ /*
+ ** .pp
+ ** This variable specifies whether to attempt to use SSLv3 in the
+ ** SSL authentication process.
+ */
+ { "ssl_use_tlsv1", DT_BOOL, R_NONE, OPTTLSV1, 1 },
+ /*
+ ** .pp
+ ** This variable specifies whether to attempt to use TLSv1 in the
+ ** SSL authentication process.
+ */
+#ifdef USE_SSL_OPENSSL
+ { "ssl_usesystemcerts", DT_BOOL, R_NONE, OPTSSLSYSTEMCERTS, 1 },
+ /*
+ ** .pp
+ ** If set to \fIyes\fP, mutt will use CA certificates in the
+ ** system-wide certificate store when checking if a server certificate
+ ** is signed by a trusted CA.
+ */
+#endif
+ { "ssl_verify_dates", DT_BOOL, R_NONE, OPTSSLVERIFYDATES, 1 },
+ /*
+ ** .pp
+ ** If \fIset\fP (the default), mutt will not automatically accept a server
+ ** certificate that is either not yet valid or already expired. You should
+ ** only unset this for particular known hosts, using the
+ ** \fC$<account-hook>\fP function.
+ */
+ { "ssl_verify_host", DT_BOOL, R_NONE, OPTSSLVERIFYHOST, 1 },
+ /*
+ ** .pp
+ ** If \fIset\fP (the default), mutt will not automatically accept a server
+ ** certificate whose host name does not match the host used in your folder
+ ** URL. You should only unset this for particular known hosts, using
+ ** the \fC$<account-hook>\fP function.
+ */
+#endif /* defined(USE_SSL) */
{ "status_chars", DT_STR, R_BOTH, UL &StChars, UL "-*%A" },
/*
** .pp
@@ -3071,12 +3076,6 @@ struct option_t MuttVars[] = {
** .pp
** Note that $$indent_string is ignored when this option is \fIset\fP.
*/
- { "thread_received", DT_BOOL, R_RESORT|R_RESORT_INIT|R_INDEX, OPTTHREADRECEIVED, 0 },
- /*
- ** .pp
- ** When \fIset\fP, mutt uses the date received rather than the date sent
- ** to thread messages by subject.
- */
{ "thorough_search", DT_BOOL, R_NONE, OPTTHOROUGHSRC, 0 },
/*
** .pp
@@ -3091,6 +3090,12 @@ struct option_t MuttVars[] = {
** raw message received (for example quoted-printable encoded or with encoded
** headers) which may lead to incorrect search results.
*/
+ { "thread_received", DT_BOOL, R_RESORT|R_RESORT_INIT|R_INDEX, OPTTHREADRECEIVED, 0 },
+ /*
+ ** .pp
+ ** When \fIset\fP, mutt uses the date received rather than the date sent
+ ** to thread messages by subject.
+ */
{ "tilde", DT_BOOL, R_PAGER, OPTTILDE, 0 },
/*
** .pp</