2025-05-02  Sam Varshavchik  <mrsam@courier-mta.com>

	* Implement C++ API for RFC 822 tokenization, address parsing,
	and RFC-2047 encoding and decoding (partial).

2023-11-17  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc822: use tm_gmtoff in preference over daylight, for determining
	TZ offset.

2015-03-03  Sam Varshavchik  <mrsam@courier-mta.com>

	* Replace rfc822_parsedt with rfc822_parsedate_chk(), returning
	0 for ok, -1 for an error parsing the date string.

2015-02-28  Sam Varshavchik  <mrsam@courier-mta.com>

	* Update to courier-unicode 1.2.

2013-02-20  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc2047.c, rfc2047u.c: workaround for invalid utf-8 input making
	libidn go off the rails.

2011-02-12  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc2047.c (do_encode_words_method): Avoid splitting RFC 2047-encoded
	works in a middle of a grapheme.

2011-02-10  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc2047.c (rfc2047_encode_callback): Likely bug fixed.
	(rfc2047_encode_str): Ignore invalid charset sequence when encoding
	RFC-2047, too much code assumes that encoding always works.

2011-01-24  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc822/rfc2047.c (rfc2047_encode_callback): Rewrite broken logic.

2011-01-22  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc822/encodeautodetect.c (libmail_encode_autodetect): Remove obsolete
	unicode API. Determine encoding with heuristics based entirely on
	the content. Remove charset arg, replace with "use7bit", to force
	qp or base64, instead of 8bit. Take a binaryflag param that gets set
	to indicate whether base64 was selected based on binary content.

	* rfc2047.c (rfc2047_encode_str): Removed
	rfc2047_encode_callback_base64, invoked from rfc2047_encode_str().
	Rewrite rfc2047_encode_str() to use the new unicode API.

	* rfc2047u.c: Unicode API updates.

2011-01-09  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc822_parsedt.c: Eliminate the dependency on ctype, replaced
	them with macros.

2011-01-08  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc822hdr.c (rfc822hdr_namecmp): Factor out rfc822hdr_namecmp from
	rfc822hdr_is_addr, and make it usable, generically.

2010-06-25  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc822.c (rfc822_print_common_nameaddr): Prevent segfault if
	address decode fails.

2009-11-22  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc822.c: Removed rfc822_praddr().

	* rfc822_getaddr.c (rfc822_getaddr): Implement rfc822_getaddr() by
	calling rfc822_display_addr_tobuf(), instead of rfc822_praddr().

	* testsuite.c (doaddr): Remove rfc822_addrlist() and rfc822_namelist().

2009-11-21  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc822_getaddr.c: Remove rfc822_prname() and rfc822_prname_orlist(),
	replaced by rfc822_display_name() with a NULL character set.

	* rfc2047u.c (rfc822_display_name): Semantical change -- without
	an explicit name, display the address as the name. If the requested
	character set is NULL, do not decode RFC2047-encoded content, return
	it as is.

2009-11-17  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc2047u.c (rfc2047_print_unicodeaddr): Fix several formatting
	issues with deprecated RFC 822 distribution lists: spurious comma
	adter the last address, pass the space after the ':' as a separator
	character.

	* rfc2047.c (counts2/save): Fix line-wrapping of encoded addresses.

	* rfc2047u.c (rfc822_display_addr_tobuf): New function.

2009-11-14  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc822.c (rfc822_print_common): Rewrite.

	* rfc2047u.c (rfc822_display_name_int): Fixed various rules for
	encoding names to be more MIME compliant.
	(rfc822_display_addr_str): Renamed from rfc822_display_addr(), for a
	consistent API.
	(rfc822_display_addr): New function, decode the wire format of a single
	address. Names are MIME decoded, addresses are IDN-decoded.
	(rfc2047_print_unicodeaddr): Do not output a dummy name for an
	address without one.
	(rfc822_display_addr_str_tobuf): New function, version of
	rfc822_display_addr_str() that collects the output into a buffer.

	* rfc2047.c (rfc822_encode_domain): New function -- IDN-encode a domain,
	with an optional "user@".
	(rfc2047_encode_header_addr): Renamed rfc2047_encode_header(), for a
	consistent API.
	(rfc2047_encode_header_tobuf): New function, encode a header from
	displayed format to wire format. Names are encoded using RFC 2047,
	addresses using IDN.

2009-11-08  Sam Varshavchik  <mrsam@courier-mta.com>

	* rfc2047.h: Expose raw RFC 2047 decoding function,
	rfc2047_decoder().

	* rfc822hdr.c (rfc822hdr_is_addr): New function.

	* rfc822.c (tokenize): Tweak the logic for collecting RFC 2047 atoms.

	* rfc2047u.c (rfc822_display_name): New function,
	replaces rfc2047_print().
	(rfc822_display_name_tobuf): New function,
	replaces rfc2047_print().
	(rfc822_display_namelist): New function,
	replaces rfc822_namelist().
	(rfc822_display_addr): New function, replaces rfc2047_print().
	(rfc2047_print_unicodeaddr): Renamed from rfc2047_print_unicode().
	(rfc822_display_hdrvalue): New function, replaces rfc2047_decode(),
	rfc2047_decode_simple(), rfc2047_decode_enhanced().
	(rfc822_display_hdrvalue_tobuf): New function, ditto.

	* rfc2047.c: Removed rfc2047_decode(), rfc2047_decode_simple(),
	rfc2047_decode_enhanced(), rfc2047_print().

	* Makefile.am: Link against GNU IDN library.

2008-11-30  Sam Varshavchik  <mrsam@courier-mta.com>

	* imaprefs.c (dorefcreate): Clean up usage of rfc822_threadsearchmsg().
	A malloc() failure wasn't checked correctly.

2008-06-13  Mr. Sam  <mrsam@courier-mta.com>

	* rfc822_getaddr.c: Backslashed special characters in address names
	weren't being dequoted correctly by rfc822_getname() and
	rfc822_getname_orlist().

2007-02-25  Mr. Sam  <mrsam@courier-mta.com>

	* rfc822.c (parseaddr): rfc822a_alloc() would corrupt and misparse
	RFC2047-encoded atoms.

2006-01-21  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047.c (encodebase64): Fix compiler warning.

	* rfc822.c (parseaddr): Ditto.

2005-11-15  Mr. Sam  <mrsam@courier-mta.com>

	* encode.c (quoted_printable): encode spaces that precede a newline.

2004-08-29  Mr. Sam  <mrsam@courier-mta.com>

	* imapsubj.c (rfc822_coresubj_keepblobs): New function to strip
	non-core subject appendages, but keep [blobs].

2004-05-29  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047.c (rfc2047_encode_callback): Use base64 to MIME-encode
	instead of quoted-printable, where it's more efficient to do so.

2004-04-14  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047.c (rfc2047_encode_callback): Fix bug introduced in 0411.

2004-04-11  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047.c (a_rfc2047_encode_str): Improve compliance with RFC 2047
	for MIME-encoded recipient lists.
	(rfc2047_encode_callback): New argument: qp_allow - function that
	indicates acceptable characters in QP-encoded words.
	(rfc2047_encode_str): Ditto.
	(rfc2047_qp_allow_any, rfc2047_qp_allow_comment)
	(rfc2047_qp_allow_word): Possible arguments to qp_allow for various
	situations.

2004-04-09  Mr. Sam  <mrsam@courier-mta.com>

	* encode.c: Moved rfc2045/rfc2045encode.c here, renamed all functions
	to use the libmail_ prefix.

2003-11-18  Tim Rice <tim@multitalents.net>

	* configure.in: Fix MSG_WARN.

2003-10-20  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047u.c (rfc2047_print_unicode): Unicode-aware version of
	rfc2047_print().

2003-07-08  Mr. Sam  <mrsam@courier-mta.com>

	* imaprefs.c (rfc822_threadmsgrefs): New rfc822_threadmsgrefs takes
	an array of References: headers, instead of a single References:
	string.

2003-03-20  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047.c (rfc2047_encode_callback): Fix MIME encoding of "_".

2002-12-23  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047.c (rfc2047_encode_callback): Fix loop on broken
	locales where isspace(U+0x00A0) is true.

2002-09-19  Mr. Sam  <mrsam@courier-mta.com>

	* RFC 2231 support.

2002-08-08  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047.c (rfc2047_encode_callback): Fix MIME encoding of words
	with = and ? characters.

2002-05-20  Mr. Sam  <mrsam@courier-mta.com>

	* rfc822_parsedt.c (rfc822_parsedt): Ignore obviously invalid years
	(someone else can worry about Y10K).

2002-04-07  Mr. Sam  <mrsam@courier-mta.com>

	* rfc822_mkdate.c (rfc822_mkdate_buf): Explicit (int) cast gets
	the file compiled under Cygwin.

2002-03-09  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047.c (rfc2047_encode_callback): Fix MIME-encoding of spaces.

2002-03-04  Mr. Sam  <mrsam@courier-mta.com>

	* rfc822.c (rfc822_prname_orlist): Dequote quoted-strings.

2001-06-27  Mr. Sam  <mrsam@courier-mta.com>

	* rfc2047.c (a_rfc2047_encode_str): Fix incorrect MIME encoding of
	address name in old-style RFC-822 format.

2001-04-17  Mr. Sam  <mrsam@courier-mta.com>

	* rfc822.c (rfc822t_alloc): Explicitly cast arg to (void *).

2000-12-22  Mr. Sam  <mrsam@courier-mta.com>

	* reftest.c: Fix dependency on qsort sorting order of identical keys.

2000-12-11  Mr. Sam  <mrsam@courier-mta.com>

	* imapsubj.c (stripsubj): Recode subject stripping.

2000-11-18  Mr. Sam  <mrsam@gwl.email-scan.com>

	* imaprefs.c: Update to draft-05.txt-bis (sort top level siblings
	by date.

Mon Apr  5 00:58:37 EDT 1999

* Yes, I've decided to start a Change Log. librfc822 now has a life of its
own, so it might as well have it.

* Courier needs tokens in a link list, not an array.  Rewrote most token
handling code.

* Fixed some issues with handling of () comments.

* Changed *pr* functions to pass along a caller-provided void, also for
  courier.  librfc822 should now be threadable (like, who cares...)

* Added a testsuite
