2017-04-11 12:14 -0700  Kevin McCarthy  <kevin@8t8.us>  (b825cbcaf6b5)

	* compose.c: Fix memleak when attaching files.

2017-04-08 14:18 -0700  Kevin McCarthy  <kevin@8t8.us>  (a8b1017a4cc1)

	* imap/message.c: Silence imap progress messages for pipe-message.
	(see #3929)

	_mutt_pipe_message() calls endwin(), and then calls pipe_msg(). If
	an imap message body hasn't already been downloaded, this can end up
	calling imap_fetch_message().

	The progress messages in imap_fetch_message() were restoring curses,
	just after extract_url was running. This was leading to a condition
	where mutt curses didn't think the screen had changed after
	extract_url exited.

	There was already a check for isendwin() inside
	imap_fetch_message(), but it wasn't wrapped around the progressbar
	creation/usage. Add a check for those places too.

2017-03-27 11:39 -0700  Kevin McCarthy  <kevin@8t8.us>  (77032036c642)

	* init.c, init.h: Fix (un)sidebar_whitelist to expand paths.

	Thanks to Arturo for reporting the issue.

2017-03-26 12:27 -0700  Kevin McCarthy  <kevin@8t8.us>  (9da67ea88f25)

	* curs_lib.c: Fix mutt_refresh() pausing during macro events.

	Changeset a07e8215a0ef split input buffering into two pools.
	Unfortunately, the mutt_refresh() was not changed to check the
	correct buffer count, resulting in unnecessary refreshes during
	macros.

	The SSL interactive certificate prompts set OPTIGNOREMACROEVENTS and
	then put up a confirmation menu. Perhaps we've just been lucky, but
	it seems we should refresh the screen in those cases if we're in the
	middle of a macro. Add a check for this option in mutt_refresh()
	too.

2017-03-20 10:16 -0700  Kevin McCarthy  <kevin@8t8.us>  (7cefa378ab7e)

	* init.c: Fix setenv overwriting to not truncate the envlist. (see
	#3922)

	The refactor in 2b9c40f13e13 exposed a bug I hadn't noticed. The
	match loop performed a FREE() on the slot. Then, below, it was
	checking if (*envp) to see whether it was overwriting or creating a
	new slot. However, FREE() nulls out *envp. This would end up
	truncating the envlist just after the set slot!

	Move the free down, using a mutt_str_replace(), when overwriting the
	slot.

2017-03-18 14:39 -0700  Kevin McCarthy  <kevin@8t8.us>  (2b9c40f13e13)

	* init.c: Fix mutt_envlist_set() for the case that envlist is null.
	(see #3922)

2017-03-18 13:48 -0700  Kevin McCarthy  <kevin@8t8.us>  (37209157e33c)

	* filter.c, init.c, protos.h, system.c: Pass envlist to filter
	children too. (closes #3922)

	The new setenv patch neglected to pass the envlist for filters too.

	Unfortunately, the filter code was already set up to pass COLUMNS to
	children, so it needed to be changed to add this to the envlist
	instead.

	Factor out mutt_envlist_set() from the parse_setenv() function,
	which the filter code can then use to set COLUMNS after forking.

2017-03-05 15:24 -0800  Kevin McCarthy  <kevin@8t8.us>  (f0e3b2875065)

	* account.h: Increase ACCOUNT.pass field size. (closes #3921)

	#3921 reported his password token used for Google XOAUTH2 is size
	129. The ACCOUNT structure currently uses a size 128 buffer. Who
	knew a password field would ever be bigger than that?

	Since the ACCOUNT structure has no allocation/dellocation routines,
	the easiest fix is to increase the size. Bump the size up to 256.

2017-03-02 15:53 -0800  Matthias Andree  <matthias.andree@gmx.de>  (5fc3c0729a07)

	* mutt_ssl.c: SSL: Fix memory leak in subject alternative name code.
	(closes #3920)

2017-03-02 14:53 -0800  Kevin McCarthy  <kevin@8t8.us>  (e3e47b2f1370)

	* mbox.c: Prevent segv if open-appending to an mbox fails. (closes
	#3918)

	If mbox_open_mailbox_append() fails, ctx->fp will be null. Add a
	check in mbox_close_mailbox(), to prevent a segv from passing null
	to fileno().

2017-03-02 13:11 -0800  Kevin McCarthy  <kevin@8t8.us>  (e82253beaa9f)

	* mutt_ssl.c: Clear out extraneous errors before SSL_connect() (see
	#3916)

	Call ERR_clear_error() just before the call to SSL_connect() to make
	sure the error queue doesn't have any old errors in it.

	PEM_read_X509() sets an error PEM_R_NO_START_LINE on end-of-file.
	Clear that out so it doesn't show up as the SSL_connect() error
	message.

2017-02-24 11:00 -0800  Kevin McCarthy  <kevin@8t8.us>  (f85c3eb8d065)

	* merge default into stable

2017-02-24 10:55 -0800  Kevin McCarthy  <kevin@8t8.us>  (7cc47d82cac4)

	* .hgsigs: mutt-1.8.0 signed

2017-02-24 10:50 -0800  Kevin McCarthy  <kevin@8t8.us>  (1672b430cbc3)

	* .hgtags: Added tag mutt-1-8-rel for changeset d897983752f9

2017-02-24 10:50 -0800  Kevin McCarthy  <kevin@8t8.us>  (d897983752f9)

	* ChangeLog, VERSION, po/bg.po, po/ca.po, po/cs.po, po/da.po,
	po/de.po, po/el.po, po/eo.po, po/es.po, po/et.po, po/eu.po,
	po/fr.po, po/ga.po, po/gl.po, po/hu.po, po/id.po, po/it.po,
	po/ja.po, po/ko.po, po/lt.po, po/nl.po, po/pl.po, po/pt_BR.po,
	po/ru.po, po/sk.po, po/sv.po, po/tr.po, po/uk.po, po/zh_CN.po,
	po/zh_TW.po: automatic post-release commit for mutt-1.8.0

2017-02-23 08:56 -0800  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (43e312cee971)

	* po/ja.po: Updated Japanese translation.

2017-02-22 15:58 -0800  Benno Schulenberg  <i18n@benno.vertaalt.nl>  (3e1d26df748e)

	* po/nl.po: Updated Dutch translation.

2017-02-22 12:58 -0800  Benno Schulenberg  <i18n@benno.vertaalt.nl>  (4b445c73fc77)

	* po/eo.po: Updated Esperanto translation.

2017-02-22 12:50 -0800  Kevin McCarthy  <kevin@8t8.us>  (5b68a3022b82)

	* UPDATING, doc/manual.xml.head, init.h: Minor touchups to
	documentation and UPDATING file.

2017-02-19 18:51 -0800  Kevin McCarthy  <kevin@8t8.us>  (715c276641c6)

	* doc/manual.xml.head: Mention $XDG_CONFIG_HOME/mutt/ in the manual.

2017-02-19 18:30 -0800  Kevin McCarthy  <kevin@8t8.us>  (1575671b3c60)

	* UPDATING: Reword some of the UPDATING entries.

	Thanks to Matthias Andree for his feedback and suggestions!

2017-02-18 15:15 -0800  Kevin McCarthy  <kevin@8t8.us>  (e4a5d1913e42)

	* UPDATING: Add 1.8.0 entries to the UPDATING file.

2017-02-18 21:30 +0000  Athanasios Douitsis  <aduitsis@gmail.com>  (943b281abfbb)

	* getdomain.c: Prevent null pointer exception for h->ai_canonname

	The getaddrinfo call in line 54 sets &h to a struct addrinfo. If a
	canonical name cannot be found for the node argument of getaddrinfo,
	h->ai_canonname is set to NULL. In that case, the strchr call in
	line 58 can lead to segfault. This behavior was observed on a macos
	sierra while the hostname was 192.168.1.3 (unfortunately this
	happens quite often in macos).

	The fix is simple, just check h->ai_canonname for the NULL value.

2017-02-17 20:02 -0800  Ivan Vilata i Balaguer  <ivan@selidor.net>  (9b7780b48f47)

	* po/ca.po: Updated Catalan translation.

2017-02-16 12:44 -0800  Vsevolod Volkov  <vvv@mutt.org.ua>  (27ee126fb9c5)

	* po/ru.po: Updated Russian translation.

2017-02-16 12:41 -0800  Vsevolod Volkov  <vvv@mutt.org.ua>  (ed569b004aef)

	* po/uk.po: Updated Ukrainian translation.

2017-02-16 11:22 -0800  Morten Bo Johansen  <mjb@spamcop.net>  (20eccc63e008)

	* po/da.po: Updated Danish translation.

2017-02-13 12:26 -0800  Petr Pisar  <petr.pisar@atlas.cz>  (519a8c8cc55c)

	* po/cs.po: Updated Czech translation.

2017-02-12 13:03 -0800  Matthias Andree  <matthias.andree@gmx.de>  (cec61c6926ea)

	* mutt_ssl.c: Show SHA1 fp in interactive cert check menu.

	While here, fix a few compiler warnings about sign mismatch in
	comparison.

2017-02-12 12:24 -0800  Kevin McCarthy  <kevin@8t8.us>  (2350d7d61b34)

	* mutt_ssl.c: Fix potential cert memory leak in
	check_certificate_by_digest().

	Thanks to Matthias Andree's debugging, it appears the cert is not
	freed when PEM_read_X509() encounters EOF. Change the return value
	check to not overwrite cert. It is already updated via the second
	parameter.

2017-02-12 09:59 -0800  Matthias Andree  <matthias.andree@gmx.de>  (48a1f145c269)

	* mutt_ssl.c: Plug memory leak in weed-expired-certs code.

	X509_STORE_add_cert() creates a copy of the certificate we're
	offering, so we need to free our copy afterwards. This isn't
	documented, but from observed behaviour in OpenSSL 1.0.2 and its
	master branch source code.

	Change PEM_read_X509() call to reuse cert to avoid free/reallocation
	overhead.

2017-02-12 09:59 -0800  Kevin McCarthy  <kevin@8t8.us>  (2632bc4f5b20)

	* mutt_ssl.c: Filter expired local certs for OpenSSL verification.

	OpenSSL has trouble establishing the chain and verifying when
	duplicate expired certs are loaded in from $certificate_file. A
	warning about this is mentioned in
	SSL_CTX_load_verify_locations(3SSL).

	Filter out expired certs when loading verify certs. Note that the
	full certicates file is still used for verification in
	check_certificate_by_digest().

2017-02-10 13:01 -0800  Kevin McCarthy  <kevin@8t8.us>  (7c97a8af8718)

	* alias.c, group.c, hash.c, hash.h, headers.c, imap/message.c, init.c,
	mh.c, mx.c, pop.c, thread.c: Change "allow_dups" into a flag at hash
	creation.

	Instead of having an "allow_dups" parameter for hash_insert(), add a
	flag, MUTT_HASH_ALLOW_DUPS, to hash_create().

	Currently ReverseAlias, subj_hash, and thread_hash allow duplicate
	keys. Change those hashes to pass the flag at creation, and remove
	the last parameter from all callers of hash_insert().

2017-02-10 12:56 -0800  Petr Pisar  <petr.pisar@atlas.cz>  (e2b186a92390)

	* po/cs.po: Updated Czech translation.

2017-02-10 12:51 +0100  Vincent Lefevre  <vincent@vinc17.net>  (a4449ebfb5f4)

	* po/fr.po: Updated French translation.

2017-02-08 07:48 -0800  Kevin McCarthy  <kevin@8t8.us>  (d215a36fd8ee)

	* hcache.c: Fix build for bdb.

	Changeset fca7e504ab6a removed #else/#endif around two blocks of
	code that won't compile with bdb enabled. Restore those directives.

	Thanks to Richard Russon for pointing out the problem and saving me
	from having egg all over my face with the 1.8 release!

2017-02-07 19:36 -0800  Kevin McCarthy  <kevin@8t8.us>  (09bb4a62ceb1)

	* hcache.c, hcache.h, imap/imap.c, imap/message.c, imap/util.c, mh.c,
	pop.c: Create function to free header cache data.

	Kyoto Cabinet documents that data from it should be freed via
	kcfree().

	LMDB claims ownership of the data returned, so convert its free
	operation to be a noop and remove the malloc from its fetch
	function.

2017-02-07 19:36 -0800  Kevin McCarthy  <kevin@8t8.us>  (52481ceb6c6e)

	* configure.ac, doc/manual.xml.head, hcache.c, init.h, mutt.h: Add
	Kyoto Cabinet support to the header cache.

	Retain the defaults as they are, although we might switch to Kyoto
	Cabinet for the next major release.

2017-02-04 12:53 -0800  Kevin McCarthy  <kevin@8t8.us>  (fca7e504ab6a)

	* hcache.c: Fixes to the LMDB header cache. (closes #3691)

	Use mdb_txn_abort() to free up readonly/reset transactions, and
	avoid leaking memory.

	Fix hcache_delete() key generation - looks like this was an
	incorrect copy/paste from the bdb code.

	Use dprint, not fprintf, for debugging messages.

	Remove strange blending of enum and bitfield logic for the txn_mode
	state.

	Remove some duplicate code from store/fetch raw.

2017-02-04 12:53 -0800  Kevin McCarthy  <kevin@8t8.us>  (42aa8b19da95)

	* configure.ac, hcache.c: Add LMDB backend support for header cache.
	(see #3691)

	Based on the original from JP Mens:
	https://gist.github.com/jpmens/15969d9d678a3d450e4e

	The following performance patch was manually applied on top of the
	original patch: https://github.com/neomutt/neomutt/commit/7e5380cd4c
	40d119ff83b2cf5f51f2cdb8a95ab3

	A variant of this patch was added to handle larger mailboxes: https:
	//github.com/neomutt/neomutt/commit/6d337642e701b1dde4b5d0812e01c85f
	41ba65ca

	Thanks to all the developers and contributors to this patch, and to
	Fabian Groffen for bundling and posting this to mutt-dev.

2017-01-31 15:02 -0800  Kevin McCarthy  <kevin@8t8.us>  (142a87f0c855)

	* enter.c: Minor fix to ~y completion.

	Make sure the entire ~y is before curpos when enabling completion.

2017-01-31 14:27 -0800  Kevin McCarthy  <kevin@8t8.us>  (82034c72b6da)

	* enter.c, init.c, protos.h: Simplify mutt_label_complete().

	It was derived from mutt_command_complete(), which had more complex
	requirements. For labels, we just need to skip whitespace and
	complete based on the passed in buffer.

	Therefore, we don't need the pos parameter, or to work backwards
	from the end of the buffer.

2017-01-31 14:27 -0800  Kevin McCarthy  <kevin@8t8.us>  (298654f1d70c)

	* enter.c: Permit tab completion of pattern expressions with ~y
	(labels).

	Thanks to David Champion for the original patch. This version is
	slightly different, as I couldn't get the original patch working.
	This version simply scans backward for the first ~, and if it is ~y,
	invokes completion.

2017-01-31 14:27 -0800  Kevin McCarthy  <kevin@8t8.us>  (9ca99f2b1205)

	* enter.c: Fix the mutt_label_complete() pos parameter.

	i is the state->wbuf index, not the end of the buf. It was "working"
	only because the contents of buf past the null were not "space" most
	of the time.

2017-01-29 11:02 -0800  Kevin McCarthy  <kevin@8t8.us>  (ab2f8882633b)

	* copy.c: Fix the x-label update code check location.

	The x-label comparison was outside the "beginning of header" block.

	This meant that it could theoretically match a continuation line.
	Additionally, the continuation lines of x-labels would not be
	stripped, because the comparison was after the ignore variable was
	reset.

	Move the comparison inside the block and before the ignore reset.

2017-01-28 18:48 -0800  Kevin McCarthy  <kevin@8t8.us>  (d0909785d945)

	* curs_main.c, globals.h, headers.c, init.c, main.c, mbox.c, mutt.h,
	mx.c, pop.c, protos.h: Improve the label completion hash table
	usage.

	Move the hash table inside the Context. Hook message
	arrival/deletion to update the label hash.

	Change the label hash to strdup keys.

	Use hash_find_elem when updating the counter, to reduce unnecessary
	add/delete operations.

2017-01-28 18:47 -0800  David Champion  <dgc@bikeshed.us>  (66cc205ea76a)

	* curs_main.c, doc/manual.xml.head, enter.c, globals.h, headers.c,
	init.c, main.c, mutt.h, protos.h: Adds label completion.

	A global label hash is added, to which labels are added as they're
	parsed from a mailbox file or edited manually by the user. Reference
	counts are kept in the hash table so that unused labels are removed
	from available completions. Completion is available in the label
	editor only, but it may be feasible to add for search expressions if
	the preceding text ends with '~y'.

2017-01-28 18:47 -0800  Kevin McCarthy  <kevin@8t8.us>  (51c5e574a082)

	* hash.c, hash.h: Add hash_find_elem to get the hash element.

	This will be used in the following patch for directly manipulating
	the label counter.

2017-01-28 18:47 -0800  David Champion  <dgc@bikeshed.us>  (169b67b5b666)

	* hash.c, hash.h: Add reentrant hash_walk() function for iterating
	down a hash table.

2017-01-28 18:47 -0800  Kevin McCarthy  <kevin@8t8.us>  (95b892b3f856)

	* commands.c, copy.c, curs_main.c, functions.h, headers.c, pager.c:
	Minor fixes to the x-label patch from David.

	Add L10N comment to sort menu. Mark a couple strings for
	localization.

	Use ascii_strncasecmp() for the X-Label header comparison.

	Simplify label_message() using mutt library routines.

	Bind label editing to "Y" instead of "y". "y" is already used in the
	default sample muttrc to display mailboxes.

2017-01-28 18:47 -0800  David Champion  <dgc@bikeshed.us>  (67525605640e)

	* OPS, commands.c, copy.c, copy.h, curs_main.c, doc/manual.xml.head,
	functions.h, headers.c, imap/imap.c, init.h, mh.c, mutt.h, pager.c,
	protos.h, sort.c, sort.h: Adds capability to edit x-labels inside
	mutt, and to sort by label.

2017-01-24 15:33 -0800  Kevin McCarthy  <kevin@8t8.us>  (e4ad1dc9bfbd)

	* doc/manual.xml.head, init.c: Allow "unsubjectrc *" to remove all
	patterns.

	Thanks to Aaron Schrab for the original patch.

2017-01-23 19:01 -0800  David Champion  <dgc@bikeshed.us>  (9e876d64d3c8)

	* doc/manual.xml.head, globals.h, hdrline.c, init.c, init.h, mutt.h,
	muttlib.c: Add subjectrx command to replace matching subjects with
	something else.

	This lets you define regular expressions-replacement pairs for
	subject display. When a Subject: matches the regular expression, the
	replacement value will be displayed instead in the message index.
	Backreferences are supported.

	This is especially nice for simplifying subjects that are overly
	wordy, such as mailing list posts (with [Listname] tags, etc), mail
	from ticketing systems or bug trackers, etc. It lets you reduce
	clutter in your mutt display without altering the messages
	themselves.

2017-01-23 19:01 -0800  David Champion  <dgc@bikeshed.us>  (f05df6b258f3)

	* globals.h, hcache.c, init.c, mutt.h, muttlib.c, protos.h: Abstract
	the SPAM_LIST as a generic REPLACE_LIST

	REPLACE_LIST can be used more generally as a list of pattern match-
	replace settings. SPAM_LIST was a special case of this, so spam
	handling has been been changed to use REPLACE_LIST instead, and
	SPAM_LIST was removed.

	A generic function for performing a REPLACE_LIST replacement has
	been added in mutt_apply_replace().

	Commited by Kevin McCarthy with some buffer overflow fixes in
	mutt_apply_replace().

2017-01-23 18:46 -0800  Kevin McCarthy  <kevin@8t8.us>  (7a8ea1bb09f0)

	* send.c: Improve Reply-to vs From comparison when replying. (closes
	#3909)

	Prior to this patch, if the Reply-to mailbox matched the From
	mailbox, mutt would always use the From address. This was probably
	done to preserve the display name, as the Reply-to address is often
	missing one.

	Unfortunately, there are circumstances where the Reply-to display-
	name has significance, such as in ticket 3909.

	Change mutt so that it only uses the From address if the Reply-To
	has no display-name.

2017-01-19 14:58 -0800  Kevin McCarthy  <kevin@8t8.us>  (b57c695b7923)

	* doc/manual.xml.head, init.h, sidebar.c, sort.h: Fix sidebar
	references to the "new count" to be "unread". (closes #3908)

	%N in $sidebar_format and "new"in $sidebar_sort_method actually use
	the unread message count. Update the documentation to mention that.

	Add an "unread" method to $sidebar_sort_method, but preserve "new"
	for compatibility.

	Change the SORT_COUNT_NEW constant to SORT_UNREAD, so the code is
	also consistent with the meaning.

	Thanks to cri for reporting the problem and suggesting where to fix
	it in the code.

2017-01-17 16:09 -0800  Kevin McCarthy  <kevin@8t8.us>  (a555ada578b8)

	* addrbook.c, alias.c, init.c: Fix several alias hashtable issues.

	Convert to use the strdup keys hash. Addresses can be converted back
	and forth from intl to local forms. This frees and recreates a new
	addr->mailbox string, resulting in the hash table key being a
	dangling pointer.

	Change alias hash table insert/remove to ensure the address is in
	intl form. The alias menu (previously) converted address entries to
	local form when performing a completion. Even with the pointer issue
	fixed, the entries may not be removed from the hash if the intl and
	local forms are different.

	Lastly, there is no reason for the alias menu to manually convert to
	local form before writing the address to the output buffer.
	rfc822_write_address() has a display parameter that will call
	mutt_addr_for_display() instead when set. Change to set the display
	parameter and remove the conversion calls.

	This last change obviates the first two changes, but they are a good
	idea in any case.

2017-01-17 16:09 -0800  Kevin McCarthy  <kevin@8t8.us>  (fc6990144167)

	* hash.c, hash.h, init.c: Add casecmp and strdup_key flags to
	hash_create()

	Aliases and (in the future), X-Label hashes will require a hash that
	strdups the key. Convert the casecmp parameter of hash_create() to a
	flags parameter, and add a flag to strdup the keys.

2017-01-15 10:00 -0800  Kevin McCarthy  <kevin@8t8.us>  (ac1a2af3aff4)

	* mx.c: Improve error handling in mbox magic detection.

	Thanks to Simon Ruderich for pointing out several small issues with
	the previous commit.

2017-01-14 19:18 -0800  David Champion  <dgc@bikeshed.us>  (945a3f4b15c7)

	* mx.c: Allow initial blank lines in local mailboxes.

	Some mailbox-creation tools erroneously append a blank line to a
	file before appending a UNIXv7-format mail message, resulting in
	mailboxes that are intended to be valid "mbox" folders but are not.
	Notably old versions of Mailman do this, making archive files that
	cannot be read by mutt.

	This patch causes mutt to skip leading NLs and CRs when detecting
	magic.

2017-01-10 14:48 -0800  Simon Ruderich  <simon@ruderich.org>  (79306170e367)

	* doc/manual.xml.head, doc/muttrc.man.head: Fix minor documentation
	issues.

	manual.xml: Wrap line for clarity.

	muttrc.man: Remove superfluous spaces in brackets. Add missing error
	object in color command. Sort the prompt object. Add sidebar color
	objects.

2017-01-06 14:37 -0800  Kevin McCarthy  <kevin@8t8.us>  (7c0e7a0769e4)

	* imap/command.c: Convert cmd_parse_search to use the uid hash.
	(closes #3905)

	Replace the linear scan for each result with a hash lookup. This
	should greatly improve performance for large mailboxes.

2017-01-06 14:23 -0800  Kevin McCarthy  <kevin@8t8.us>  (1ad1013cbf5b)

	* imap/imap.c, imap/imap_private.h, imap/message.c: Create a uid hash
	for imap. (see #3905)

	This hash will allow for more efficient UID SEARCH processing,
	replacing a linear scan with a hash lookup.

2017-01-06 14:17 -0800  Kevin McCarthy  <kevin@8t8.us>  (ebb93147aec7)

	* hash.c, hash.h, thread.c: Convert HASH to be indexable by unsigned
	int. (see #3905)

	Convert the HASH to be usable for either string or unsigned int
	keys, so that a uid hash can be added for imap.

	To keep hash-usage code disruption to a minimum, this introduces new
	create/insert/find/delete functions for the int hash, but keeps the
	old function names for string keys.

	This implementation makes the key a union. It may have been a better
	idea to introduce a whole new structure, but this way allows minimum
	changes to and maximum reuse of the existing hash code.

2017-01-04 19:45 -0800  Kevin McCarthy  <kevin@8t8.us>  (4f0a84b954ef)

	* imap/command.c: Fix imap server-side search to call uid2msgno() only
	once. (see #3905)

	After performing a UID SEARCH, the results are parsed in
	cmd_parse_search(). This was accidentally calling uid2msgno() twice.
	Since that function does a linear search, this has a noticable
	impact on large search results.

2017-01-02 18:08 -0800  Kevin McCarthy  <kevin@8t8.us>  (23b02a482bde)

	* curs_main.c, hook.c, mutt.h, pattern.c, protos.h, score.c: Add a
	pattern_cache_t to speed up a few repeated matches.

	Vincent Lefèvre reported experiencing an index display performance
	issue. This occurred with messages containing many recipients. He
	had many index color lines containing ~l. The ~l ended up being run
	over and over on these messages, resulting in a noticable slowdown
	displaying the index.

	This patch adds caching for just a few of the pattern operations
	(~l, ~u, ~p, ~P) that are potentially expensive and also don't have
	arguments. The caching is only enabled for operations repeatedly
	matching against the same message: color, hooks, scoring.

	The caching is fairly targeted, but isn't that invasive or
	complicated.

2016-12-31 19:57 -0800  Kevin McCarthy  <kevin@8t8.us>  (2bc2ec9ac664)

	* crypt-gpgme.c: Canonicalize line endings for GPGME S/MIME
	encryption. (closes #3904)

	This matches the behavior for S/MIME classic mode: OpenSSL converts
	the line endings to cr/lf before encrypting. Although Mutt always
	canonicalizes the line endings before verifying the signature, some
	clients do not do this for encrypted messages.

	Thanks to cooler for the patch!

2016-12-27 15:23 -0800  Kevin McCarthy  <kevin@8t8.us>  (4cb0cd767af2)

	* globals.h, hdrline.c, init.h, status.c: Make to_chars and
	status_chars accept mulitibyte characters. (closes #3024)

	Change Tochars and StChars to use the mbchars_table type introduced
	in the last commit.

2016-12-27 15:23 -0800  Kevin McCarthy  <kevin@8t8.us>  (1d054932abfb)

	* doc/makedoc.c, init.c, init.h, mutt.h: Create mbchar_table type for
	multibyte character arrays. (see #3024)

	This type is to allow multibyte characters in to_chars and
	status_chars while preserving efficient indexing to each character.

	The arrays are tokenized during initialization, and are re-tokenized
	as the values are unset, reset, and set.

2016-12-25 23:31 +0100  Vincent Lefevre  <vincent@vinc17.net>  (1303567a6ad1)

	* doc/manual.xml.head: In the manual, replaced 2 para by example
	(similar to the first example).

2016-12-13 12:19 -0800  David Champion  <dgc@bikeshed.us>  (b112fd7061fb)

	* curs_main.c, init.h, mutt.h: Add option to control whether threads
	uncollapse when new mail arrives.

	Adds $uncollapse_new: when set, the default, a collapsed thread into
	which a new message arrives will be uncollapsed to reveal the new
	message.

2016-12-13 12:02 -0800  Richard Russon  <rich@flatcap.org>  (1f04f9145eb1)

	* OPS: Remove unused OPS

	OP_MAIN_FIRST_MESSAGE and OP_MAIN_LAST_MESSAGE were added to the
	code 19 years ago. They weren't used then; they haven't been used
	since.

2016-12-13 11:16 -0800  Michał Kępień  <mutt@kempniu.pl>  (b985c324932b)

	* mutt_ssl.c: Rework OpenSSL certificate verification to support
	alternative chains. (closes #3903)

	The way Mutt currently verifies SSL certificates using OpenSSL does
	not support alternative chains, which may cause confusion when some
	popular mail providers (e.g. Gmail) are used with specific sets of
	trusted CA certificates.

	Replace the "manual" verification done by mutt in
	check_certificate_by_signer() with SSL_set_verify() using a
	callback. OpenSSL then does the certificate verification, including
	properly looking at alternative chains. The callback still provides
	the opportunity to override using ~/.mutt_certificates or an
	interactive prompt.

2016-12-11 18:56 -0800  David Champion  <dgc@bikeshed.us>  (8a23708d978b)

	* doc/manual.xml.head, init.c, init.h, main.c, system.c: Add
	setenv/unsetenv commands.

	These can be used to add and remove environment variables passed to
	children via mutt_system().

	Commited by Kevin McCarthy with some cleanup.

2016-12-06 19:07 -0800  Kevin McCarthy  <kevin@8t8.us>  (df1d1e379477)

	* doc/manual.xml.head: Move '@' pattern modifier documentation to the
	right section.

	Somehow, the patch got out of date and the documentation shifted to
	another section. Relocate back to the "Pattern Modifier" section.

2016-12-04 16:04 -0800  Kevin McCarthy  <kevin@8t8.us>  (d930e39ec095)

	* merge stable

2016-12-04 16:03 -0800  Kevin McCarthy  <kevin@8t8.us>  (b9d34372a940)

	* .hgsigs: mutt-1.7.2 signed

2016-12-04 16:01 -0800  Kevin McCarthy  <kevin@8t8.us>  (954f9049e4b3)

	* .hgtags: Added tag mutt-1-7-2-rel for changeset 99f5624d1f52

2016-12-04 16:01 -0800  Kevin McCarthy  <kevin@8t8.us>  (99f5624d1f52)

	* ChangeLog, UPDATING, VERSION: automatic post-release commit for
	mutt-1.7.2

2016-12-04 15:41 -0800  Kevin McCarthy  <kevin@8t8.us>  (a17189b58284)

	* crypt-gpgme.c, mutt_ssl.c: merge stable

2016-11-26 00:57 +0100  Vincent Lefevre  <vincent@vinc17.net>  (a0a970530a8b)

	* crypt-gpgme.c, crypt-gpgme.h, crypt-mod-pgp-gpgme.c: Fix build
	failure with GPGME 1.8: do not steal the gpgme_ prefix.

2016-11-19 19:35 -0800  Kevin McCarthy  <kevin@8t8.us>  (10c4761cea89)

	* mutt_ssl.c: More openssl1.1 fixes: remove uses of X509->name in
	debugging. (closes #3870)

	X509->name was a shortcut for the longer name = X509_NAME_oneline
	(X509_get_subject_name (cert), buf, sizeof (buf)); invocation.
	Change the debugging to print the cert name and chain names in the
	ssl_check_certificate() loop instead.

2016-09-07 20:00 -0700  TAKAHASHI Tamotsu  <ttakah@lapis.plala.or.jp>  (2c1d79d3edd5)

	* configure.ac, mutt_ssl.c: Fix openssl 1.1 compilation issues.
	(closes #3870)

	With these changes, Mutt will no longer compile for versions less
	than 0.9.6.

2016-12-03 15:24 -0800  Kevin McCarthy  <kevin@8t8.us>  (d6c10244793f)

	* sidebar.c: Change sidebar_spoolfile coloring to be lower precedence.

	Give sidebar_new and sidebar_flagged higher precedence than
	sidebar_spoolfile, so that new and flagged message colors will show
	up for the spoolfile in the sidebar.

	Thanks to Till Smejkal for the original patch.

2016-11-29 17:48 -0800  Kevin McCarthy  <kevin@8t8.us>  (d72caeecf4af)

	* curs_main.c: Return to pager upon aborting a jump operation. (closes
	#3901)

2016-11-29 17:44 -0800  Kevin McCarthy  <kevin@8t8.us>  (1196c859942e)

	* lib.h, mutt_ssl.c: Add mutt_array_size macro, change
	interactive_check_cert() to use it. (see #3899)

	While I have reservations about the construct, it does make the
	interactive_check_cert() menu->max and part loop less fragile.

2016-11-29 17:44 -0800  Kevin McCarthy  <kevin@8t8.us>  (1a2dc7b21b5b)

	* mutt_ssl.c: Improve openssl interactive_check_cert. (closes #3899)

	Don't use X509_NAME_oneline() with a fixed size buffer, which could
	truncate the string, perhaps leaving off the CN field entirely.
	Instead, work directly off the X509_NAME.

	Rather than use strstr to tokenize it, call
	X509_NAME_get_text_by_NID() with the nid types. Although
	X509_NAME_get_text_by_NID() is "legacy", it is the most directly
	useful for mutt in this simple interactive prompt.

	The function was set up to include the ST and C fields in the
	prompt, but the loop limit was too low. I believe this was an
	oversight, so increase the loop to include those two fields.

2016-11-26 00:57 +0100  Vincent Lefevre  <vincent@vinc17.net>  (84ad86e8b8ab)

	* crypt-gpgme.c, crypt-gpgme.h, crypt-mod-pgp-gpgme.c: Fix build
	failure with GPGME 1.8: do not steal the gpgme_ prefix.

2016-11-22 03:48 +0100  Vincent Lefevre  <vincent@vinc17.net>  (b22c5d0e299d)

	* mutt_ssl.c: Corrected comment.

2016-11-21 18:03 -0800  Kevin McCarthy  <kevin@8t8.us>  (65f180f2904f)

	* mutt_ssl.c: Revert db13010a2e8d but add a comment. (see #3870)

	X509_NAME_oneline() always NULL-terminates the string, even when it
	has to truncate the data to fit in buf.

2016-11-21 23:10 +0100  Vincent Lefevre  <vincent@vinc17.net>  (db13010a2e8d)

	* mutt_ssl.c: Make sure that the output of X509_NAME_oneline is null-
	terminated.

2016-11-20 16:19 -0800  Kevin McCarthy  <kevin@8t8.us>  (c770d2fa615b)

	* mutt_tunnel.c: Minor resource and error logic cleanup in
	tunnel_socket_open()

	Free the conn->sockdata on failure. conn->fd is not set until the
	bottom, and before it is set, conn->conn_close() will not be called.

	Close the pin pipe if the pout pipe fails.

	Call mutt_perror first on a fork failure. Calling after the close()
	may cause errno to be changed on a close failure.

2016-11-20 16:19 -0800  Kevin McCarthy  <kevin@8t8.us>  (b319ec2dc93a)

	* mutt_tunnel.c: Don't close stderr when opening a tunnel. (closes
	#3726)

	Instead of closing stderr, redirect it to /dev/null in
	tunnel_socket_open(). Otherwise a program can accidentally open a
	file into handle 2 and then unknowingly use that when trying to
	print to stderr.

	Thanks to lotheac for the original patch, which I just modified
	slightly.

2016-11-19 19:35 -0800  Kevin McCarthy  <kevin@8t8.us>  (695243ba6374)

	* mutt_ssl.c: More openssl1.1 fixes: remove uses of X509->name in
	debugging. (closes #3870)

	X509->name was a shortcut for the longer name = X509_NAME_oneline
	(X509_get_subject_name (cert), buf, sizeof (buf)); invocation.
	Change the debugging to print the cert name and chain names in the
	ssl_check_certificate() loop instead.

2016-11-20 01:41 +0100  Vincent Lefevre  <vincent@vinc17.net>  (d14ffd58d976)

	* po/fr.po: Updated French translation.

2016-11-18 15:54 -0800  Kevin McCarthy  <kevin@8t8.us>  (4bed0172c27b)

	* OPS, curs_main.c, functions.h: Fix mark-message translation and
	keybind menu.

	Move the OP_MARK_MESSAGE and hotkey macro from MENU_GENERIC to the
	MENU_MAIN keymap. Putting the macro under generic prevents it from
	overriding a keybinding in the index (even if the function is bound
	to noop). Additionally, the macro can only be executed from the
	index, so it doesn't make sense as a generic keybinding.

	Use the term "hotkey" in both the OPS and km_bind description.

	Mark the km_bind description translatable.

	Add L10N messages for the new translation strings.

2016-11-18 14:20 -0800  Kevin McCarthy  <kevin@8t8.us>  (46194ca48b2f)

	* compress.c: Improve two compress translation messages.

	Change the "Error executing" to "Error running", which is used in
	multiple places elsewhere in mutt. This also removes the unnecessary
	newline.

	Remove the leading space in the "Error compressing" message, and
	change it to match the error message in editmsg.c.

2016-11-18 18:17 +0100  Vincent Lefevre  <vincent@vinc17.net>  (174062d0abed)

	* po/fr.po: Updated French translation.

2016-11-18 17:00 +0100  Vincent Lefevre  <vincent@vinc17.net>  (8fa4965beb62)

	* curs_main.c: Make a string translatable.

2016-11-18 16:59 +0100  Vincent Lefevre  <vincent@vinc17.net>  (c15cacbfabe5)

	* smime.c: Make a string translatable. Add a missing space at the end.

2016-11-18 13:07 +0100  Vincent Lefevre  <vincent@vinc17.net>  (c1befb06b4bd)

	* po/fr.po: Updated French translation (except for 1 string).

2016-11-18 12:32 +0100  Vincent Lefevre  <vincent@vinc17.net>  (211afb39a22a)

	* INSTALL: Updated requirement on the C compiler.

2016-11-17 17:54 -0800  Kevin McCarthy  <kevin@8t8.us>  (fa32396b5e26)

	* init.c: Revert changes made to mutt_find_cfg() in 3c6d322912e3

	The usage of MUTT_VERSION in mutt_find_cfg() was fine before the
	commit: it wasn't using MUTT_VERSION inlined into a string with
	format string substitution.

	Revert to the version of mutt_find_cfg() before that changeset.

2016-11-17 15:57 -0800  David Champion  <dgc@bikeshed.us>  (022b604bc46d)

	* OPS, curs_main.c, doc/manual.xml.head, functions.h, globals.h,
	init.h: Adds <mark-message> binding to create "hotkeys" for
	messages.

	<mark-message>foo<enter> will create a new macro "'foo" which will
	return to the current message by searching for that message's
	message id. The initial character of the macro is defined by
	$mark_macro_prefix, and defaults to "'" for verisimilitude vs. vi.

	Pushed by Kevin McCarthy with a minor fix.

2016-11-17 15:07 -0800  Kevin McCarthy  <kevin@8t8.us>  (3c6d322912e3)

	* commands.c, compose.c, dotlock.c, init.c, muttlib.c, status.c:
	Backout inlining of MUTT_VERSION in 42fee7585fae.

	If MUTT_VERSION contains a %, this will result in problems.

2016-11-16 16:05 -0800  David Champion  <dgc@bikeshed.us>  (91b3449f426b)

	* doc/manual.xml.head, mutt.h, pattern.c: Adds the '@' pattern
	modifier to limit matches to known aliases.

	Example: ~f joe matches messages from joe. @~f joe matches messages
	from any joe who is defined as an alias.

	Pushed by Kevin McCarthy with two minor cosmetic fixes.

2016-11-16 15:43 -0800  David Champion  <dgc@bikeshed.us>  (03aa03293c1d)

	* flags.c, init.h, mh.c, mutt.h: When $flag_safe is set, flagged
	messages cannot be deleted.

	This saves them from bulk operations on threads and tagged messages.
	To remove a flagged message, first unflag it.

2016-11-15 12:04 -0800  Kevin McCarthy  <kevin@8t8.us>  (5382e1e4cee1)

	* muttbug.sh.in: Fix muttbug to check $XDG_CONFIG_HOME.

	Fall back to $HOME/.config if $XDG_CONFIG_HOME is not set.

2016-11-15 12:03 -0800  Kevin McCarthy  <kevin@8t8.us>  (0ef0f4d15f75)

	* init.c: Fix loop terminator in in mutt_find_cfg().

	Keep searching even if home is NULL.

2016-11-14 11:02 -0800  Kevin McCarthy  <kevin@8t8.us>  (c78753f98e34)

	* doc/makedoc-defs.h: Ensure the compressed documentation is always
	built.

	Add USE_COMPRESSED to makedoc-defs.h so any conditional
	documentation will always be built.

2016-11-13 20:02 -0800  Kevin McCarthy  <kevin@8t8.us>  (99a3ff6555d9)

	* compress.c: Compress: check mailbox type if possible when appending.

	If an append hook isn't defined, then mutt has to decompress the
	mailbox. In that case, we can check the type of the decompressed
	mailbox instead of defaulting to DefaultMagic.

2016-11-13 20:02 -0800  Kevin McCarthy  <kevin@8t8.us>  (cad0051417eb)

	* compress.c, doc/manual.xml.head: Compress: escape single quotes when
	invoking the compress/decompress commands.

	The format strings are placed in single quotes. mutt_system()
	invokes sh, so escape the single quotes using bourne-shell syntax:
	'\''

2016-11-13 20:02 -0800  Kevin McCarthy  <kevin@8t8.us>  (a51f1c8a038a)
