2010-10-13  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.20

	* build/vs2008/gmime.vcproj: Bumped version.

2010-09-25  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/charset-map.c: According to rfc1557, it is suggested that
	euc-kr be used for headers since many Korean mailers cannot handle
	base64 or quoted-printable encoded iso-2022-kr. Based on this and
	bug #629235, I'm just going to drop iso-2022-kr.

2010-09-17  Jeffrey Stedfast  <fejj@novell.com>

	Based on a patch by Marek Łętowski

	* gmime/gmime-utils.c (g_mime_utils_header_decode_text): In the
	workaround case, if we don't find an end marker, reset our inptr
	to the beginning of the most recent word *plus 2* (to skip over
	the leading "=?"), not the beginning of the input text. Also need
	to reset our ascii state.
	(g_mime_utils_header_decode_phrase): In the workaround case, if we
	don't find an end marker, reset our inptr to the beginning of the
	most recent word *plus 2*, to skip over the leading "=?".

2010-09-16  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-encodings.c (g_mime_encoding_quoted_encode_close):
	If the last input character is not a \n, append an "=\n" sequence.

2010-09-13  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-charset.c: Mark known_iconv_charsets[] as
	static. Also mark string members of various private structs as
	const.

2010-09-13  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.19

	* build/vs2008/gmime.vcproj: Bumped version.

2010-09-06  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-gpg-context.c (g_set_error_literal): glib 2.12
	doesn't have this function, so in order to keep our current glib
	requirements, we need to supply our own version if
	GLIB_MINOR_VERSION < 2.18 (which is when this function was
	introduced).

2010-09-02  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/internet-address.c (group_to_string): Don't crash if the
	group name is unset. Thanks to Damian Pietras for this patch.

2010-09-01  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-utils.c (g_mime_utils_header_decode_phrase):
	Implement the same rfc2047-workaround hack as the one found in
	g_mime_utils_header_decode_text().

	* gmime/gmime-encodings.c (g_mime_encoding_base64_decode_step):
	Need to keep state to keep track of the number of ='s we've backed
	out over in case it crosses buffer boundaries.

2010-08-30  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-param.c (decode_token): Make less strict in order to
	handle unquoted boundary values containing '=' (and other illegal
	characters).

2010-08-27  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.18

	* build/vs2008/gmime.vcproj: Bumped version.

2010-08-26  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/internet-address.c (_internet_address_set_name): Don't
	decode/unquote the name. The docs for all the functions that call
	this assume the name string is in its decoded form already.
	(_internet_address_decode_name): New internal function that
	decodes a string and sets it as the name on the InternetAddress.
	(decode_address): Rewritten to be even more liberal in what it
	accepts.

2010-06-20  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_decrypt):
	Don't unref the encrypted content mime part object when the
	content-type doesn't match application/octet-stream,
	g_mime_multipart_get_part() does not ref parts it returns. We also
	need to set an error when this happens.

2010-05-18  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.17

	* build/vs2008/gmime.vcproj: Bumped version.

	* gmime/gmime-encodings.h (GMIME_QP_ENCODE_LEN): Since
	force-wrapped lines use "=\n" instead of just "\n", lines will be
	74 bytes, not 73.

2010-05-15  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.16

	* build/vs2008/gmime.vcproj: Bumped version.

2010-05-14  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-encodings.h (GMIME_QP_ENCODE_LEN): Fixed to take
	into acount the possibility of having to force-wrap lines at 72+
	characters.

2010-05-06  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-data-wrapper.c (g_mime_data_wrapper_get_stream):
	Fixed documentation.

2010-04-13  Jeffrey Stedfast  <fejj@novell.com>

	* configure.ac: Added a --disable-cryptography flag to allow
	building without GnuPG or S/MIME support. Thanks to
	pier11@operamail.com for this patch. Fixes bug #615685.

	* tests/test-streams.c: Use glib's G_GINT64_FORMAT and
	G_GSIZE_FORMAT macros for our various *printf needs to be more
	portable. Thanks to pier11@operamail.com for this patch.

	* gmime/gmime-gpg-context.c: Use g_set_error_literal() when no
	printf-style arguments are needed. Fixes bug #615594. Thanks to
	Tobias Mueller and Christian Persch.

	* Applied patch by pier11@operamail.com to fix the build for
	MingW. Fixes bug #615068.

2010-03-26  Jeffrey Stedfast  <fejj@novell.com>

	Fixes for bug #613653

	* gmime/gmime.c (g_mime_init): Initialize GMimeObject's type
	registry.
	(g_mime_shutdown): Shut it down here.

	* gmime/gmime-object.c (g_mime_object_type_registry_init): Renamed
	a bit and fixed to not use g_atexit(). Also made internal-public.
	(g_mime_object_type_registry_shutdown): Renamed and made
	internal-public. Also set type_hash to NULL after destroying it so
	that a re-init will work.
	(g_mime_object_register_type): Don't init the type system anymore.
	(g_mime_object_new): Same.
	(g_mime_object_new_type): Same here.

2010-03-26  Jeffrey Stedfast  <fejj@novell.com>

	Fixes for bug #598855

	* gmime/gmime-message.c (process_header): Return TRUE if we match
	MIME-Version.
	(message_prepend_header): Don't drop MIME-Version headers.
	(message_append_header): Same.
	(message_set_header): Here too.
	(message_get_header): Only return the hard-coded "1.0" value for
	MIME-Version if it is not set on the header object.
	(message_remove_header): Allow the MIME-Version header to be
	removed.
	(message_get_headers): Only write our own MIME-Version header if
	one isn't already set in the message headers.
	(message_write_to_stream): Same here.

2010-02-02  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.15

	* build/vs2008/gmime.vcproj: Bumped version.

2010-01-31  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-encodings.h (GMIME_UUENCODE_LEN): Fixed to prevent
	possible buffer overflows.

2010-01-30  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.14 and disabled
	strict-aliasing which causes bugs in GMime.

	* build/vs2008/gmime.vcproj: Bumped version.

2010-01-19  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.13

	* build/vs2008/gmime.vcproj: Bumped version.

2010-01-17  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-filter-crlf.c (filter_filter): Fixed bug #606875 by
	not trying to skip multiple characters per pass thru the loop when
	encountering the first '.' of a possible '..' sequence.

2010-01-12  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.12

	* build/vs2008/gmime.vcproj: Bumped version.

2010-01-12  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-utils.c (g_mime_utils_decode_8bit): Make sure to
	always increment inptr as we force-convert it to ascii. Thanks to
	Damian Pietras for finding this bug.

2009-11-30  Jeffrey Stedfast  <fejj@novell.com>

	* configure.in: Don't include EXTRA_LIBS in GMIME_LIBS, instead
	add it to GMIME_LIBS_PRIVATE so that things properly expand in the
	.pc file.

	* gmime-2.4.pc.in: Moved -lz -lnsl, etc into Libs.private. Fixes
	bug #603273.

2009-11-07  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.11

	* build/vs2008/gmime.vcproj: Bumped version.

2009-11-05  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-multipart.c (ptr_array_insert): Fixed to handle an
	index larger than the current array length as well as fixing the
	true insert case to shift items when index is les than the current
	array length (as opposed to when it is equal-to). Thanks to
	harven@gingers.rulez.pl for finding this bug.

2009-10-10  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-utils.c: Fixed the military timezone offsets.

2009-10-10  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.10

	* build/vs2008/gmime.vcproj: Bumped version.

	* gmime/gmime-encodings.c (g_mime_encoding_uudecode_step): Fixed a
	uudecoding bug when uulen % 3 is 2. Thanks to Peter Hartley. Fixes
	bug #597794.

2009-09-03  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.9

	* build/vs2008/gmime.vcproj: Bumped version.

	* mono/gmime-sharp.dll.config.in: Fixed the target library
	version, thanks to MATSUURA Takanori <t.matsuu@gmail.com>.

2009-08-12  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.8

	* build/vs2008/gmime.vcproj: Bumped version.

	* gmime/gmime-utils.c (charset_convert): If iconv() fails, treat
	conditions where outleft == 0 the same as if we had gotten an
	E2BIG error (e.g. we need to grow the output buffer) so that we
	don't overrun it while appending a '?' placeholder character.

2009-07-02  Stanislav Brabec  <sbrabec@suse.cz>

	* configure.in: Simplified configuring of gmime in a
	cross-compilation environment. Make it possible to work-around
	AC_TRY_RUN limitations by copying of target system iconv-detect.h
	and setting ac_cv_have_iconv_detect_h=yes.

2009-06-12  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-parser.c (g_mime_parser_set_header_regex): Fix
	non-GLib regex initialization to actually compile.

2009-05-07  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-stream-fs.c (stream_read): Removed gross hack.
	(stream_write): Same.
	(g_mime_stream_fs_new): On Windows systems, set the translation
	mode to BINARY.
	(g_mime_stream_fs_new_with_bounds): Same.

	* gmime/gmime-stream-file.c: Same as GMimeStreamFs

2009-05-02  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-stream-buffer.c (stream_seek_cache_read): Fixed a
	64bit cleanlines issue.
	(stream_seek_cache_read): Cap the max cache size to G_MAXSIZE.

2009-04-27  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.7

	* build/vs2008/gmime.vcproj: Bumped version.

2009-04-25  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-object.c (g_mime_object_set_disposition): Unref the
	disposition after setting it on the GMimeObject, don't ref it
	again. Oops.

	* gmime/gmime-message.c (unblock_changed_event): Oops, this needs
	to /unblock/ the event handler.

	* gmime/gmime-header.c (g_mime_header_list_set_raw): Added back
	just in case someone was foolish enough to use this API.
	(g_mime_header_list_has_raw): Same.

2009-04-24  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-parser.c (struct _GMimeParserPrivate): Added
	message_headers_begin/end and changed the meaning of
	headers_begin/end to be for the current MIME part rather than for
	the current message itself.
	(g_mime_parser_init): Init the boolean state variables before
	calling parser_init() so that parser_init() can use them.
	(parser_init): Only create a rawbuf if our stream isn't seekable
	or isn't persistent. Initialize our new message_headers_begin/end.
	(g_mime_parser_set_persist_stream): If our persist mode has
	changed, malloc or free our rawbuf.
	(raw_header_append): Don't append any data if rawbuf is NULL (this
	means we're keeping track of offsets instead).
	(parser_step_headers): Always update headers_begin/end since we
	now always want to keep track of all header begin/end offsets.
	(parser_step): Update our message_headers_begin/end state.
	(parser_scan_message_part): Set the mime-part's raw header stream
	on the message too.
	(parser_construct_message): Same.
	(parser_construct_leaf_part): Substream the input stream to get
	our raw header stream to set on the mime-part's header-list.
	(parser_construct_multipart): Same.

	* gmime/gmime-header.c (struct _GMimeHeaderList): Instead of
	having a string buffer holding the raw header block content,
	instead keep a stream. This not only makes it easy for us to keep
	track of what the header offsets on disk are should the developer
	want to know, but it also means we don't necessarily have to use
	duplicate the header block to memory.
	(g_mime_header_list_set_stream): New function that replaces the
	old g_mime_header_list_set_raw() and looks much cleaner.
	(g_mime_header_list_get_stream): New function to access said
	stream.

	* gmime/gmime-message.c: Fixed uses of
	g_mime_header_list_set/has_raw().
	(g_mime_message_set_mime_part): Set the message's raw header
	stream to NULL.

	* gmime/gmime-multipart.c: Same.

	* tests/test-parser.c (test_parser): Updated.

2009-04-09  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.6

2009-04-05  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-encodings.c (g_mime_encoding_uudecode_step): Fixed a
	bug wrt updating uulen when the data isn't an exact multiple of 3.

	* src/uuencode.c (uuencode): Don't bother dup()ing the stdout fd, just
	use set_owner(FALSE) so that it doesn't close when we destroy the stream
	instead.

	* gmime/gmime-stream-file.c (stream_read, stream_write): Don't depend on
	simple arithmetic to update our stream->position on Windows since it
	may do line-ending translation behind our backs. Call ftell() to get
	our real position after reading or writing.

	* gmime/gmime-stream-fs.c (stream_read, stream_write): Same idea.

	* gmime/gmime-utils.c (mktime_utc): Fixed the Windows code-path.
	(charset_convert): In the Windows case, fake the E2BIG error condition
	if outleft <= inleft on any error as errno doesn't seem to get
	properly set in this case.

	* tests/test-headers.c: Removed unused headers to fix the build on
	Windows.

2009-04-04  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-stream-fs.c: Ported to Windows by #including io.h

	* examples/basic-example.c: Reverted to the old GMimeStreamFs logic
	and #included io.h for G_OS_WIN32 systems.

	* examples/imap-example.c: Ported to Windows by #including io.h and
	using g_ascii_strcasecmp().

2009-04-03  Jeffrey Stedfast  <fejj@novell.com>

	* build/vs2008: New directory for Visual Studio 2008 Solution & Project
	files.

	* gmime.vcproj: Moved to build/vs2008

	* config.h.win32: Same.

	* gmime.sln: Same.

	* examples/basic-example.c: Fixed to build under Visual Studio by
	using GMimeStreamFile instead of GMimeStreamFs and by #ifdef'ing
	out the GnuPG code.

	* tests/testsuit.[c,h]: Fixed to compile under Visual Studio which
	basically means we can't use _try() as a function. Renamed to g_try().
	Also renamed throw() to g_throw() for consistency.

2009-04-02  Jeffrey Stedfast  <fejj@novell.com>

	* tests/testsuite.c: Modified to compile without the need for
	pthread.h

	* gmime.vcproj: Added logic to the PreBuild step to copy
	config.h.win32 to config.h

	* config.h.win32: Added.

2009-04-01  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-utils.c: #include <process.h> for getpid() and ws2tcpip.h
	for getaddrinfo() on Windows platforms.
	(mktime_utc): Use _get_timezone() when building on Windows.
	(g_mime_utils_header_format_date): Windows has gmtime_s() instead
	of gmtime_r(), so use that on Windows.

	* gmime/gmime-parser.c: If glib is >= 2.14, use GRegex instead of
	glibc regex.

2009-04-01  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-utils.c: Need to #include <unistd.h> for getpid().

	* gmime/gmime-stream-fs.c: Need to #include <unistd.h> here.

	* gmime/gmime-multipart-signed.c: Got rid of an unused variable.

	* gmime/gmime-message.c: Removed unused variables.

	* gmime/gmime-content-type.c: Don't need to #include
	"gmime-table-private.h" here as we don't actually use it.

	* util/gtrie.c: Disable g_warning()'s when compiled w/o
	--enable-warnings and also fixed some compile warnings.

2009-03-31  Jeffrey Stedfast  <fejj@novell.com>

	* gmime.sln: New Microsoft Visual Studio 2008 Solution file for GMime.

	* gmime.vcproj: New Microsoft Visual C++ Project file for GMime.

2009-03-31  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-utils.c: Removed unneeded #include <unistd.h>

	* configure.in: Check for unistd.h

	* gmime/gmime-multipart.c (read_random_pool): Implement using
	rand() in the case that unistd.h is not available.

	* gmime/gmime-parser.c (parser_scan_content): Fixed 'crlf'
	argument to be a guint to make it easier to avoid compile warnings
	about comparison between signed/unsigned ints in the callers.

	* gmime/internet-address.c (internet_address_group_add_member):
	Fixed g_return macros to return a value.
	(internet_address_mailbox_get_addr): Same.

2009-03-30  Jeffrey Stedfast  <fejj@novell.com>

	* configure.in: Check for regex.h

	* gmime/gmime-parser.c: #ifdef out the regex functionality if the
	system does not have regex.h

	* gmime/gmime-stream-fs.h: Don't #include <unistd.h> here.

	* gmime/gmime-stream.h: Removed #include <unistd.h> as it isn't
	needed there.

	* gmime/gmime-part.c: Removed unused includes.

	* gmime/gmime-utils.c: Only #include <sys/utsname.h> if we have
	utsname.domainname. Helps build process on Windows.

2009-03-29  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.5

2009-03-27  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-stream-buffer.c: Fixed to be more diligent in setting
	errno on error.

	* gmime/gmime-stream-mmap.c: Fixed to be more diligent in setting
	errno on error.

	* gmime/gmime-stream-mem.c: Fixed to be more diligent in setting
	errno on error.
	(stream_seek): If the user seeks beyond the end of the buffer and
	bound_end is unbound, then grow the buffer (e.g. a sparse file).

	* gmime/gmime-stream-file.c: Fixed to be more diligent in setting
	errno on error.

	* gmime/gmime-stream-fs.c: Fixed to be more diligent in setting
	errno on error.

2009-03-20  Jeffrey Stedfast  <fejj@novell.com>

	* configure.in: Default --enable-largefile to yes. Looks like I
	forgot to do this before rolling the version to 2.4.0 like I
	intended.

	* tools/Makefile.am: Fixed to include the porting script in
	EXTRA_DIST (instead of extra_DIST) so that the tarball includes
	it, doh!

2009-03-18  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.4

2009-03-18  Jeffrey Stedfast  <fejj@novell.com>

	* configure.in: Check for select() and poll() as well as poll.h

	* gmime/gmime-gpg-context.c (poll): Implement our own poll()
	function using select() for portability to MacOS 10.2, which
	apparently doesn't have poll().

2009-02-22  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-utils.c: Use GSlice for rfc822 word tokens and date
	tokens.

	* gmime/gmime-parser.c: Updated to use GSlice.

2009-02-22  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-header.c (g_mime_header_iter_new): Use
	g_slice_new().
	(g_mime_header_iter_free): Use g_slice_free().
	(g_mime_header_list_new): Use g_slice_new().
	(g_mime_header_list_destroy): Use g_slice_free().

	* gmime/gmime-gpg-context.c (gpg_ctx_new): Use g_slice_new().
	(gpg_ctx_free): Use g_slice_free().

	* gmime/gmime-cipher-context.c (g_mime_signer_new): Use
	g_slice_new() instead of g_new().
	(g_mime_signature_validity_new): Same.
	(g_mime_signature_validity_free): Use g_slice_free().
	(g_mime_signer_free): Same.

2009-02-07  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/internet-address.c: Removed some unused macros.

2009-01-12  Jeffrey Stedfast  <fejj@novell.com>

	* mono/Makefile.am: Fixed to parallel make install, thanks to
	Diego Pettenò. Fixes bug #567549.

2009-01-09  Jeffrey Stedfast  <fejj@novell.com>

	* examples/imap-example.c (write_part): Don't unref the stream we
	get from g_mime_data_wrapper_get_stream().
	(reconstruct_part_content): Fixed error-checking.

2008-11-01  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-parser.c (nearest_pow): Implement using asm on i386
	- this code path isn't normally built, but it's fun to
	micro-optimize anyway ;-)

	* gmime/gmime-gpg-context.c (status_backup): Use next_alloc_size()
	macro - same as gmime-parser.c

2008-10-22  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.3

2008-10-22  Jeffrey Stedfast  <fejj@novell.com>

	Fixes by Damian Pietras.

	* gmime/gmime-parser.c (check_boundary): Check that len > 0 before
	checking for \r.
	(header_parse): Fixed to handle headers with nothing but lwsp.

2008-10-07  Jeffrey Stedfast  <fejj@novell.com>

	* util/gtrie.c (g_trie_search): Instead of returning the first
	match, find instead the best match starting at the same starting
	offset (e.g. if we have two patterns "abc" and "abcdef" and the
	input buffer is "abcdefghi", we want to match "abcdef" rather than
	just "abc").
	(g_trie_quick_search): Renamed from the old g_trie_search().

2008-10-06  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.2

2008-10-02  Jeffrey Stedfast  <fejj@novell.com>

	* gtk-doc.make: More parallel-install fixes so that devhelp
	actually works. Patch to gtk-doc.make submitted upstream.

2008-10-02  Jeffrey Stedfast  <fejj@novell.com>

	Fixes for bug #554830

	* mono/Makefile.am: Don't hard-code the API version.

	* mono/gmime-sharp-2.4.pc.in: Fixed incorrect path to include the
	API_VERSION.

	* gmime-2.4.pc.in: Similar fixes.

	* configure.in: Define GMIME_API_VERSION

2008-10-02  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.1

2008-10-02  Jeffrey Stedfast  <fejj@novell.com>

	* gtk-doc.make: Allow for a versioned install of the
	gtk-docs. Completes the fix for bug #554121.

	* docs/reference/Makefile.am: Define a DOC_MODULE_VERSION

	* mono/Makefile.am: Fix PACKAGE_SHARP to be versioned. Partial fix
	for bug #554121.

	* gmime/gmime-parser.c: Made the headerbuf allocator a little less
	liberal in the amount it allocates.

2008-09-25  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-stream.c (stream_length): Implemented a default
	solution using g_mime_stream_seek().

2008-09-25  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.4.0

2008-09-18  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-utils.c (g_mime_utils_header_decode_text): Check if
	rfc2047-workarounds has been enabled at runtime.

	* gmime/gmime.h (GMIME_ENABLE_RFC2047_WORKAROUNDS): New
	g_mime_init() flag so that a programmer can enable rfc2047
	workarounds at runtime.

	* gmime/gmime.c (g_mime_init): Save the init flags.

	* gmime/internet-address.c (internet_address_group_set_members):
	Add an event listener to the new members, not the unref'd old
	member list. Thanks to Peter Bloomfield for spotting this.

2008-09-18  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime.c (g_mime_init): Register all of our GObject types
	with the glib type system so that there's less risk of a
	race-condition in multi-threaded applications (not sure if this is
	a justifiable concern or not, but it doesn't hurt).

2008-09-15  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-message.c: Use the new InternetAddressList event
	system.

	* gmime/internet-address.c: Implemented a custom event system
	which gains us another 20% performance improvement.

2008-09-14  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-object.c (g_mime_object_get_type): Register this
	class as being abstract.

	* gmime/gmime-filter.c (g_mime_filter_get_type): Register this
	class as being abstract.

	* gmime/gmime-stream.c (g_mime_stream_get_type): Register this
	class as being abstract.

	* gmime/internet-address.c (decode_mailbox): Pass name->len to
	g_utf8_validate() rather than -1 since we have the length. Might
	save us some cycles.
	(internet_address_get_type): Register this class as being
	abstract.

	* gmime/gmime-parser.c (parser_init): Initialize the headerbuf and
	rawbuf buffers to something more reasonable.

2008-09-14  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.3.10

2008-09-13  Jeffrey Stedfast  <fejj@novell.com>

	Epic optimization hack-a-thon which resulted in another ~5%
	performance improvement.

	* gmime/gmime-message.c (g_mime_message_init): Instead of using a
	hash table for our recipients table, simply use an array since we
	can easily look them up using the GMimeRecipientType as an array
	index. Eliminates unnecessary memory and, most importantly,
	performance overhead.
	(message_add_recipients_from_string): Optimized quite a bit by
	using the new internet_address_list_append/prepend functions.

	* gmime/gmime-utils.c (decode_addrspec): Updated for
	g_mime_decode_domain() changes.

	* gmime/gmime-parse-utils.c (g_mime_decode_domain): Changed the
	API a bit to prevent the need for string duplication/g_free
	overhead in our callers.

	* gmime/gmime-parser.c (parser_fill): Keep track of the stream
	offset ourselves.

	* gmime/internet-address.c (internet_address_list_append): Renamed
	from internet_address_list_concat() and optimized slightly.
	(internet_address_list_prepend): New function that prepends the
	contents of a list to another list.
	(_internet_address_set_name): New internal function which avoids
	emitting a "changed" event in an attempt to enhance the
	performance of internet_address_list_parse().
	(_internet_address_list_add): Same idea as
	_internet_address_set_name(), but also takes ownership of the
	InternetAddress' ref to avoid unnecessary ref/unref overhead.
	(internet_address_mailbox_new): Instead of calling
	internet_address_mailbox_set_addr(), set it manually to avoid a
	g_signal_emit().
	(internet_address_group_new): Call _internet_address_set_name() to
	avoid signal emission.
	(internet_address_group_add_member): Now returns the index of the
	newly added member.
	(decode_mailbox): Avoid string duplication of the addrspec token,
	use the new g_mime_decode_domain() API to avoid unnecessary
	strdup/g_free overhead, and use _internet_address_set_name().
	(decode_address): Don't need to unref members anymore as the lists
	we add them to take ownership of the refs.

2008-09-12  Jeffrey Stedfast  <fejj@novell.com>

	I/O Optimization which improved performance by ~5%

	* gmime/gmime-parser.c (parser_fill): Now takes an 'atleast'
	argument which we use to decide whether we should bother calling
	read() or not. If we have more than 'atleast' bytes left in our
	buffer, we don't read.
	(parser_scan_content): Take advantage of the 'atleast' argument to
	parser_fill().
	(parser_step_headers): Same.
	(parser_step_from): Here too.
	(parser_skip_line): And here.

2008-09-08  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-message.c (message_add_recipients_from_string):
	Prepend, append, or set the addresses in the recipients list
	depending on the new 'action' argument.
	(process_header): Pass along our 'action' to
	message_add_recipients_from_string().
	(message_prepend_header): Pass PREPEND as the action argument to
	process_header().
	(message_append_header): Pass APPEND as the action argument to
	process_header().
	(message_set_header): Pass SET as the action argument to
	process_header().

	* gmime/gmime-header.c (g_mime_header_list_set): If there is more
	than a single header with the specified name, remove them.

2008-09-07  Jeffrey Stedfast  <fejj@novell.com>

	* util/memchunk.[c,h]: Removed. No longer used.

2008-09-07  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.3.9

2008-09-07  Jeffrey Stedfast  <fejj@novell.com>

	New feature needed by the Bongo project (seems DBMail could also
	use this feature as they currently have a hack-around).

	* tests/test-mbox.c: Output header offsets as well so that they
	can be checked.

	* gmime/gmime-parser.c (g_mime_parser_get_headers_begin): New
	function to get the beginning offset of the message headers.
	(g_mime_parser_get_headers_end): Same, but for the end offset.
	(parser_step_headers): Only set priv->headers_begin and
	priv->headers_end if they are set to -1, we don't want to
	overwrite this value if parsing a subpart.
	(parser_step): Reset priv->headers_begin and priv->headers_end
	when appropriate.

2008-09-07  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-charset.c (g_mime_charset_map_init): Create the
	iconv_charsets hashtable using g_hash_table_new_full() so that we
	don't have to call g_hash_table_foreach() before destroying it in
	g_mime_charset_map_shutdown().

	* gmime/gmime-gpg-context.c: Use g_hash_table_new_full() so that
	we don't have to g_hash_table_foreach() to remove all user-id
	hints before destroying the user-id hint hashtable.

	* util/cache.c: Updated to use GSlice instead of a custom MemChunk
	allocator.

	* util/gtrie.c: Updated to use GSlice instead of my custom
	MemChunk. The main purpose for using the MemChunk allocator had
	been ease of cleanup, but it made it more difficult to use GTrie
	elsewhere.

	* examples/basic-example.c: Updated for the foreach() changes.

	* gmime/gmime-multipart.c (g_mime_multipart_foreach): Changed to
	be recursive. The callback function signature has changed a bit to
	be more useful as well by providing the parent MIME object.

	* gmime/gmime-message.c (g_mime_message_foreach): Same.

2008-09-06  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-multipart.c (g_mime_multipart_get_subpart_from_content_id):
	Multiparts can have Content-Id's too.

2008-09-06  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-part.c (g_mime_part_set_content_object): Made
	virtual, seems like it could be useful.

	* gmime/gmime-object.c (set_content_type): Do not serialize the
	GMimeContentType object to the headers. This is done elsewhere
	now.
	(g_mime_object_set_content_type): After calling the virtual
	set_content_type(), serialize the GMimeContentType object to the
	headers.

	* gmime/gmime-multipart-encrypted.c: Get rid of the protocol
	member variable, it's not needed.

	* gmime/gmime-multipart-signed.c: Get rid of the protocol and
	micalg member strings, these aren't needed - just request them
	from the content_type.

	* gmime/gmime-multipart.c: Get rid of boundary member variable, we
	can just request it from the ContentType object. No sense
	duplicating strings.

	* gmime/gmime-message.c (message_get_headers): Don't write out a
	MIME-Version header if a Content-Type header doesn't exist.

	* gmime/gmime-parser.c (parser_content_type): Instead of returning
	a GMimeContentType object, we now return a simpler ContentType
	struct so that we don't waste time processing more of the header
	than we need to, all we need is the type/subtype to figure out
	which MIME object type to instantiate.
	(parser_scan_message_part): After finishing parsing the object,
	destroy the content_type ourselves.
	(parser_construct_leaf_part): Updated. Don't set a
	GMimeContentType on the GMimeObject unless the Content-Type header
	doesn't exist (if it does exist, then appending the Content-Type
	header will cause one to be created and set on the GMimeObject).
	(parser_construct_multipart): Updated.

	* gmime/gmime-content-type.c (g_mime_content_type_new_from_string):
	Use the new g_mime_parse_content_type() utility function and set
	the parsed string values on the new GMimeContentType object
	directly to avoid unnecessary strdup()ing.

	* gmime/gmime-parse-utils.c (g_mime_parse_content_type): New
	function to parse the simple type/subtype Content-Type form.

2008-08-31  Jeffrey Stedfast  <fejj@novell.com>

	* README: Bumped version

	* configure.in: Bumped version to 2.3.8

2008-08-31  Jeffrey Stedfast  <fejj@novell.com>

	* mono/Multipart.custom: GMime.Multipart now implements the IList
	interface.

	* gmime/gmime-message.c (g_mime_message_add_recipients_from_string):
	Removed. This function was a kludge - use
	g_mime_message_get_recipients() and then add recipients you have
	manually instead.

	* gmime/gmime-multipart.c (g_mime_multipart_clear): New method.
	(g_mime_multipart_contains): Same.
	(g_mime_multipart_index_of): Same.

2008-08-31  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-parser.c (parser_scan_multipart_subparts): Updated
	for GMimeMultipart API changes.

	* gmime/gmime-multipart-signed.c (sign_prepare): Updated for
	GMimeMultipart API changes.
	(g_mime_multipart_signed_sign): Same.

	* gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_encrypt):
	Updated for GMimeMultipart API changes.

	* gmime/gmime-multipart.c (g_mime_multipart_add): Renamed from
	g_mime_multipart_add_part(). The "_part" seemed superfluous.
	(g_mime_multipart_remove): Same.
	(g_mime_multipart_remove_at): Same.
	(g_mime_multipart_insert): Renamed from
	g_mime_multipart_add_part_at().
	(g_mime_multipart_get_count): Renamed to be more obvious.

2008-08-31  Jeffrey Stedfast  <fejj@novell.com>

	* gmime/gmime-message-partial.c (g_mime_message_partial_new): Need
	to unref the content_type after setting it on the object.

	* gmime/gmime-message-part.c (g_mime_message_part_new): Need to
	unref the content_type after setting it on the object.

	* gmime/gmime-multipart.c (g_mime_multipart_new): Need to unref
	the content_type after setting it on the object.
	(g_mime_multipart_new_with_subtype): Same.

	* gmime/gmime-multipart-signed.c (g_mime_multipart_signed_sign):
	Need to unref the content_type after setting it on the
	object. Also need to set mps->protocol /before/ we use it.

	* gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_new):
	Need to unref the content_type after setting it on the object.
	(g_mime_multipart_encrypted_encrypt): Same.
