2013-02-20 Sam Varshavchik * rfc2047.c, rfc2047u.c: workaround for invalid utf-8 input making libidn go off the rails. 2011-02-12 Sam Varshavchik * rfc2047.c (do_encode_words_method): Avoid splitting RFC 2047-encoded works in a middle of a grapheme. 2011-02-10 Sam Varshavchik * 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 * rfc822/rfc2047.c (rfc2047_encode_callback): Rewrite broken logic. 2011-01-22 Sam Varshavchik * 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 * rfc822_parsedt.c: Eliminate the dependency on ctype, replaced them with macros. 2011-01-08 Sam Varshavchik * rfc822hdr.c (rfc822hdr_namecmp): Factor out rfc822hdr_namecmp from rfc822hdr_is_addr, and make it usable, generically. 2010-06-25 Sam Varshavchik * rfc822.c (rfc822_print_common_nameaddr): Prevent segfault if address decode fails. 2009-11-22 Sam Varshavchik * 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 * 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 * 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 * 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 * 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 * imaprefs.c (dorefcreate): Clean up usage of rfc822_threadsearchmsg(). A malloc() failure wasn't checked correctly. 2008-06-13 Mr. Sam * 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 * rfc822.c (parseaddr): rfc822a_alloc() would corrupt and misparse RFC2047-encoded atoms. 2006-01-21 Mr. Sam * rfc2047.c (encodebase64): Fix compiler warning. * rfc822.c (parseaddr): Ditto. 2005-11-15 Mr. Sam * encode.c (quoted_printable): encode spaces that precede a newline. 2004-08-29 Mr. Sam * imapsubj.c (rfc822_coresubj_keepblobs): New function to strip non-core subject appendages, but keep [blobs]. 2004-05-29 Mr. Sam * 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 * rfc2047.c (rfc2047_encode_callback): Fix bug introduced in 0411. 2004-04-11 Mr. Sam * 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 * encode.c: Moved rfc2045/rfc2045encode.c here, renamed all functions to use the libmail_ prefix. 2003-11-18 Tim Rice * configure.in: Fix MSG_WARN. 2003-10-20 Mr. Sam * rfc2047u.c (rfc2047_print_unicode): Unicode-aware version of rfc2047_print(). 2003-07-08 Mr. Sam * imaprefs.c (rfc822_threadmsgrefs): New rfc822_threadmsgrefs takes an array of References: headers, instead of a single References: string. 2003-03-20 Mr. Sam * rfc2047.c (rfc2047_encode_callback): Fix MIME encoding of "_". 2002-12-23 Mr. Sam * rfc2047.c (rfc2047_encode_callback): Fix loop on broken locales where isspace(U+0x00A0) is true. 2002-09-19 Mr. Sam * RFC 2231 support. 2002-08-08 Mr. Sam * rfc2047.c (rfc2047_encode_callback): Fix MIME encoding of words with = and ? characters. 2002-05-20 Mr. Sam * rfc822_parsedt.c (rfc822_parsedt): Ignore obviously invalid years (someone else can worry about Y10K). 2002-04-07 Mr. Sam * rfc822_mkdate.c (rfc822_mkdate_buf): Explicit (int) cast gets the file compiled under Cygwin. 2002-03-09 Mr. Sam * rfc2047.c (rfc2047_encode_callback): Fix MIME-encoding of spaces. 2002-03-04 Mr. Sam * rfc822.c (rfc822_prname_orlist): Dequote quoted-strings. 2001-06-27 Mr. Sam * rfc2047.c (a_rfc2047_encode_str): Fix incorrect MIME encoding of address name in old-style RFC-822 format. 2001-04-17 Mr. Sam * rfc822.c (rfc822t_alloc): Explicitly cast arg to (void *). 2000-12-22 Mr. Sam * reftest.c: Fix dependency on qsort sorting order of identical keys. 2000-12-11 Mr. Sam * imapsubj.c (stripsubj): Recode subject stripping. 2000-11-18 Mr. Sam * 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