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.