summaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog9113
1 files changed, 9113 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..9f21a34
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,9113 @@
+2015-01-23 Sunghyun Kwon <sh0701.kwon@samsung.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_set_mode): Added the condition
+ (GPG_CTX_MODE_SIGN_ENCRYPT)
+
+2013-02-19 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.15
+
+2013-02-19 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-filter-html.c (html_convert): Fixed to convert the
+ last line of input even if it doesn't end with a \n.
+
+2013-02-18 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.14
+
+2013-02-18 Jeffrey Stedfast <fejj@gnome.org>
+
+ * util/url-scanner.c (url_addrspec_start): Fixed the logic to
+ actually scan for the beginning of the mailbox.
+
+2012-12-09 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.13
+
+2012-11-26 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-header.c (g_mime_header_iter_first): Make sure the
+ list isn't empty.
+ (g_mime_header_iter_last): Same.
+
+2012-11-23 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-header.c (g_mime_header_list_prepend): Prepend the
+ header to the list, don't *append* it. Oops.
+ (g_mime_header_list_clear): Don't forget to reset the linked list
+ so that it doesn't contained free'd nodes.
+
+2012-11-02 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.12
+
+2012-10-27 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-stream-filter.c (stream_read): Initialize presize to
+ READ_PAD instead of READ_SIZE to prevent potential buffer
+ underruns.
+
+2012-10-20 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-filter-gzip.c (gunzip_filter): Apparently
+ Z_BUF_ERROR isn't actually an error unless there is input
+ available. Thanks to Pavlo <devgs@ukr.net> for this patch.
+
+2012-10-19 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-parser.c (parser_push_boundary): Don't use strcmp to
+ check if the boundary is an mbox boundary, use a direct pointer
+ comparison so that we can handle Content-Type boundary parameters
+ with a value of "From "
+
+2012-10-19 Jeffrey Stedfast <jeff@xamarin.com>
+
+ * gmime/gmime-parser.c (parser_step_headers): Don't assume that
+ the first non-header line we find indicates the start of the
+ content unless we've already gotten some basic headers.
+
+ Fix for bug #686223.
+
+2012-10-18 Jeffrey Stedfast <jeff@xamarin.com>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.11
+
+2012-09-12 Jeffrey Stedfast <jeff@xamarin.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Unref the
+ certificate after adding it to the list (adding it to the list
+ refs it).
+
+ * gmime/gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_decrypt): If the 'result' out param is
+ null, unref the GMimeDecryptResult to avoid leaking.
+
+2012-08-13 Jeffrey Stedfast <jeff@xamarin.com>
+
+ * gmime/gmime-utils.c (tokenize_rfc2047_phrase): Don't forget to
+ initialize 'ascii' to TRUE.
+
+2012-08-05 Jeffrey Stedfast <jeff@xamarin.com>
+
+ * gmime/gmime-stream-pipe.c (stream_flush): Pipes and sockets
+ cannot be fsync()'d, so don't even try!
+
+2012-08-05 Jeffrey Stedfast <jeff@xamarin.com>
+
+ * gmime/gmime-utils.c (rfc2047_token_new_encoded_word): Make sure
+ to properly handle broken encoded-word tokens in the form:
+ =?charset?q?=.
+
+ Fixes the g_malloc abort() in bug #679388
+
+2012-08-05 Jeffrey Stedfast <jeff@xamarin.com>
+
+ * gmime/gmime-multipart-signed.c (check_protocol_supported): Oops,
+ need to compare against xsupported in the second string compare.
+
+ Fixes bug #674032
+
+2012-06-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.10
+
+2012-06-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/Makefile.am: Always build gmime-gpg-context.[c,h] and
+ gmime-pkcs7-context.[c,h]
+
+ * gmime/gmime-gpg-context.c: Armor internals with #ifdef
+ ENABLE_CRYPTOGRAPHY so that if crypto is disabled, only the
+ skeletal API is built.
+
+ * gmime/gmime.h: Include gmime-pkcs7-context.h
+
+ Fixes bug #676692.
+
+2012-06-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c (rfc2047_encode_get_rfc822_words): Use
+ is_blank() instead of is_lwsp() so that we only treat space and
+ tab as word delimiters (we want to rfc2047 encode \r's and
+ \n's). Check for ctrl characters when deciding what the type and
+ encoding of the word is.
+
+2012-06-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c (rfc2047_encode_get_rfc822_words): When
+ breaking up really long atom tokens, change the word type to
+ RFC2047 so that we encode them, thus preventing forced header
+ folding which cannot be unmunged.
+ (header_fold): Fixed for cases where the first word in a header is
+ 68 chars. (Note: this fix is largely unnecessary due to the above fix)
+
+2012-06-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-message.c: When setting a header, make sure to
+ always clear the header list cache of the toplevel mime_part as
+ well.
+
+2012-06-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-param.c (rfc2184_param_new): Only decode the charset
+ and lang if the parameter is actually encoded. Thanks to Peter
+ Bloomfield for this patch.
+
+2012-06-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Keep track of
+ DECRYPTION_OKAY status.
+ (gpg_decrypt): Only return NULL if decryption failed (e.g. we
+ didn't get a DECRYPTION_OKAY status).
+
+ Fixes bug #677088.
+
+2012-06-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * docs/reference/building.sgml: Updated docs.
+
+ Fixes bug #676341
+
+2012-04-22 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.9
+
+2012-04-22 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-multipart-signed.c (g_mime_multipart_signed_verify):
+ Match protocols like application/x-pkcs7-signature, too.
+
+ Fixes bug #674032.
+
+2012-04-19 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.8
+
+2012-04-12 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-parser.c (parser_scan_headers): Make sure to
+ initialize 'start' before using it to calculate headers_end in the
+ case where parser_fill() failed.
+
+ Fixes bug #673493.
+
+2012-03-10 Daniel Gillmor <dkg@fifthhorseman.net>
+
+ * mono/gmime-sharp.dll.config.in: Fixed missing .so number.
+
+ Fixes bug #671785.
+
+2012-03-09 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.7
+
+2012-03-09 Daniel Gillmor <dkg@fifthhorseman.net>
+
+ * gmime/gmime-certificate.h: Remove the trailing comma from the
+ last enum item to silence gcc -pedantic warnings.
+
+ * gmime/gmime-message.h: Same.
+
+2012-03-09 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-parser.c (parser_step_headers): Be lenient with
+ "From " lines found in message headers. Fixes bug #671680.
+
+2012-02-20 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.6
+
+2012-02-20 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-message.c (multipart_guess_body): Fixed
+ multipart/signed logic.
+
+2012-02-20 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-common.c (g_mime_strdup_trim): Optimized.
+
+ * gmime/gmime-parser.c (header_parse): Use g_mime_strdup_trim()
+ instead of reimplementing the same logic here.
+
+2012-02-20 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-parser.c: Instead of filtering Content-* headers
+ inside GMimeObject subclasses, filter them in the parser. This way
+ header fetching works as expected in subparts which might have
+ non-standard headers (X-* and whatnot).
+
+2012-02-19 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-encodings.c (g_mime_content_encoding_from_string):
+ Match non-standard encodings: 7-bit, 8-bit, and x-uue (the
+ standard names for these are 7bit, 8bit, and x-uuencode).
+
+2012-02-19 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-common.c (g_mime_strdup_trim): New function that
+ optimizes g_strstrip combined with g_strdup in both speed and
+ memory usage (g_strstrip won't shrink the size of the dup'd
+ memory).
+
+2012-02-18 Jeffrey Stedfast <fejj@gnome.org>
+
+ * configure.ac: Add a --enable-smime flag which defaults to "no".
+
+2012-02-18 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.5
+
+2012-02-18 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-parser.c (parser_scan_message_part): Make sure that
+ a boundary doesn't appear before we start scanning for the
+ headers.
+
+2012-02-18 Jeffrey Stedfast <fejj@gnome.org>
+
+ * src/uuencode.c:
+ * src/uudecode.c: Moved to examples/
+
+2012-02-17 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-gpg-context.c (gpg_verify): In cases where gpg does
+ not exit with code 0, only set the GError when we've gotten no
+ signer information from gpg (otherwise we return the list of
+ signers, which will presumably include why the verification failed
+ in the status of each signer). Fixes bug #668085.
+
+2012-02-17 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-part-iter.c: Fixed to behave the same as IMAP and
+ also to actually work.
+
+2012-02-16 Jeffrey Stedfast <jeff@xamarin.com>
+
+ * mono/Multipart.custom: Fixed the binding for Multipart.Count.
+
+2012-02-04 Jeffrey Stedfast <fejj@gnome.org>
+
+ * configure.ac: Added --with-gacdir to fix bug #667072
+
+2012-01-11 Jeffrey Stedfast <fejj@gnome.org>
+
+ * mono/Makefile.am: Fixed up to more closely match the gtk-sharp
+ build.
+
+ * mono/gmime-sharp.pc.in: Fixed to more closely match gtk-sharp.
+
+2012-01-11 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-pkcs7-context.c: Fixed some switch statements to
+ include a 'default' code path, fixing some compiler
+ warnings. Fixes bug #667684.
+
+2012-01-09 Ionut Biru <ibiru@archlinux.org>
+
+ * gmime/gmime-pkcs7-context.c: Fix compilation when S/MIME is not
+ enabled.
+
+2012-01-08 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.4
+
+2012-01-08 Jeffrey Stedfast <fejj@gnome.org>
+
+ Fix for bug #667070
+
+ * configure.ac: Fixed Docbook checks for the html and pdf converters.
+
+ * docs/tutorial/Makefile.am: Use the DB2HTML and DB2PDF variables.
+
+2012-01-05 Jeffrey Stedfast <jeff@xamarin.com>
+
+ Fixes for bug #667137.
+
+ * tests/Makefile.am: If any tests fail, exit with an error to
+ abort make.
+
+ * tests/testsuite.c (testsuite_exit): Simply return
+ total_errors.
+
+2012-01-05 Jeffrey Stedfast <fejj@gnome.org>
+
+ Fixes for bug #667072.
+
+ * mono/Makefile.am: Install to $(libdir) instead of $(prefix)/libdir.
+
+ * mono/gmime-sharp.pc.in: Set libdir to @libdir@
+
+2012-01-05 Jeffrey Stedfast <fejj@gnome.org>
+
+ * src/Makefile.am: Rename uuencode/uudecode to
+ gmime-uuencode/decode to prevent naming collisions with the GNU
+ Sharutils tools. Fixes bug #667073.
+
+2012-01-05 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Fixed returns
+ without a return value. Also fixed up some error-handling.
+
+2012-01-05 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c (rfc2047_decode_tokens): Fixed a memory leak.
+
+2011-12-23 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.3
+
+2011-12-18 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c (quoted_decode): Made more robust and also
+ modified to keep state (e.g. for use when triplets span across
+ multiple encoded-word tokens).
+ (tokenize_rfc2047_phrase): Tokenizes a rfc822 phrase header for
+ later processing.
+ (tokenize_rfc2047_text): Tokenizes a rfc822 unstructured text
+ header for later processing.
+ (rfc2047_decode_tokens): Merge and decode rfc2047 tokens,
+ converting the decoded text into UTF-8.
+ (g_mime_utils_header_decode_phrase): Rewritten to use the above
+ functions.
+ (g_mime_utils_header_decode_text): Same.
+
+2011-12-18 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c (charset_convert): Don't count the
+ terminating nul character in the returned string length.
+
+2011-12-17 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.2
+
+2011-12-15 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-iconv-utils.c (g_mime_iconv_strndup): Same.
+
+ * gmime/gmime-filter-charset.c (flter_complete): Same as
+ charset_convert().
+
+ * gmime/gmime-utils.c (charset_convert): Make sure the output
+ buffer is large enough when flushing the conversion descriptor.
+
+2011-12-15 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime.c (g_mime_init): Don't initialize the crypto types
+ unless crypto was enabled in the build.
+
+2011-11-06 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.1
+
+2011-11-05 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_decrypt): Need to decode the content
+ of the application/octet-stream part containing the encrypted
+ payload as it may have a non-7bit Content-Transfer-Encoding.
+
+2011-11-05 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime.c (g_mime_init): Register all GObject-based types
+ to prevent race conditions in multi-threaded apps.
+
+2011-08-27 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.6.0
+
+2011-08-14 Jeffrey Stedfast <fejj@gnome.org>
+
+ * mono/*.custom: Simplified the GetEnumerator() implementations.
+
+ * mono/HeaderEnumerator.cs: New IEnumerator class returned by
+ HeaderList.GetEnumerator(). Wraps HeaderIter, providing a more
+ C#-like experience.
+
+2011-08-14 Jeffrey Stedfast <fejj@gnome.org>
+
+ * mono/GMime.metadata: Rename AppendHeader() to Append(),
+ PrependHeader() to Prepend(), RemoveHeader() to Remove(), etc.
+
+ * mono/HeaderList.custom: Instead of having
+ GetHeader()/SetHeader(), manually bind this as an indexer.
+
+ * gmime/gmime-header.c (g_mime_header_list_clear): New function
+ to clear all headers.
+ (g_mime_header_list_contains): New function added mostly for
+ completeness in the C# binding.
+
+2011-08-14 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.5.10
+
+2011-08-14 Jeffrey Stedfast <fejj@gnome.org>
+
+ * mono/GMime.metadata (PartBase): Rename to Entity to be more
+ consistent with MIME terminology and removed more convenience
+ methods that really only make sense in the C API.
+ (g_mime_object_new_type): Removed, there's no easy way to map this
+ to managed.
+ (g_mime_object_new): Removed, there's no easy way to map this
+ to managed.
+
+2011-08-14 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-part-iter.c: Updated to be more consistent with IMAP
+ part specifiers.
+
+2011-08-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-part-iter.c: New class for iterating over a tree of
+ GMimeObjects. Fixes bug #652012.
+
+2011-08-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-multipart.c (g_mime_multipart_replace): New
+ convenience function to replace a mime part at a specified
+ position.
+
+2011-08-08 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.5.9
+
+2011-07-17 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c (charset_convert): Don't skip validation of
+ UTF-8 text.
+
+2011-07-17 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c (charset_convert): Handle ERANGE the same as
+ EILSEQ.
+
+ * gmime/gmime-filter-charset.c (filter_filter): Handle ERANGE the
+ same as EILSEQ.
+
+ * gmime/gmime-charset.c (g_mime_charset_map_init): Improved logic
+ for Win32 (and even Linux) systems. Don't rely on setlocale().
+
+2011-06-15 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-parser.c: Added new state, MESSAGE_HEADERS, which
+ behaves the same as HEADERS but is only ever set when we are
+ parsing the toplevel GMimeMessage object.
+ (parser_step_headers): Be slightly more strict in handling
+ malformed headers in the MESSAGE_HEADERS state so that trying to
+ parse non-message streams fails (e.g. if someone tries to parse a
+ jpeg stream).
+
+2011-06-15 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-gpg-context.c: Define nfds_t on OSX.
+
+2011-06-10 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.5.8
+
+2011-06-09 Jeffrey Stedfast <fejj@gnome.org>
+
+ Fix for bug #652056
+
+ * gmime/gmime-param.c (decode_value): If STRICT_PARSER isn't
+ defined, don't require the value to start with a valid character.
+
+2011-06-08 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+
+ Fix for bug #651826
+
+ * gmime/gmime-gpg-context.c
+ (g_mime_gpg_context_[g,s]_set_use_agent): New functions to allow
+ the invoker to declare that they expect there to be a functioning
+ gpg-agent, and want gpg to talk to it for any needed credentials.
+
+2011-06-08 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-gpg-context.c: If building on Apple, force the use
+ of our own implementation of poll() because Apple's poll() is
+ broken on some versions of MacOS.
+
+2011-03-18 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.5.7
+
+2011-03-17 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-multipart-encrypted.c: Updated for crypto API
+ changes.
+
+ * gmime/gmime-multipart-signed.c: Updated for crypto API changes.
+
+ * gmime/gmime-crypto-context.c (g_mime_crypto_context_verify): Now
+ returns a GMimeSignatureList, the 'details' string was worthless
+ for GpgMe backend.
+ (GMimeDecryptResult): This is now a GObject.
+
+ * gmime/gmime-pkcs7-context.c: Updated for crypto API changes.
+
+ * gmime/gmime-gpg-context.c: Updated for crypto API changes.
+
+ * gmime/gmime-certificate.[c,h]: New source files implementing
+ Certificate and CertificateList classes.
+
+ * gmime/gmime-signature.[c,h]: New source files implementing
+ Signature and SignatureList classes.
+
+2011-03-16 Jeffrey Stedfast <fejj@novell.com>
+
+ * mono/StreamWrapper.cs (Write): Implemented.
+
+ * mono/CryptoRecipientCollection.cs:
+ * mono/SignerCollection.cs: New collections for Signers and
+ CryptoRecipients.
+
+ * mono/SignatureValidity.custom:
+ * mono/DecryptionResult.custom: Don't return IEnumerators for
+ signers/recipients, return the appropriate Collections instead.
+
+2011-03-15 Jeffrey Stedfast <fejj@novell.com>
+
+ * mono/SignatureValidity.custom:
+ * mono/DecryptionResult.custom:
+ * mono/CryptoRecipient.custom:
+ * mono/Signer.custom: New custom sources implementing enumerators
+ for Signers and Recipients.
+
+2011-03-14 Jeffrey Stedfast <fejj@novell.com>
+
+ * configure.ac: Check for glib-sharp-2.0 instead of gtk-sharp-2.0
+ since we really only depend on glib-sharp. Also check for gapi-2.0
+ via pkgconfig.
+
+2011-03-07 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.5.6
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_signer_info): Treat
+ EXPSIG, EXPKEYSIG, and REVKEYSIG the same as GOODSIG/BADSIG status
+ messages in that all of them denote a new signer info.
+
+2011-03-04 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.5.5
+
+2011-03-04 Jeffrey Stedfast <fejj@novell.com>
+
+ Implements features requested in bug #641841 and #641320.
+
+ * gmime/gmime-crypto-context.h (GMimeCryptoHash): Reordered to be
+ identical to gnupg's listing.
+ (GMimeCryptoPubKeyAlgo): Same.
+
+ * gmime/gmime-crypto-context.c (g_mime_decryption_result_[g,s]et_cipher):
+ New functions to get/set the cipher algorithm used.
+ (g_mime_decryption_result_[g,s]et_mdc): New functions to get/set
+ the mdc digest algorithm used.
+
+ * gmime/gmime-gpg-context.c (gpg_hash_algo): Removed, no longer
+ needed.
+ (gpg_pubkey_algo): Same.
+ (gpg_ctx_parse_status) :Parse the DECRYPTION_INFO status to get
+ the cipher and mdc algorithms used.
+ (gpg_decrypt): Set the cipher and mdc values on the
+ GMimeDecryptionResult.
+
+ * gmime/gmime-pkcs7-context.c (pkcs7_pubkey_algo): Removed, no
+ longer needed.
+ (pkcs7_hash_algo): Same.
+
+2011-03-04 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_signer_info): Make sure
+ to extract the pubkey_algo, hash_algo, sig_class, sig_expires, and
+ return-code values for ERRSIG.
+
+2011-03-04 Jeffrey Stedfast <fejj@novell.com>
+
+ Implemented bug #641319.
+
+ * gmime/gmime-crypto-context.c (g_mime_crypto_recipient_*): New
+ set of functions for manipulating a GMimeCryptoRecipient.
+ (g_mime_decryption_result_*): New set of functions to manipulate a
+ GMimeDecryptionResult
+ (g_mime_crypto_context_decrypt): Now returns a
+ GMimeDecryptionResult.
+
+ * gmime/gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_decrypt): Updated for API changes.
+
+ * gmime/gmime-pkcs7-context.c (pkcs7_decrypt): Updated for API
+ changes.
+
+ * gmime/gmime-gpg-context.c (gpg_decrypt): Updated for API
+ changes.
+
+2011-03-04 Jeffrey Stedfast <fejj@novell.com>
+
+ API cleanup as well as preparing for the possibility of a
+ multi-protocol CryptoContext.
+
+ * gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_encrypt):
+ Updated to use new APIs for getting the encryption protocol.
+ (g_mime_multipart_encrypted_decrypt): Same.
+
+ * gmime/gmime-multipart-signed.c (g_mime_multipart_signed_sign):
+ Updated to use new APIs for getting the signature protocol.
+ (g_mime_multipart_signed_verify): Same.
+
+ * gmime/gmime-crypto-context.c (g_mime_crypto_context_get_*_protocol):
+ New methods for getting the crypto protocol strings used by
+ multipart/encrypted and multipart/signed parts.
+
+ * gmime/gmime-pkcs7-context.c (pkcs7_get_*_protocol): Implemented.
+
+ * gmime/gmime-gpg-context.c (gpg_get_*_protocol): Implemented.
+
+2011-03-03 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-pkcs7-context.c (pkcs7_stream_seek): Added.
+
+ * gmime/gmime.c (g_mime_init): Initialize gpgme.
+
+2011-02-08 Jeffrey Stedfast <fejj@novell.com>
+
+ Implements feature request in bug #635663.
+
+ * gmime/gmime-crypto-context.c (g_mime_signer_[g,s]et_sig_version):
+ New functions to access new signature version member.
+ (g_mime_signer_[g,s]et_sig_class): New functions to access new
+ signature class member.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_signer_info): Extract
+ the signature class and version tokens.
+
+2011-02-08 Jeffrey Stedfast <fejj@novell.com>
+
+ * PORTING: Updated docs.
+
+ * mono/GMime.metadata: Fixed up for the new decrypt API.
+
+ * gmime/gmime-message.c (multipart_guess_body): Updated. We can no
+ longer descend into the decrypted part because it is no longer
+ cached.
+
+ * gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_decrypt):
+ Now takes a GMimeSignatureValidity argument and no longer caches
+ the decrypted mime part/validity.
+ (g_mime_multipart_encrypted_get_signature_validity): Removed.
+ (g_mime_multipart_encrypted_encrypt): Don't cache the input part
+ as the decrypted part.
+
+2011-01-22 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_signer_info): Parse the
+ ERRSIG's return code, fixes bug #638605.
+
+ * gmime/gmime-crypto-context.h: Added UNSUPP_ALGO error value.
+
+2011-01-22 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-stream-mem.c (stream_write): Correctly calculate the
+ end boundary of the stream when bound_end is -1.
+
+2010-12-05 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.ac: Bumped version to 2.5.4
+
+2010-11-29 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/internet-address.c (decode_address): Handle edge cases
+ where inptr reaches the end of the input string prematurely due to
+ a malformed address.
+
+2010-11-29 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #635409.
+
+ * gmime/gmime-pkcs7-context.c (pkcs7_get_validity): Reworked the
+ logic to calculate the signer status. Also dropped
+ GMimeSignatureStatus logic.
+
+ * gmime/gmime-gpg-context.c (gpg_verify): Removed the (broken)
+ logic of calculating a GMimeSignatureStatus.
+ (gpg_decrypt): Same.
+ (gpg_ctx_parse_signer_info): Updated for the g_mime_signer_new()
+ API change.
+
+ * gmime/gmime-crypto-context.c (g_mime_signature_validity_new): No
+ longer initializes a GMimeSignatureStatus member.
+ (g_mime_signature_validity_get_status): Removed.
+ (g_mime_signature_validity_set_status): Removed.
+ (g_mime_signer_new): Now takes a GMimeSignerStatus so that I could
+ get rid of the default NONE status.
+
+ * gmime/gmime-crypto-context.h (GMimeSignatureStatus): Removed.
+
+2010-11-24 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #635661.
+
+ * gmime/gmime-crypto-context.c (g_mime_signer_new): Initialize
+ pubkey_algo and hash_algo.
+ (g_mime_signer_[g,s]et_pubkey_algo): Implemented.
+ (g_mime_signer_[g,s]et_hash_algo): Renamed from [g,s]et_hash().
+
+ * gmime/gmime-crypto-context.h (GMimeCryptoPubKeyAlgo): Defined
+ enum.
+
+ * gmime/gmime-pkcs7-context.c (pkcs7_get_validity): Record the
+ hash and pubkey algorithms used in the GMimeSigner.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_signer_info): Record
+ the pubkey algorithm used by the signer.
+
+2010-11-22 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_encrypt):
+ Now takes a hash algorithm argument which it passes along to
+ g_mime_crypto_context_encrypt().
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_get_argv): When signing and
+ encrypting, pass the digest algorithm to gpg on the command-line.
+ (gpg_encrypt): Set the hash id on the GpgCtx.
+
+ * gmime/gmime-crypto-context.c (g_mime_crypto_context_encrypt):
+ Now takes a hash algorithm argument.
+
+2010-11-22 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #635492.
+
+ * gmime/gmime-gpg-context.c (gpg_hash_from_id): New function
+ mapping the numeric hash id's that gpg uses to GMimeCryptoHash
+ ids.
+ (gpg_ctx_parse_signer_info): Extract the hash algorithm used by
+ the signer.
+ (gpg_ctx_parse_status): Updated to use gpg_hash_from_id().
+
+ * gmime/gmime-crypto-context.c (g_mime_signer_set_hash): New
+ function to set the hash algorithm used by the signer.
+ (g_mime_signer_get_hash): New function to get the hash algorithm
+ used by the signer.
+
+2010-11-22 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #635491.
+
+ * gmime/gmime-crypto-context.[c,h]: Renamed from
+ gmime-cipher-context.[c,h].
+
+2010-11-21 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #635407.
+
+ * gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_decrypt):
+ Updated error messages to be more consistent.
+
+ * gmime/gmime-multipart-signed.c (g_mime_multipart_signed_verify):
+ Make sure to set an error in all cases returning NULL.
+
+2010-11-21 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #635405.
+
+ * gmime/gmime-cipher-context.c (g_mime_signer_get_*): These
+ functions all now take a const GMimeSigner *.
+
+2010-11-19 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #635152
+
+ * gmime/gmime-gpg-context.c (GpgCtx): No longer has a sigfile
+ member. Instead contains a sigstream and passwd_fd is now renamed
+ to secret_fd and used for both sending gpg the user's passwd as
+ well as for sending gpg the digital signature when verifying.
+ (gpg_ctx_new): Updated for the new struct members.
+ (gpg_ctx_set_sigstream): Replaces gpg_ctx_set_sigfile().
+ (gpg_ctx_free): Updated for the new struct members.
+ (gpg_ctx_get_argv): Modify our --verify command-line so that we
+ can pas gpg the digital signature without first writing it to
+ disk. Also modified to return char** instead of a GPtrArray to
+ simplify things.
+ (gpg_ctx_op_start): Modified to also create more pipes in VERIFY
+ mode.
+ (gpg_ctx_op_step): Modified to stream the digital signature to
+ gpg.
+ (gpg_verify): Don't write the digital signature to disk - instead,
+ we now stream it directly to gpg.
+
+2010-10-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c (g_mime_message_get_body): New function to
+ try and guess which part (or multipart/alternative) represents the
+ message body.
+
+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-06 Jeffrey Stedfast <fejj@novell.com>
+
+ * configure.ac: Bump glib version requirement for
+ g_set_error_literal().
+
+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-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.ac: Bumped version to 2.5.3
+
+ * 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.ac: Bumped version to 2.5.2
+
+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 alloow
+ building without GnuPG or S/MIME support. Thanks to
+ pier11@operamail.com for this patch. Fixes bug #615343.
+
+ * 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-12 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #609700.
+
+ * configure.ac: Define ENABLE_SMIME if we find GpgMe.
+
+ * gmime/gmime-pkcs7-context.c: #ifdef out the GpgMe logic if we
+ are building without S/MIME support enabled.
+
+2010-02-07 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.5.1
+
+2010-01-31 Jeffrey Stedfast <fejj@novell.com>
+
+ * src/uudecode.c (uudecode): Just use fopen() to open fout instead
+ of using open() and then fdopen(). Fixes the code to work properly
+ on Windows.
+
+ * gmime/gmime-encodings.h (GMIME_UUENCODE_LEN): Fixed to prevent
+ possible buffer overflows.
+
+2010-01-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * configure.ac: Disabled strict-aliasing to work around subtle
+ bugs generated by gcc 4.4 when optimizations are enabled.
+
+2010-01-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-iconv-utils.c (g_mime_iconv_strndup): Cleaned up the
+ code a bit.
+
+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>
+
+ * 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-12-15 Jeffrey Stedfast <fejj@novell.com>
+
+ * Released 2.5.0 - it's time to get this out there for people to
+ play with.
+
+2009-11-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * configure.ac: 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.pc.in: Moved -lz -lnsl, etc into Libs.private. Fixes bug
+ #603273.
+
+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.
+
+ * 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-10-01 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-part.c (mime_part_encode): Shortcut if the currently
+ set encoding is within the acceptable constraints.
+
+ * docs/reference/gmime-sections.txt: Updated.
+
+ * mono/gmime-api.raw: Updated.
+
+2009-10-01 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-filter-best.h: Moved GMimeEncodingConstraint to
+ gmime-encodings.h
+
+ * gmime/gmime-object.c (g_mime_object_encode): New method to
+ calculate and set the best Content-Transfer-Encoding on a mime
+ part and its children.
+
+ * gmime/gmime-part.c (mime_part_encode): Use a GMimeFilterBest to
+ make magic happen.
+
+ * gmime/gmime-message.c (message_encode): Encode our toplevel mime
+ part object.
+
+ * gmime/gmime-multipart.c (multipart_encode): Recurse over our
+ children and encode them.
+
+ * gmime/gmime-multipart-signed.c (multipart_signed_encode):
+ Prevent our base class implementation from iterating over our
+ children.
+
+2009-09-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * build/vs2008/*: Made the Project/Solution tree much nicer.
+
+ * gmime/gmime-stream-gio.c: various warning fixes.
+ (set_errno): Fixes to build on Windows.
+ (gio_seekable_bound_end): This needs to return gint64, not
+ ssize_t.
+
+ * tests/test-streams.c: Use GDir instead of POSIX's dirent API and
+ also conditionally disable mmap tests.
+
+ * tests/test-mbox.c: Use GDir instead of POSIX's dirent API to aid
+ in portability to Windows.
+
+2009-09-03 Jeffrey Stedfast <fejj@novell.com>
+
+ * mono/gmime-sharp.dll.config.in: Simply target
+ libgmime-@GMIME_API_VERSION@.so since we are now properly
+ versioning libgmime-2.6.so
+
+2009-08-12 Jeffrey Stedfast <fejj@novell.com>
+
+ * 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-04 Jeffrey Stedfast <fejj@novell.com>
+
+ * configure.ac: Check for GpgME needed for S/MIME support.
+
+ * gmime/Makefile.am: Include gmime-pkcs7-context.[c,h] in the
+ build.
+
+ * gmime/gmime-pkcs7-context.[c,h]: New source files implementing
+ the pkcs7 cipher context using GpgMe.
+
+2009-07-04 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_signer_info): Updated
+ for API changes to the GMimeSigner stuff.
+
+ * gmime/gmime-cipher-context.c (g_mime_signer_new): Initialize the
+ newly added fields.
+ (g_mime_signer_free): Free the newly added fields.
+ (g_mime_signer_set_issuer_serial): New field accessor.
+ (g_mime_signer_get_issuer_serial): Same.
+ (g_mime_signer_set_issuer_name): Another new accessor.
+ (g_mime_signer_get_issuer_name): Same.
+ (g_mime_signer_set_email): And another...
+ (g_mime_signer_get_email): Same.
+ (g_mime_signer_set_sig_created): Renamed from
+ g_mime_signer_set_created().
+ (g_mime_signer_get_sig_created): Renamed from
+ g_mime_signer_get_created().
+ (g_mime_signer_set_sig_expires): Renamed from
+ g_mime_signer_set_expires().
+ (g_mime_signer_get_sig_expires): Renamed from
+ g_mime_signer_get_expires().
+ (g_mime_signer_set_key_created): New field accesor.
+ (g_mime_signer_get_key_created): Same.
+ (g_mime_signer_set_key_expires): Same.
+ (g_mime_signer_get_key_expires): Same.
+
+2009-07-02 Stanislav Brabec <sbrabec@suse.cz>
+
+ * configure.ac: 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-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 cleanliness issue.
+ (stream_seek_cache_read): Cap the max cache size to G_MAXSIZE.
+
+2009-04-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-filter-best.h: Renamed GMimeBestEncoding to
+ GMimeEncodingConstraint to make this enum more clear as to what
+ it's intended purpose is.
+
+ * gmime/gmime-part.c: Updated.
+
+2009-04-29 Sankar P <sankar.curiosity@gmail.com>
+
+ * gmime.doap: Added new doap file to describe the project.
+
+2009-04-29 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-events.[c,h]: Don't require a GObject owner.
+
+ * gmime/gmime-message.c (g_mime_message_set_mime_part): Add a
+ mime_part_headers_changed listener.
+ (g_mime_message_finalize): Remove the listener.
+ (mime_part_headers_changed): Uncache the message header stream.
+ (message_get_headers): Removed hack.
+ (message_write_to_stream): Same.
+
+ * gmime/gmime-header.c (g_mime_header_list_set_stream): Emit a
+ changed event.
+ (g_mime_header_iter_set_value): Call set_stream() instead of
+ setting the stream to NULL ourselves. Also causes a changed event
+ to be emitted.
+ (g_mime_header_list_prepend): Same.
+ (g_mime_header_list_append): Here too.
+ (g_mime_header_list_set): And here.
+ (g_mime_header_list_remove): Same.
+
+2009-04-28 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-part.c (g_mime_part_get_best_content_encoding): New
+ helper function to calculate the most efficient
+ Content-Transfer-Encoding for a given mime-part.
+
+2009-04-28 Jeffrey Stedfast <fejj@novell.com>
+
+ * build/vs2008/config-win32.h.in: No longer has GMIME_*_VERSION
+ defines - these are all in gmime-version.h now.
+
+ * gmime/gmime-version.h.in: New template for generating
+ gmime-version.h
+
+ * gmime/gmime.h: #include gmime-version.h
+
+ * configure.ac: Renamed from configure.in. Now generates a
+ gmime/gmime-version.h header which contains a macro for checking
+ the GMime version at compile-time. Requested feature from the
+ Balsa guys.
+
+2009-04-26 Jeffrey Stedfast <fejj@novell.com>
+
+ * tests/test-streams.c: Updated to test GIO streams.
+
+ * gmime/gmime-stream-gio.c: New GMimeStream wrapper around GIO
+ streams.
+
+2009-04-26 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-session*.[c,h]: Removed.
+
+ * gmime/gmime-stream-pipe.[c,h]: New stream for pipes (where
+ seeking isn't allowed). Needed by GMimeGpgContext.
+
+ * gmime/gmime-gpg-context.c: Updated to use the new request_passwd
+ callback function instead of the GMimeSession.
+ (g_mime_gpg_context_set_auto_key_retrieve): New function for
+ disabling the auto-key-retrieve functionality of gpg.
+ (g_mime_gpg_context_get_auto_key_retrieve): New function to get
+ the state of auto-key-retrieve enabledness.
+
+ * gmime/gmime-cipher-context.[c,h]: No longer references a
+ GMimeSession. Instead, we now have a GMimePasswordRequestFunc used
+ for prompting the user.
+
+2009-04-26 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-multipart-encrypted.c: Removed stub virtual method
+ overloads that did nothing but call the base class'
+ implementation.
+
+ * gmime/gmime-multipart-signed.c: Same.
+
+ * gmime/gmime-message-part.c (message_part_prepend_header):
+ Protect against setting Content-MD5 header since this is not
+ allowed.
+ (message_part_append_header): Same.
+ (message_part_get_header): Don't bother checking that the
+ requested header begins with "Content-", just pass it along to our
+ base class implementation to worry about.
+ (message_part_remove_header): Same.
+
+ * gmime/gmime-message-partial.c (message_partial_get_header):
+ Same.
+ (message_partial_remove_header): Here too.
+
+ * gmime/gmime-part.c (mime_part_remove_header): Same.
+
+2009-04-25 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message-partial.c (g_mime_message_partial_split_message):
+ Fixed to use gint64 variables for stream length/offsets.
+
+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 (to_list_changed, cc_list_changed):
+ (bcc_list_changed): Fixed callback signatures. Oops.
+
+ * gmime/gmime-events.c: Fixed list traversal. What was I thinking
+ before?
+
+2009-04-25 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parse-utils.h: Marked APIs as internal linkage only.
+
+ * gmime/gmime-common.h: Same.
+
+ * gmime/gmime-content-type.c: Use the new GMimeEvent API instead
+ of libgobject's g_signal API which is more than we need.
+
+ * gmime/gmime-disposition.c: Same.
+
+ * gmime/gmime-object.c: Updated to use the GMimeEvent API for
+ content-type and content-disposition.
+
+ * gmime/internet-address.c: Use the new GMimeEvent API instead of
+ our own.
+
+ * gmime/gmime-events.[c,h]: New source files implementing a simple
+ and performant event system needed internally within GMime. Based
+ on the event system that used to be in internet-address.c
+
+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-24 Jeffrey Stedfast <fejj@novell.com>
+
+ * build/vs2008/config-win32.h.in: New template to replace
+ config.h.win32 so that the version info gets autogenerated when I
+ make a new release. Makes it easier for me to keep it in sync.
+
+ * build/vs2008/gmime.vcproj: No longer defines the gmime version
+ variables on the command-line (as these are now part of config.h).
+
+2009-04-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * branched: now begins 2.5.x development
+
+ * configure.in: Updated.
+
+ * zentimer.h: Updated to hopefully build on Windows.
+
+ * gmime/Makefile.am: Rename lib name to gmime-2.6.
+
+ * gmime.pc.in: Renamed from gmime-2.4.pc.in.
+
+ * mono/gmime-sharp.pc.in: Renamed from gmime-sharp-2.4.pc.in.
+
+ * gmime/gmime-stream*.[c,h] (stream_length): Fixed to return a gint64
+
+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.
+
+ * gmime/gmime-part.c (g_mime_part_new): Need to unref the
+ content_type after setting it on the object.
+ (g_mime_part_new_with_type): Same.
+ (g_mime_part_set_content_header): Removed.
+ (g_mime_part_get_content_header): Removed.
+ (g_mime_part_set_filename): Don't need to pre-set a
+ ContentDisposition on the object if it is NULL,
+ g_mime_object_set_content_disposition_parameter() will do that for
+ us.
+
+ * gmime/gmime-parser.c (parser_construct_leaf_part): Instead of
+ going around the GMimeObject's back to set the content_type, call
+ g_mime_object_set_content_type().
+ (parser_construct_multipart): Same.
+
+ * gmime/gmime-object.c: Updated for GMimeContentType and
+ ContentDisposition GObjectification.
+ (g_mime_object_new): New function.
+
+ * gmime/gmime-disposition.c: Subclass GObject.
+
+ * gmime/gmime-content-type.c: Subclass GObject.
+
+ * gmime/internet-address.c: Got rid of unneeded vfuncs for the
+ changed event (which we don't want to be made public).
+
+2008-08-25 Jeffrey Stedfast <fejj@novell.com>
+
+ Making GMime's object-returning APIs consistent with Gtk+ which do
+ not ref returned objects.
+
+ * tests/test-headers.c (test_header_sync): No longer need to unref
+ the InternetAddressList object returned from
+ g_mime_message_get_recipients().
+
+ * tests/test-mbox.c (print_mime_struct): Since
+ g_mime_multipart_get_part() no longer returns a ref'd object, no
+ need to unref it once we're done with it.
+
+ * gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_decrypt):
+ Don't ref the returned decrypted part.
+
+ * gmime/gmime-message-part.c (g_mime_message_part_get_message):
+ Don't ref the returned message part.
+
+ * gmime/gmime-data-wrapper.c (g_mime_data_wrapper_get_stream):
+ Don't ref the returned stream.
+
+ * gmime/gmime-part.c (g_mime_part_get_content_object): Don't ref
+ the returned content object anymore.
+
+ * gmime/gmime-multipart.c (multipart_get_part): No longer ref the
+ returned part.
+ (g_mime_multipart_get_subpart_from_content_id): Same.
+
+ * gmime/gmime-message.c (g_mime_message_get_recipients): Don't ref
+ the list anymore.
+ (g_mime_message_get_mime_part): Don't ref the returned mime part
+ anymore.
+
+ * gmime/gmime-object.c (g_mime_object_get_content_type): Don't
+ return const anymore. We want app devs to be able to manipulate
+ the GMimeContentType directly.
+ (g_mime_object_get_content_disposition): Same idea here.
+
+ * gmime/internet-address.c (internet_address_group_get_members):
+ Don't ref the members list anymore.
+ (internet_address_list_get_address): Same.
+
+2008-08-24 Jeffrey Stedfast <fejj@novell.com>
+
+ * tests/test-headers.c (test_header_sync): Check that changes to
+ the GMimeContentType, GMimeDisposition, and InternetAddressList
+ objects cause a re-sync of the GMimeObject/GMimeMessage headers.
+
+ * gmime/internet-address.c (internet_address_list_add): Connect to
+ the added address's changed signal. Exposed by my new test-suite
+ code.
+ (internet_address_list_insert): Assert index >= 0, not < 0.
+ (internet_address_list_remove_at): Same.
+ (internet_address_list_get_address): Same.
+ (internet_address_list_set_address): Same.
+ (internet_address_list_to_string): Return NULL if the list is
+ empty. This makes it easier to keep the new behavior of keeping
+ around InternetAddressList objects in GMimeMessage the same as the
+ old behavior when all of the addresses have been removed.
+
+ * gmime/gmime-disposition.c (g_mime_content_disposition_set_params):
+ New function.
+
+ * gmime/gmime-content-type.c (g_mime_content_type_set_media_type):
+ New function.
+ (g_mime_content_type_set_media_subtype): Another new function.
+ (g_mime_content_type_set_params): New function.
+
+2008-08-19 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c: Updated to listen to changed events from
+ recipient lists and to update the headers when the lists change.
+
+ * gmime/internet-address.c: InternetAddress is now GObject with a
+ "changed" signal. Split out InternetAddressMailbox and
+ InternetAddressGroup subclasses of
+ InternetAddress. InternetAddressList is now also a GObject with a
+ "changed" signal. These changes were made so that manipulating an
+ InternetAddress[List] of recipients will auto-magically update
+ GMimeMessage's corresponding recipient header.
+
+2008-08-18 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c (g_mime_message_get_recipients): Now
+ returns a ref'd version of the InternetAddressList. You must now
+ unref the list when you are done with it.
+
+ * tools/gmime-port-2-2-to-2-4.sh: Updated.
+
+ * gmime/internet-address.c (internet_address_new_mailbox): Renamed
+ from internet_address_new_name() to make it less ambiguous (and to
+ use the terminology used in the RFC's).
+ (internet_address_get_type): Now takes a const InternetAddress
+ argument.
+ (internet_address_get_name): Same.
+ (internet_address_get_addr): Same.
+ (internet_address_get_members): Same, but now returns a ref'd
+ InternetAddressList rather than a const InternetAddressList.
+ (internet_address_list_ref): InternetAddressLists are now
+ reffable.
+ (internet_address_list_unref): Same.
+ (internet_address_list_get_address): Now returns a ref'd copy of
+ the InternetAddress at the index specified.
+
+2008-08-16 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.3.7
+
+2008-08-16 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes to actually pass the test suite. D'oh!
+
+ * gmime/gmime-message.c (process_header): Protect against passing
+ a NULL list to internet_address_list_to_string().
+ (g_mime_message_add_recipient): Create a new InternetAddressList
+ if it doesn't already exist in the hash table.
+ (message_add_recipients_from_string): Protect against passing a
+ NULL list to internet_address_list_concat().
+
+ * gmime/internet-address.c (_internet_address_list_to_string):
+ Fixed the logic to avoid adding a ',' after the last email
+ address.
+
+2008-08-16 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.3.6
+
+2008-08-16 Jeffrey Stedfast <fejj@novell.com>
+
+ * mono/InternetAddressList.cs: Rewritten to be more awesome. Now
+ implements IList.
+
+ * tools/gmime-port-2-2-to-2-4.sh: Updated.
+
+ * gmime/gmime-message.c: Updated for InternetAddressList API
+ changes.
+
+ * gmime/internet-address.c: Completely reworked the
+ InternetAddressList API.
+ (internet_address_list_parse_string): Renamed from
+ internet_address_parse_string().
+
+2008-08-15 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/internet-address.c (decode_mailbox): Implemented a
+ work-around for broken email addresses that have more than a
+ single '.' between word tokens making up the local-part of an
+ addr-spec. See Evolution bug #547969 for details.
+
+2008-08-07 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message-part.c (g_mime_message_part_get_message):
+ Only ref the message if it is non-NULL. Thanks to Peter Bloomfield
+ for this fix.
+
+2008-07-19 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-header.c (g_mime_header_iter_get_offset): Disable
+ for now, currently it never gets set.
+
+2008-07-11 Jeffrey Stedfast <fejj@novell.com>
+
+ * src/uudecode.c (uudecode): Don't base64 decode the
+ end-tag ("====\n"). Fixes bug #542222.
+
+2008-07-08 Jeffrey Stedfast <fejj@novell.com>
+
+ * COPYING: Fixed to reference LGPL v2.1
+
+ * docs/reference/gmime-sections.txt: Updated.
+
+ * gmime/gmime-header.c (g_mime_header_list_foreach): Added back
+ since it's fairly simple and makes it easier for apps to be ported
+ over to GMime 2.4
+
+ * gmime/gmime-message.h: Removed unused prototypes.
+
+ * gmime/gmime-common.h: Same.
+
+2008-07-05 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Doltified and bumped version to 2.3.5
+
+2008-07-04 Jeffrey Stedfast <fejj@novell.com>
+
+ * mono/Message.custom: Updated.
+
+ * gmime/gmime-message.[c,h]: Make GMIME_RECIPIENT_TYPE_* string
+ macros into an enum. Translate the enum into strings as
+ appropriate internally.
+
+2008-07-04 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #541578
+
+ * gmime/gmime-message.c (g_mime_message_add_recipient): Change
+ 'type' argument to const char *.
+ (g_mime_message_add_recipients_from_string): Same.
+
+2008-06-20 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-multipart.c (g_mime_multipart_remove_part): Fixed
+ g_return macros to return bool instead of void.
+
+ * gmime/gmime-cipher-context.c (g_mime_signer_get_errors): Fixed
+ the function name to match the prototype name.
+
+ * gmime/gmime-header.c (g_mime_header_list_remove): Fixed the
+ g_return macros here too. Also need to make sure to return TRUE at
+ the end of the function.
+
+ * gmime/gmime-part.c (write_content): Don't unred filtered_stream
+ if we haven't used it.
+
+ * gmime/gmime-object.c (g_mime_object_remove_header): Fixed
+ g_return macros, this function returns bool, not void.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Get rid of
+ unused variable.
+
+2008-06-18 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.3.4
+
+2008-06-15 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-gpg-context.c (status_backup): Use the bitwise
+ nearest_pow() implementation.
+
+2008-06-14 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parser.c: When mallocing header/raw buffers, malloc
+ a power-of-2 rather than a power-of-2 + 1. Also optimized the
+ logic to calculate the amount of memory to realloc.
+
+2008-06-12 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-encodings.h (GMIME_QP_ENCODE_LEN): Add an extra byte
+ for \n in the case of quoted_encode_close(). Thanks to Peter
+ Bloomfield for discovering this.
+
+2008-06-08 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): added
+ constants for MD2, TIGER and HAVAL.
+
+2008-06-08 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.3.3
+
+ * docs/reference/changes-2.4.sgml: Updated.
+
+ * PORTING: Updated.
+
+2008-06-07 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/*.h: Finished documenting all of the structs. Now at 100%
+ symbols documented! Woot!
+
+ * gmime/gmime-multipart-signed.c (g_mime_multipart_signed_sign):
+ Use the GMimeCipherHash returned from g_mime_cipher_context_sign()
+ to create the micalg parameter value - this way if the requested
+ hash was DEFAULT, we set the micalg to the proper value.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Parse which
+ hash algorithm was actually used by gpg.
+ (gpg_hash_str): Updated to return strings for the new SHA
+ algorithms added this past week.
+ (gpg_sign): Return the hash algorithm actually used.
+
+ * gmime/gmime-cipher-context.c (g_mime_cipher_context_sign): This
+ method now returns -1 on fail or the GMimeCipherHash on success.
+
+2008-06-07 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parse-utils.c (g_mime_decode_word): No longer
+ returns a strdup'd string, this helps increase the performance of
+ the address parser and reduces memory fragmentation.
+
+ * gmime/gmime-utils.c (g_mime_references_decode): Updated for
+ decode_word() changes.
+ (decode_addrspec): Same.
+
+ * gmime/internet-address.c (decode_mailbox): Make sure we don't
+ stray beyond the end of the input string. Also updated for changes
+ to decode_word() (which now returns a const string rather than a
+ strdup'd string).
+
+ * gmime/gmime-header.c (g_mime_header_iter_is_valid): Fixed an FMR
+ when the header the cursor is pointing to has been removed by
+ validating the hdrlist version first.
+
+2008-06-06 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.3.2
+
+ * gmime/*.[c,h]: Updated a bunch of gtk-doc documentation.
+
+2008-06-05 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c (g_mime_message_get_date_as_string):
+ Renamed from g_mime_message_get_date_string().
+ (g_mime_message_set_date_as_string): New function to provide
+ another means of setting a date (might help with some bindings
+ where time_t and tz_offsets are more difficult to work with).
+
+ * mono/GMime.metadata: Fixed MessagePartial.ReconstructMessage
+ binding, thanks to Mike Kestner for helping me figure out the
+ proper metadata kung-fu to achieve this.
+
+ * gmime/gmime-object.c: Get rid of the 'init' class method,
+ GObject already has an initializer (must be a leftover from before
+ the port to GObject).
+ (g_mime_object_new_type): Don't call GMimeObject->init(),
+ g_object_new() has already initialized the object.
+
+ * gmime/gmime-multipart.c (g_mime_multipart_remove_part): Now
+ returns TRUE or FALSE.
+
+2008-06-04 Jeffrey Stedfast <fejj@novell.com>
+
+ * tests/test-pgp.c (main): Test encrypt+sign and decrypt+verify as
+ well.
+
+2008-06-03 Jeffrey Stedfast <fejj@novell.com>
+
+ * tests/test-pgpmime.c: Updated to test for
+ multipart/encrypted+sign
+
+ * gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_encrypt):
+ Changed to take 'sign' and 'userid' arguments so that it is
+ possible to both sign and encrypt the content.
+ (g_mime_multipart_encrypted_decrypt): Updated to save the
+ GMimeSignatureValidity from our call ot
+ g_mime_cipher_context_decrypt() so that callers can choose to get
+ the signer validity (in the case where the encrypted part was also
+ signed).
+ (g_mime_multipart_encrypted_get_signature_validity): New function.
+
+ * gmime/gmime-gpg-context.c (gpg_decrypt): Updated to return a
+ GMimeSignatureValidity.
+ (gpg_ctx_parse_signer_info): Split out from gpg_ctx_parse_status()
+ to parse signer info.
+ (gpg_ctx_parse_status): Updated VERIFY mode to call
+ gpg_ctx_parse_signer_info() and made DECRYPT also call it so that
+ we properly collect signer info when the encrypted stream was also
+ signed.
+ (gpg_encrypt): Respect the 'sign' argument.
+
+ * gmime/gmime-cipher-context.c (g_mime_cipher_context_decrypt):
+ Now returns a GMimeSignatureValidity in case the encrypted stream
+ was also signed.
+
+2008-06-02 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message-partial.c (message_partial_message_new): Use
+ an iter on the stack.
+
+ * gmime/gmime-header.[c,h]: Changed iters again. Iters are now
+ able to be allocated on the stack by making the struct public,
+ however this means that they are more sensitive to changes in the
+ HeaderList (e.g. all iters other than the one used to remove a
+ header become invalid regardless of whether or not the header they
+ refer to still exists).
+
+2008-06-01 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-header.c (g_mime_header_iter_new): New function to
+ allocate an iter on the heap.
+ (g_mime_header_iter_copy_to): New copy function so that you can
+ copy to a pre-allocated destination iter.
+ (g_mime_header_list_get_iter): Changed the API a bit. Instead of
+ returning a newly allocated iter, instead return bool and take an
+ iter arg to initialize.
+
+2008-06-01 Jeffrey Stedfast <fejj@novell.com>
+
+ * tools/gmime-port-2-2-to-2-4.sh: New helper tool to port existing
+ GMime 2.0 and 2.2 based applications over to GMime 2.4.
+
+ * gmime/gmime-part.c: Updated for GMimeFilterCRLF changes.
+
+ * gmime/gmime-multipart-signed.c: Updated for GMimeFilterCRLF
+ changes.
+
+ * gmime/gmime-multipart-encrypted.c: Updated for GMimeFilterCRLF
+ changes.
+
+ * gmime/gmime-filter-crlf.c (g_mime_filter_crlf_new): No longer
+ takes 2 enum arguments, rather it now takes 2 bool arguments which
+ makes the API simpler to understand.
+
+ * gmime/gmime-filter-best.c (g_mime_filter_best_new): Changed the
+ unsigned int flags argument to be an enum so developers could more
+ easily figure out what the argument was.
+
+ * gmime/gmime-param.c (g_mime_param_next): New helper function for
+ bindings.
+ (g_mime_param_get_name): Same.
+ (g_mime_param_get_value): Same.
+
+2008-05-31 Jeffrey Stedfast <fejj@novell.com>
+
+ * tests/test-html.c (main): Updated.
+
+ * tests/test-best.c (main): Updated.
+
+ * src/uuencode.c (uuencode): Updated.
+
+ * gmime/gmime-part.c: Updated for filter stream change.
+
+ * gmime/gmime-multipart-signed.c (g_mime_multipart_signed_sign):
+ Updated for filter stream change.
+
+ * gmime/gmime-multipart-encrypted.c: Updated for filter stream
+ change.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_new): Updated for filter
+ stream change.
+
+ * gmime/gmime-filter-yenc.c (g_mime_filter_yenc_new): Now takes a
+ bool encode argument rather than a GMimeFilterYencDirection - no
+ sense making this more complicated than it needs to be.
+
+ * gmime/gmime-stream-filter.c (g_mime_stream_filter_new): Renamed
+ from g_mime_stream_filter_new_with_stream(). This is the only
+ constructor, so should be named _new().
+
+2008-05-31 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.3.1
+
+ * gmime/gmime-header.c (g_mime_header_list_invalidate_iters): Only
+ unlink the iter if the headers are being destroyed.
+
+ * gmime/gmime-gpg-context.c: Updated.
+
+ * gmime/gmime-cipher-context.c: Added GMimeCipherHash enums for
+ SHA-224, SHA-256, SHA-384 and SHA-512.
+ (g_mime_signer_next): New function to ease binding.
+ (g_mime_signer_set_status): Same.
+ (g_mime_signer_get_status): Same.
+ (g_mime_signer_set_error): Same.
+ (g_mime_signer_get_error): Same.
+ (g_mime_signer_set_trust): Same.
+ (g_mime_signer_get_trust): Same.
+ (g_mime_signer_set_fingerprint): Same.
+ (g_mime_signer_get_fingerprint): Same.
+ (g_mime_signer_set_key_id): Same.
+ (g_mime_signer_get_key_id): Same.
+ (g_mime_signer_set_name): Same.
+ (g_mime_signer_get_name): Same.
+ (g_mime_signer_set_sig_created): Same.
+ (g_mime_signer_get_sig_created): Same.
+ (g_mime_signer_set_sig_expire): Same.
+ (g_mime_signer_get_sig_expire): Same.
+
+2008-05-31 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-object.c (g_mime_object_get_header_list): New
+ function to get at the GMimeObject headers.
+
+ * gmime/gmime-message-partial.c (message_partial_message_new): Use
+ iters to copy the headers.
+
+ * gmime/gmime-header.c (g_mime_header_list_foreach): Removed, this
+ API sucked.
+
+2008-05-31 Jeffrey Stedfast <fejj@novell.com>
+
+ * tests/test-headers.c: New set of unit tests for GMimeHeaderIter.
+
+ * gmime/gmime-header.c (g_mime_header_iter_equal): New method to
+ check if two iters are equal.
+ (g_mime_header_iter_first): New method to update @iter to point to
+ the first header.
+ (g_mime_header_iter_last): New method to update @iter to point to
+ the last header.
+ (g_mime_header_iter_next): Fixed.
+ (g_mime_header_iter_prev): Fixed.
+ (g_mime_header_iter_remove): Invalidate all other iters currently
+ pointing to the same header as @iter.
+
+2008-05-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parser.c: Updated for GMimeHeaderList and
+ GMimeObject changes.
+
+ * gmime/gmime-message-partial.c: Updated for GMimeHeaderList and
+ GMimeObject changes.
+
+ * gmime/gmime-multipart-encrypted.c: Updated for GMimeHeaderList
+ and GMimeObject changes.
+
+ * gmime/gmime-multipart-signed.c: Updated for GMimeHeaderList and
+ GMimeObject changes.
+
+ * gmime/gmime-multipart.c: Updated for GMimeHeaderList and
+ GMimeObject changes.
+
+ * gmime/gmime-part.c: Updated for GMimeHeaderList and GMimeObject
+ changes.
+
+ * gmime/gmime-message.c: Updated for GMimeHeaderList and
+ GMimeObject changes.
+
+ * gmime/gmime-object.c (g_mime_object_append_header): Renamed from
+ g_mime_object_add_header().
+ (g_mime_object_prepend_header): New method.
+ (remove_header): Cleanup content-header variables if they get
+ removed. Don't allow removal of the Content-Type header.
+
+ * gmime/gmime-header.[c,h]: Renamed GMimeHeader to GMimeHeaderList
+ and all of it's methods appropriately. Added a new GMimeHeaderIter
+ class for iterating over a header list.
+ (g_mime_header_list_remove): Return gboolean specifying whether or
+ not a header was removed.
+ (g_mime_header_list_get_iter): New function to get a header
+ iterator.
+
+2008-05-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * util/cache.c: Updated for list.[c,h] changes.
+
+ * util/list.c (list_append): Renamed from list_append_node().
+ (list_prepend): Renamed from list_prepend_node().
+ (list_unlink): Renamed from list_node_unlink().
+
+2008-05-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c (g_mime_message_get_headers): Removed as
+ GMimeObject has an equivalent method.
+ (handle_multipart_alternative): Removed.
+ (handle_multipart_mixed): Removed.
+ (g_mime_message_get_header): Removed, this has equivalent
+ functionality on GMimeObject.
+ (g_mime_message_set_header): Same.
+ (g_mime_message_add_header): Same.
+
+2008-05-28 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.3.0
+
+2008-05-28 Jeffrey Stedfast <fejj@novell.com>
+
+ These changes are to make it so that changing the GMimeContentType
+ and/or GMimeContentDisposition fields directly will still update
+ the headers.
+
+ * gmime/gmime-disposition.c (g_mime_content_disposition_set_disposition):
+ Notify our parent object that we've changed.
+ (g_mime_content_disposition_set_parameter): Same.
+
+ * gmime/gmime-content-type.c (g_mime_content_type_set_parameter):
+ Notify our parent object that we've changed.
+
+ * gmime/gmime-object.c (_g_mime_object_content_type_changed):
+ Renamed from sync_content_type() and also made callable from
+ gmime-content-type.c
+ (_g_mime_object_content_disposition_changed): Renamed from
+ sync_content_disposition() and also made callable from
+ gmime-disposition.c
+ (g_mime_object_set_content_type): Set the parent object on the
+ GMimeContentType and call _g_mime_object_content_type_changed().
+ (g_mime_object_set_content_disposition): Set the parent object on
+ the GMimeContentDisposition and call
+ _g_mime_object_content_disposition_changed().
+
+2008-05-28 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-encodings.c: New source file containing all the
+ basic MIME encoding functions.
+
+ * src/uuencode.c: Updated.
+
+ * src/uudecode.c: Updated.
+
+ * gmime/gmime-parser.c: Updated for GMimeContentEncoding change.
+
+ * gmime/gmime-multipart-signed.c: Updated for GMimeContentEncoding
+ change.
+
+ * gmime/gmime-multipart-encrypted.c: Updated for
+ GMimeContentEncoding change.
+
+ * gmime/gmime-message-partial.c: Updated for GMimeContentEncoding
+ change.
+
+ * gmime/gmime-filter-best.c (g_mime_filter_best_encoding): Updated
+ to use the new GMimeContentEncoding enum.
+
+ * gmime/gmime-data-wrapper.c: Updated to use GMimeContentEncoding
+ enum.
+ (write_to_stream): Drastically simplified using the new
+ GMimeFilterBasic API.
+
+ * gmime/gmime-filter-basic.c: Updated to use the new GMimeEncoding
+ API.
+ (g_mime_filter_basic_new): Renamed and changed the arguments. We
+ now just re-use the GMimeContentEncoding enum and a bool to
+ declare encode vs decode.
+
+ * gmime/gmime-utils.c (g_mime_references_free): New function to
+ simplify bindings.
+ (g_mime_utils_best_encoding): Updated to use the new
+ GMimeContentEncoding enum.
+ (g_mime_utils_base64_encode_close): Moved to gmime-encodings.c
+ and renamed to g_mime_encoding_base64_encode_close().
+ (g_mime_utils_base64_encode_step): Same.
+ (g_mime_utils_base64_decode_step): Same.
+ (g_mime_utils_uuencode_close): Same.
+ (g_mime_utils_uuencode_step): Same.
+ (g_mime_utils_uudecode_step): Same.
+ (g_mime_utils_quoted_encode_close): Same.
+ (g_mime_utils_quoted_encode_step): Same.
+ (g_mime_utils_quoted_decode_step): Same.
+
+ * gmime/gmime-utils.h (GMimePartEncodingType): Removed. This enum
+ has been replaced.
+
+ * gmime/gmime-part.c (g_mime_part_set_content_type): Removed,
+ GMimeObject already has this functionality.
+ (g_mime_part_get_content_type): Same.
+ (g_mime_part_set_content_encoding): Renamed from
+ g_mime_part_set_encoding() and updated to use the new
+ GMimeContentEncoding enum.
+ (g_mime_part_get_content_encoding): Renamed from
+ g_mime_part_get_encoding() and updated to use the new
+ GMimeContentEncoding enum.
+ (g_mime_part_encoding_to_string): Removed, equivalent
+ functionality has been added to gmime-encodings.c named
+ g_mime_content_encoding_to_string().
+ (g_mime_part_encoding_from_string): Removed, equivalent
+ functionality has been added to gmime-encodings.c named
+ g_mime_content_encoding_from_string().
+ (write_content): Updated for new GMimeFilterBasic API which helps
+ simplify this.
+
+2008-05-27 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (g_mime_references_get_message_id): New
+ accessor function to ease bindings.
+ (g_mime_references_get_next): Renamed from
+ g_mime_references_next() for consistency.
+ (g_mime_utils_8bit_header_decode): Removed.
+ (g_mime_utils_8bit_header_encode): Removed.
+ (g_mime_utils_8bit_header_encode_phrase): Removed.
+
+ * gmime/gmime-disposition.c (g_mime_content_disposition_get_params):
+ New accessor function to ease bindings.
+
+ * gmime/gmime-content-type.c (g_mime_content_type_get_media_type):
+ New accessor function to ease bindings.
+ (g_mime_content_type_get_media_subtype): Same.
+ (g_mime_content_type_get_params): Same.
+
+2008-05-27 Jeffrey Stedfast <fejj@novell.com>
+
+ * examples/basic-example.c: Fixed to use GMimeSignatureValidity.
+
+ * gmime/gmime-cipher-context.c (g_mime_cipher_*): Removed, since
+ we're not going to maintain compatability with 2.2, no sense
+ keeping these wrappers around.
+ (g_mime_cipher_validity_*): Removed. No one should still be using
+ these...
+
+2008-05-26 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c (g_mime_message_get_body): Removed.
+
+ * gmime/gmime-disposition.c: Changed GMimeDisposition to
+ GMimeContentDisposition and updated method names to match.
+ (g_mime_content_disposition_new_from_string): Same as the old
+ g_mime_disposition_new().
+ (g_mime_content_disposition_new): New ctor that doesn't take any
+ args.
+ (g_mime_content_disposition_set_parameter): Renamed from
+ g_mime_disposition_add_parameter().
+ (g_mime_content_disposition_get_disposition): Renamed from
+ g_mime_disposition_get().
+ (g_mime_content_disposition_set_disposition): Renamed from
+ g_mime_disposition_set().
+
+ * gmime/gmime-object.c: Moved Content-Disposition handling here.
+ (g_mime_object_get_content_disposition): New method which is the
+ equivalent of g_mime_part_get_content_disposition_object().
+ (g_mime_object_set_content_disposition): New method which is the
+ equivalent of g_mime_part_set_content_disposition_object().
+ (g_mime_object_get_disposition): New method which is the
+ equivalent of g_mime_part_get_content_disposition().
+ (g_mime_object_set_disposition): New method which is the
+ equivalent of g_mime_part_set_content_disposition().
+ (g_mime_object_get_content_disposition_parameter): New method
+ which is the equivalent of
+ g_mime_part_get_content_disposition_parameter().
+ (g_mime_object_set_content_disposition_parameter): New method
+ which is the equivalent of
+ g_mime_part_add_content_disposition_parameter().
+
+ * gmime/gmime-part.c (g_mime_part_get_content_disposition_object):
+ Moved functionality to GMimeObject.
+ (g_mime_part_set_content_disposition_object): Same.
+ (g_mime_part_set_content_disposition): Same.
+ (g_mime_part_get_content_disposition): Same.
+ (g_mime_part_add_content_disposition_parameter): Same.
+ (g_mime_part_get_content_disposition_parameter): Same.
+ (g_mime_part_set_content): Removed long-deprecated function.
+ (g_mime_part_set_content_byte_array): Same.
+ (g_mime_part_set_pre_encoded_content): Same.
+ (g_mime_part_get_content): Same.
+ (g_mime_part_set_content_type):
+ Removed... equivalent functionality already on GMimeObject.
+ (g_mime_part_get_content_type): Same.
+
+2008-05-25 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_encrypt):
+ Don't use g_mime_part_set_content() as it is a deprecated
+ function.
+
+ * gmime/gmime-part.c (g_mime_part_get_content_disposition_object):
+ Added an accessor to make bindings easier.
+
+2008-05-24 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-stream.c (stream_eos): Fixed a typo.
+
+2008-05-24 Jeffrey Stedfast <fejj@novell.com>
+
+ * tests/test-pgp.c: Updated.
+
+ * gmime/gmime-multipart-encrypted.c: Updated.
+
+ * gmime/gmime-multipart-signed.c: Updated.
+
+ * gmime/gmime-cipher-context.c (g_mime_cipher_context_*): Renamed
+ from g_mime_cipher_*() which did not match the class
+ name. Deprecated the old names.
+
+2008-05-24 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c (g_mime_message_write_to_stream):
+ Removed. Removing all deprecated functions which have equivalent
+ functionality in a parent class.
+ (g_mime_message_to_string): Same.
+
+ * gmime/gmime-object.c (g_mime_object_ref): Same.
+ (g_mime_object_unref): Same.
+
+ * gmime/gmime-part.c (g_mime_part_write_to_stream): Same.
+ (g_mime_part_to_string): Same.
+
+ * gmime/gmime-stream.c (g_mime_stream_ref): Same.
+ (g_mime_stream_unref): Same.
+
+2008-05-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-stream-fs.c: Cast offset arguments to lseek() to
+ off_t.
+
+ * gmime/gmime-stream-file.c: Cast offset arguments to fseek() to
+ long.
+
+ * gmime/gmime-stream-mmap.c (g_mime_stream_mmap_new_with_bounds):
+ Don't assign to st.st_size.
+
+ * gmime/*.[c,h]: Use gint64 instead of off_t for public APIs.
+
+ * mono/gmime-api.raw: s/off_t/gint64/g
+
+2008-05-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * mono/Makefile.am: Don't delay-sign, newer versions of Mono do
+ not allow this anymore.
+
+ * mono/gmime-sharp.snk: New sign-key for signing gmime-sharp
+ assembly.
+
+ * mono/AssemblyInfo.cs.in: Updated.
+
+2008-05-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * branched: now begins 2.3.x development
+
+ * gmime-2.4.pc.in: Renamed from gmime-2.0.pc.in.
+
+ * gmime-config.in: Removed.
+
+ * gmimeConf.sh.in: Removed.
+
+ * configure.in: Updated.
+
+ * */Makefile.am: Rename lib name to gmime-2.4.
+
+2008-05-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * mono/StreamWrapper.cs: Allow seeking to position 0 for
+ GMimeStreamFilter. Thanks to Debajyoti Bera for this patch.
+
+2008-05-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.21
+
+ * gmime/gmime-parser.c: Check parser_step() against
+ GMIME_PARSER_STATE_ERROR rather than -1 in case the value ever
+ changes.
+ (struct _GMimeParserPrivate): Changed state to be 16bit int
+ instead of a 26bit int which apparently cannot be set to -1 on
+ Solaris. Fixes bug #534301.
+ (parser_step_headers): Fixed a corner-case where a read boundary
+ fell between the \n and \t of a folded header.
+
+2008-05-16 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.20
+
+2008-05-15 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-stream-buffer.c (stream_read): Break if
+ g_mime_stream_read() returns 0 as well (meaning EOF, no more data
+ to read) and don't keep looping. Fixes bug #533331.
+
+2008-05-03 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.19
+
+2008-05-02 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parser.c (parser_step_headers): Fix for CRLF encoded
+ input.
+
+2008-04-05 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parser.c (header_parse): Fixed a memory leak in the
+ case of an invalid header.
+
+2008-02-16 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.18
+
+2008-03-13 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parser.c (parser_construct_message): Changed
+ content_length to an unsigned long rather than unsigned int, fixes
+ bug #521872. Thanks to Pawel Salek for this fix.
+
+2008-03-10 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parser.c (parser_scan_mime_part_content): Don't let
+ size go negative.
+
+2008-02-10 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.17
+
+2008-02-09 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-filter-basic.c (filter_filter): Use the new macros
+ defined below.
+
+ * gmime/gmime-utils.c (rfc2047_encode_word): Use the new macros.
+
+ * gmime/gmime-utils.h: Added more accurate encoding-length macros
+ for base64, quoted-printable, and uuencode which are try to
+ minimize over-calculating the amount of output data that we
+ need. Also namespaced them.
+
+2008-02-08 Jeffrey Stedfast <fejj@novell.com>
+
+ * src/uudecode.c (uudecode): Use g_strchomp() on the filename
+ parsed from the 'begin' line.
+
+2008-02-07 Jeffrey Stedfast <fejj@novell.com>
+
+ * util/url-scanner.c (url_web_end): Handle IP address literals
+ within []'s. Fixes bug #515088.
+
+2008-02-06 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (g_mime_utils_uuencode_step): Optimized.
+
+2008-02-03 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-stream-cat.c (stream_read): Removed an extra seek.
+
+2008-02-02 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.16
+
+2008-02-02 Jeffrey Stedfast <fejj@novell.com>
+
+ Fix for https://bugzilla.novell.com/show_bug.cgi?id=333292 and
+ some other bugs I discovered while fixing it.
+
+ * gmime/gmime-parser.c (header_parse): Made an actual function
+ rather than a macro. Don't turn invalid headers into
+ X-Invalid-Headers, just ignore them. Instead of using
+ g_strstrip(), do our own lwsp trimming so we can do it before
+ malloc'ing - this helps reduce memory usage and memmove()
+ processing in g_strstrip().
+ (parser_step_headers): Validate the header field names as we go so
+ that we can stop when we come to an invalid header in some
+ cases. May now return with 3 states rather than only 1:
+ HEADERS_END (as before), CONTENT (suggesting we've reached body
+ content w/o a blank line to separate it from the headers), and
+ COMPLETE (which suggests that we've reached the next message's
+ From-line).
+ (parser_skip_line): Rearranged a bit: don't fill unless/until we
+ need to.
+ (parser_step): For HEADERS_END state, skip a line and increment
+ state to CONTENT. No-op for CONTENT and COMPLETE states.
+ (parser_scan_message_part): parser_step() can return more than
+ just HEADERS_END on 'success' when starting with HEADERS state, so
+ check for error rather than HEADERS_END.
+ (parser_construct_leaf_part): No need to parser_step() thru header
+ parsing, they should already be parsed by the time we get
+ here. Also, don't call parser_skip_line() directly to skip the
+ blank line between headers and content, use parser_step() to do
+ that for us.
+ (parser_construct_multipart): Same as parser_construct_leaf_part()
+ (found_immediate_boundary): Now takes an 'end' argument so callers
+ can request a check against an end-boundary vs a part boundary.
+ (parser_scan_multipart_subparts): Check for errors with
+ parser_skip_line(). Set HEADERS state and use parser_step() to
+ parse headers rather than calling parser_step_headers()
+ directly. If, after parsing the headers, we are at the next
+ message (aka COMPLETE state) and we have no header list, then
+ break out of our loop and pretend we've found an
+ end-boundary. After parsing the content of each MIME part, check
+ that the boundary we found is our own and not a parent's (if it
+ belongs to a parent, break out).
+ (parser_construct_part): Loop parser_step() until we're at any
+ state past the header block (>= HEADERS_END).
+ (parser_construct_message): Same idea. Also, do error checking for
+ decoded content_length value.
+
+2008-02-02 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-iconv-utils.c (iconv_utils_init): Don't break if the
+ user's locale is unset (e.g. US-ASCII).
+
+2008-01-31 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parser.c: Removed the need for 'unstep' state
+ information.
+
+2008-01-27 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-stream-buffer.c (stream_write): Don't modify the
+ passed-in arguments so that it makes debugging easier if there's
+ ever a bug.
+
+2008-01-27 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-stream-buffer.c (stream_read): Optimized the
+ BLOCK_READ code-path.
+ (stream_write): Optimized the BLOCK_WRITE code-path.
+ (stream_seek): Optimized the BLOCK_READ code-path.
+ (g_mime_stream_buffer_gets): Updated for the changes made to the
+ way bufptr is used in the BLOCK_READ case.
+
+2008-01-14 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-charset.c (g_mime_set_user_charsets): Deep copy the
+ string array. Fixes bug #509434.
+
+2008-01-03 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.15
+
+2008-01-02 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c (message_write_to_stream): Reworked the
+ logic to be easier to understand what is going on.
+
+ * gmime/gmime-multipart.c (multipart_write_to_stream): In the case
+ where multipart->boundary is NULL /and/ we have a raw
+ header (suggesting a parsed message), do not set a boundary as it
+ will break the output because it will clobber the saved raw header
+ and GMimeMessage's write_to_stream() method will have skipped
+ writing its own headers if its toplevel part (us) have a raw
+ header set. In this case, also skip writing the end boundary.
+
+2008-01-01 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.14
+
+ * gmime/gmime-utils.c (g_mime_utils_generate_message_id): Fixed a
+ Free Memory Read access (FMR) by not freeing 'name' before using
+ it's value. Also reworked to take advantage of uname(2) or
+ getdomainname() to get the domain name if available to avoid
+ having to do a DNS lookup.
+
+2007-01-01 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.13
+
+2008-01-01 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #506701
+
+ * gmime/gmime-utils.c (rfc2047_encode_get_rfc822_words): Don't
+ reset the word-type variable as it needs to be preserved when
+ breaking long words.
+ (rfc2047_encode): Switch on word->encoding - if 0, rfc2047 encode
+ as us-ascii.
+
+2007-12-27 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (decode_8bit): Now takes a default_charset
+ argument which we use in place of the locale charet if
+ non-NULL. We also now always include this charset in our list of
+ charsets to check for a best-match (obviously this charset is
+ unlikely to be an exact fit if this function is getting called, so
+ we place it at the end of the list).
+ (rfc2047_decode_word): If given a valid charset in the
+ encoded-word token, always use that for charset conversion to UTF-8
+ even if it doesn't convert fully. We don't want to fall back to
+ the user's supplied charset list because it may contain iso-8859-1
+ which will likely always be a 'best-match' charset.
+
+2007-12-26 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (g_mime_utils_decode_8bit): Made public.
+
+ * gmime/internet-address.c (decode_mailbox): Instead of doing our
+ own thing to convert raw 8bit/multibyte text sequences into UTF-8,
+ use the same function we use in gmime-utils.c's header decoder.
+
+2007-12-25 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/charset-map.c: New source file to generate the charset
+ map (moved out of gmime-charset.c)
+
+ * gmime/gmime-charset.c (main): Removed.
+
+2007-12-25 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-charset.c (main): Cleaned up the logic and made it
+ so that we can alias a block to a previous block if the blocks are
+ identical rather than just aliasing when all values in the block
+ are identical. Happens to make no difference in the output, but
+ the logic is now there if that ever changes.
+
+2007-12-24 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-charset-map-private.h: Regenerated.
+
+ * gmime/gmime-charset.c (known_iconv_charsets): Map all of the
+ gb2312 aliases to GBK as GBK is a superset of gb2312 (apparently
+ some clients are tagging GBK as gb2312 which is missing some
+ glyphs contained within GBK).
+ (main): Added iso-8859-6 to the table for Arabic support.
+
+2007-12-16 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (decode_8bit): When reallocing our output
+ buffer, we need to update outleft as well.
+
+2007-12-15 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.12
+
+2007-12-08 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (rfc2047_encode_merge_rfc822_words):
+ Completely rewritten with new logic which will hopefully group
+ words more logically.
+
+2007-12-08 Jeffrey Stedfast <fejj@novell.com>
+
+ Fixes bug #498720
+
+ * gmime/internet-address.c (internet_address_list_writer): Renamed
+ from the temporary internet_address_list_fold() name.
+ (_internet_address_to_string): New internal function that writes
+ an InternetAddress to a GString, doing proper folding and rfc2047
+ encoding if requested.
+ (internet_address_to_string): Use the new internal function.
+
+ * tests/test-mime.c: Added another addrspec test and fixed up some
+ exception strings to be a little more helpful.
+
+2007-12-05 Jeffrey Stedfast <fejj@novell.com>
+
+ * configure.in: Fixed a bug where explicitly disabling largefile
+ support would add -D_FILE_OFFSET_BITS=no to the compiler
+ CFLAGS. Also added a blaring WARNING when -enable-largefile is
+ passed.
+
+2007-11-23 Jeffrey Stedfast <fejj@novell.com>
+
+ Attempt at solving bug #498720 for address fields, altho it should
+ probably be made to handle folding single addresses in the case
+ where they are too long to fit within a single line.
+
+ * gmime/internet-address.c (internet_address_list_fold): New
+ function.
+
+ * gmime/gmime-message.c (write_structured): Renamed from
+ write_addrspec().
+ (write_addrspec): New header writer that writes
+ InternetAddressLists in a nicely folded manner.
+
+2007-11-12 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/internet-address.c (internet_address_destroy): No need to
+ check if ia != NULL, we know this is true already.
+
+2007-11-12 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.11
+
+ * gmime/gmime-utils.c (g_mime_utils_header_decode_text): Fix for
+ bug #485005.
+
+2007-11-06 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (rfc2047_decode_word): If the charset string
+ is empty, default to decode_8bit() and don't try to iconv_open()
+ it.
+
+2007-11-06 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (is_rfc2047_token): Don't assume the charset
+ component of the token is >= 1 char, start checking for a '?' at
+ string index 2.
+
+2007-11-01 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Clear any
+ error we may have (bad passwd?) each pass so that we don't try to
+ set an error when one is already set.
+
+2007-10-27 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c (g_mime_message_set_mime_part): Reset the
+ raw headers of the current top-level MIME part so that if it is
+ being used elsewhere, it won't carry along all the message headers
+ from this message.
+
+2007-10-24 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-part.c (g_mime_part_encoding_from_string): Handle
+ the value "uuencode" the same as we were handling "x-uuencode".
+
+2007-10-14 Jeffrey Stedfast <fejj@gnome.org>
+
+ Changed the license to LGPLv2
+
+2007-10-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * tests/test-pgp.c (test_export): Skip past the PGP headers so as
+ to avoid comparing the "Version: " headers which might fail if a
+ newer gnupg is used than what created the pgp key originally.
+
+2007-10-13 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-filter-html.c: Updated for url-scanner.c symbol
+ changes.
+
+ * util/url-scanner.[c,h]: Renamed symbols to get rid of the G
+ prefix and marked all symbols for internal linkage.
+
+ * util/md5-utils.h: Declare symbols as internal.
+
+ * util/memchunk.h: Here too.
+
+ * util/cache.h: And here.
+
+ * util/list.h: Same.
+
+2007-09-25 Joe Shaw <joe@joeshaw.org>
+
+ * configure.in: Set an AM_CONDITIONAL for whether we are
+ building with large file support.
+
+ * mono/GMime.metadata.in: Move GMime.metadata to this and
+ change any references of off_t to @off_t_type@, which is
+ substituted with the correct type. This is needed because
+ off_t is converted to an IntPtr by the gtk-sharp binding
+ generator, which is good for 64-bit systems and 32-bit
+ systems without large file support but breaks on 32-bit
+ systems with large file support.
+
+ * mono/Makefile.am: Generate GMime.metadata from
+ GMime.metadata.in by using sed to replace @off_t_type@
+ with gint64 on 32-bit systems with large file support
+ and long otherwise.
+
+2007-09-03 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c: Disabled a debug printf.
+
+2007-08-15 Joe Shaw <joe@ximian.com>
+
+ * mono/DataWrapper.custom: We want to dispose of the GMime
+ stream immediately, since we don't use its managed wrapper
+ except to immediately pass it into the GMime.StreamFilter
+ constructor.
+
+2007-07-21 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-iconv-utils.c (g_mime_iconv_strndup): Save errno
+ before resetting the iconv descriptor so that we don't lose the
+ error.
+
+2007-07-19 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.10
+
+ * tests/test-mime.c: Added rfc2047_text entries for testing the
+ new workaround support.
+
+ * gmime/gmime-utils.c (g_mime_utils_header_decode_text):
+ Implemented a conditional workaround for broken rfc2047 encodings.
+
+2007-07-03 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-common.c: Removed str[n]casecmp
+
+2007-05-21 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.9
+
+ * gmime/gmime-stream-cat.c (stream_substream): Fixed a memory leak
+ by always returning a GMimeStreamCat, even if the source list
+ contains only a single stream (probably better that it work this
+ way anyway for consistency), thanks again to Charles Kerr for
+ finding and presenting a fix for this. Fixes bug #440054.
+
+ * gmime/gmime-stream-file.c (stream_seek): Oops, fseek() should
+ have been using SEEK_SET, not SEEK_END. Thanks to Charles Kerr for
+ the report and the fix. Fixes bug #439841.
+
+2007-04-25 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.8
+
+ * tests/test-pgp.c: Test exporting of keys.
+
+ * gmime/gmime-utils.c (rfc2047_decode_word): Fixed compile
+ warnings.
+
+ * gmime/gmime-stream-file.c (stream_reset): Removed an unused
+ variable.
+
+ * gmime/gmime-charset.c (g_mime_charset_can_encode):
+ s/if (mask->level = 1)/if (mask->level == 1)/
+
+2007-04-23 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.7
+
+2007-04-14 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/*.c (g_mime_*_get_type): Set n_preallocs to 0.
+
+2007-04-12 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/*.c: no need for a second NULL argument to g_object_new()
+
+ * util/cache.c (cache_new): Change max_size and node_size to be of
+ type size_t.
+
+ * gmime/gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_new): g_object_new() doesn't need a
+ second NULL argument.
+
+ * gmime/gmime-utils.c (decode_8bit): Close the iconv descriptor
+ and since we are using is_ascii() now, we don't need to use
+ unsigned char *'s.
+
+2007-04-12 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c (decode_8bit): Use is_ascii().
+ (g_mime_utils_header_decode_text): Same.
+ (g_mime_utils_header_decode_phrase): Here too.
+
+ * gmime/gen-table.c: Added a is_ascii() macro for use instead of
+ the ctype isascii() so that I don't have to worry about casting.
+
+2007-04-11 Jeffrey Stedfast <fejj@gnome.org>
+
+ Revision 1119 (previous commit) made the following 2 functions
+ even less attractive than they already were, so I decided to
+ rewrite them especially since it wasn't hard to find a far cleaner
+ approach.
+
+ * gmime/gmime-utils.c (g_mime_utils_header_decode_text): Rewritten
+ to be cleaner, faster, and more elegant.
+ (g_mime_utils_header_decode_phrase): Same.
+
+2007-04-11 Jeffrey Stedfast <fejj@gnome.org>
+
+ Fixes for bug #423760 and bug #342196
+
+ * gmime/gmime-charset.c (g_mime_charset_can_encode): New
+ convenience function to check whether a length of UTF-8 text can
+ be converted into the specified charset.
+ (g_mime_set_user_charsets): New function allowing an application
+ to provide GMime with a list of user-preferred charsets to use for
+ encoding and decoding headers.
+ (g_mime_user_charsets): New function to get the list of
+ user-preferred charsets.
+
+ * gmime/gmime-utils.c (decode_8bit): New function to convert
+ arbitrary 8bit text into UTF-8 using the charset list provided by
+ g_mime_user_charsets().
+ (rfc2047_decode_word): Don't assume that just because the declared
+ charset is UTF-8 that it actually is in UTF-8.
+ (rfc2047_decode_word): If we can't open a converter for the
+ declared charset to UTF-8 or if we can't convert from the declared
+ charset into UTF-8, fall back to using decode_8bit().
+ (g_mime_utils_header_decode_text): Convert 8bit word tokens into
+ UTF-8 using decode_8bit().
+ (g_mime_utils_header_decode_phrase): Same.
+ (rfc2047_encode_word): Be a little more efficient about removing
+ '\n' chars...
+ (rfc2047_encode): When encoding a level-2 word cluster, attempt to
+ fit the cluster within a charset provided by
+ g_mime_user_charsets() rather than using GMime's best-fit charset
+ table (unless, of course, it doesn't fit within any of the
+ user-specified charsets).
+
+2007-03-28 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-iconv-utils.c (g_mime_iconv_strndup): No need to
+ cast out to a char *, it already is.
+
+ * gmime/gmime-stream-mem.c (g_mime_stream_mem_set_byte_array):
+ Only free the previous memory buffer if we were the owner.
+
+2007-03-28 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.6 - critical release for the
+ gmime-stream-fs and gmime-stream-file fixes below.
+
+ * gmime/gmime-stream-filter.c (stream_reset): Try resetting source
+ stream first, this way if that fails we don't reset our state
+ either.
+
+ * gmime/gmime-stream-fs.c (stream_reset): Same as below.
+
+ * gmime/gmime-stream-file.c (stream_reset): Make sure to always
+ return 0 or -1, not the value from fseek()ing back to the
+ beginning of the stream (which might not be position 0).
+
+2007-03-27 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): If we aren't
+ in a UTF-8 locale, convert status messages into UTF-8 when using
+ the status line in the GError.
+
+2007-03-26 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c (g_mime_utils_8bit_header_decode)
+ (g_mime_utils_8bit_header_encode)
+ (g_mime_utils_8bit_header_encode_phrase): Changed all of these
+ functions to take `const unsigned char *' like they used to. Fixes
+ bug #423147.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_new): Initialize flushed and
+ nodata state variables. Thanks to valgrind for finding these...
+
+ * gmime/gmime-content-type.c
+ (g_mime_content_type_new_from_string): Shouldn't need to
+ g_strstrip() the type, is_ttoken() won't match against lwsp
+ chars. Also, instead of simply scanning past lwsp between some
+ tokens, use decode_lwsp() between *all* tokens so that we handle
+ comments as well (not that there should be any...).
+
+ * gmime-2.0.pc.in: Got rid of the redundant @LIBS@ which contained
+ the same value as @GMIME_LIBS@.
+
+ * configure.in: Added configure checks for large file support.
+
+2007-03-26 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime-param.c: #include "gmime-parse-utils.h" and got rid of
+ this file's own decode_lwsp() implementation.
+
+ * internet-address.c: #include "gmime-parse-utils.h" which is
+ where a bunch of the parser functions have been moved from here.
+
+ * gmime-utils.c: #include "gmime-parse-utils.h" for decode_lwsp()
+ and decode_domain()
+ (decode_addrspec): Moved here from internet-address.c which had
+ been exporting the symbol previously (so that decode_domain didn't
+ have to be copy/pasted). Now this function can be made static -
+ yay! No more exporting un-namespaced symbols!
+
+ * gmime/gmime-message.c: #include "gmime-parse-utils.h" for
+ decode_lwsp()
+
+ * gmime/gmime-parse-utils.[c,h]: New source files containing some
+ parse utility functions that had been copy/pasted between several
+ source files previously.
+
+2007-03-25 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.5
+
+2007-03-25 Jeffrey Stedfast <fejj@gnome.org>
+
+ * tests/Makefile.am (local-check): Simplified.
+
+ * tests/test-streams.c: Generate our own test data if we aren't
+ given any.
+
+ * tests/test-cat.c: Updated for the new Makefile.am rule.
+
+ * gmime/gmime-stream-mmap.c (stream_length): Fixed to return the
+ correct length when bound_end == -1 but bound_start != 0.
+ Discovered this thanks to my new testsuite.
+
+ * gmime/internet-address.c (decode_mailbox): If we can't find a
+ local-part and inptr is ',', set *in = inptr; rather than *in =
+ inptr + 1; Discovered this bug thanks to my new testsuite.
+
+ * tests/test-mime.c: Rewritten to use testsuite library.
+
+2007-03-24 Jeffrey Stedfast <fejj@gnome.org>
+
+ * tests/Makefile.am (check-local): Rewritten to actually run the
+ automated tests.
+
+ * tests/test-mbox.c: Rewritten to use testsuite library.
+
+ * tests/test-pgp.c: Rewritten to use testsuite library.
+
+ * tests/test-pgpmime.c: Rewritten to use testsuite library.
+
+ * tests/test-cat.c: Rewritten to use testsuite library.
+
+ * tests/test-streams.c: Rewritten to use testsuite library.
+
+ * tests/test-iconv.c: Rewritten to use testsuite library.
+
+ * tests/testsuite.[c,h]: New automated test-suite helper library.
+
+2007-03-20 Jeffrey Stedfast <fejj@gnome.org>
+
+ * configure.in: Check for the existance of _timezone and nfds_t.
+
+ * gmime/gmime-utils.c (mktime_utc): Use _timezone if
+ HAVE__TIMEZONE is set.
+
+ * gmime/gmime.c (g_mime_init): If HAVE_TIMEZONE or HAVE__TIMEZONE
+ is set, call tzset() to initialise the timezone variable.
+
+2007-03-12 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-param.c (decode_param): Instead of only checking
+ that the param value begins with "=?", check if that sequence
+ exists anywhere in the value. Fixes bug #407522.
+
+ * src/uudecode.c (uudecode): Use a strcmp instead of comparing
+ against a string literal (which was technically correct in this
+ case, but the prettyification would be nice if "-" was specified
+ in argv too). Fixes bug #408613.
+
+2007-03-10 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-message.c (g_mime_message_get_all_recipients): New
+ convenience function to get To, Cc, and Bcc recipients all in a
+ single list.
+
+2007-02-19 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-message.h: Moved g_mime_message_get_body() into the
+ deprecated block.
+
+2007-02-11 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-utils.c: Removed the need for the ctype isblank()
+ function.
+
+ * gmime/gmime-param.c (decode_int): Need to use (unsigned char *)
+ when passing indexes to ctype functions.
+
+2007-02-10 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-charset.c: Changed the names of the charset format
+ macros to coincide with the new names output by iconv-charset.c.
+ (g_mime_charset_iconv_name): Use the new macro names.
+
+ * iconv-detect.c: Use %u instead of %d, also changed the names of
+ the format #defines that we print out.
+
+ * gmime/gmime-utils.c (g_mime_utils_quote_string): Optimise a
+ smidgen.
+ (g_mime_utils_unquote_string): Fixed, this wasn't working right...
+
+2007-02-09 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-stream-filter.c (stream_write): Instead of comparing
+ the return value of the source stream write() to our input length
+ to write, compare to -1. We can't assume the the value the source
+ stream will return will be what we expected, all we can do is
+ check for error.
+
+ * gmime/gmime-part.c: Same as below.
+
+ * gmime/gmime-filter-basic.c: Fixes to signedness compile warnings
+ and updated to reflect gmime-utils.h changes.
+
+ * gmime/gmime-multipart.c (multipart_set_boundary): Updated to
+ reflect gmime-utils.h changes.
+
+ * gmime/gmime-stream.c (g_mime_stream_writev): If any of the
+ writes fail, return -1.
+
+ * gmime/gmime-utils.c: header_encode_*() and header_decode_*() now
+ take const char * rather than const unsigned char *
+ arguments. This has been done in an effort to fix compile warnings
+ about signed vs unsigned char * pointers. The 'save' argument to
+ all of the stream encoders/decoders have been changed to a
+ guint32, again for signed vs unsigned warning fixes.
+
+2007-02-08 Jeffrey Stedfast <fejj@gnome.org>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.4
+
+2007-02-06 Jeffrey Stedfast <fejj@gnome.org>
+
+ Fix for bug #394433
+
+ * configure.in: Detect if the system has GNU's getopt
+ implementation available for us to use.
+
+ * Makefile.am: Don't build our own copy of the GNU getopt library
+ if the system has it available.
+
+ * src/uuencode.c: If the system has getopt.h, use it instead of
+ our own getopt.h.
+
+ * src/uudecode.c: If the system has getopt.h, use it instead of
+ our own getopt.h.
+
+2007-02-06 Jeffrey Stedfast <fejj@gnome.org>
+
+ More fixes on account of my test suite...
+
+ * tests/test-cat.c (test_cat_substream): end = start + random
+ amount... duh. Fixes a bug where sometimes the end bound was < the
+ start bound.
+
+ * gmime/gmime-stream-cat.c (stream_substream): Calculate the
+ length of each of the source streams correctly. D'oh.
+ (stream_substream): Fixed the calculation for s->start.
+ (stream_substream): Fixed the s->end calculation for when end
+ within the source stream's bounds.
+ (stream_substream): Keep track of how long our substream is going
+ to be for use with setting absolute bound_end on a multi-stream
+ substream.
+
+2007-02-05 Jeffrey Stedfast <fejj@gnome.org>
+
+ Fixes on account of the awesome test suite I wrote earlier... still
+ need to fix ::substream() tho (or maybe it's just the test that's
+ broke?).
+
+ * gmime/gmime-stream-cat.c: Added an id member to struct
+ _cat_node, for use with debugging...
+ (stream_read): Seek in the source stream, don't call
+ Cat::stream_seek() to do it.
+ (stream_seek): Swapped the logic of the "within bounds" check, had
+ it backwards. When seeking past a stream, set the node->position
+ to the length of the stream (technically, it's like we read() thru
+ all that data, right?). Instead of resetting all streams starting
+ at n->next, reset them all starting at current->next... since 'n'
+ technically might be before 'current'.
+ (g_mime_stream_cat_add_source): Assign each node an id for easier
+ debugging...
+
+2007-02-05 Jeffrey Stedfast <fejj@gnome.org>
+
+ * tests/test-cat.c: The beginnings of a test suite for
+ GMimeStreamCat.
+
+ * gmime/gmime-stream-cat.c (stream_read): Go to the next stream if
+ nread <= 0, not just nread == 0.
+
+2007-02-04 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-stream-mem.c (stream_reset): No longer need to
+ update stream->position.
+
+ * gmime/gmime-stream-mmap.c (stream_reset): Same g_return_if_fail
+ change. Also don't update stream->position.
+ (stream_seek): Added similar sanity checking/eos resetting as
+ StreamFs code.
+
+ * gmime/gmime-stream-file.c (stream_read): Style changes.
+ (stream_write): Style changes.
+ (stream_close): Fixed compiler warning.
+ (stream_reset): Changed g_return_if_fail to a true if-then.
+ (stream_seek): Changed to mimic the StreamFs changes.
+ (g_mime_stream_file_new): Similar to fs_new() change.
+
+ * gmime/gmime-stream-fs.c (stream_close): Loop the close()
+ ourselves.
+ (stream_reset): Changed g_return_if_fail to a true if-then. Also
+ be better about resetting eos.
+ (stream_seek): Rewritten to be more correct/robust (at least I
+ hope). Also properly reset eos when appropriate.
+ (g_mime_stream_fs_new): If lseek() fails, pretend start offset is
+ 0.
+
+ * gmime/gmime-stream.c (stream_reset): No longer needs to update
+ stream->position.
+ (g_mime_stream_reset): Update stream->position if everything reset
+ smoothly. This is just a convenience change to subclass
+ implementations.
+
+ * gmime/gmime-stream-cat.c (stream_read): Rewritten. Hopefully
+ correct now? Ugh. We can hope...
+ (stream_write): Fixed to work better.
+ (stream_close): Rewritten.
+ (stream_reset): Rewritten to reset the streams, don't seek.
+ (stream_seek): Rewritten... still not correct, but should be ok
+ assuming our bound_start is 0.
+ (stream_length): Rewritten to not depend on a pre-calculated
+ length value... this Does Not Work (tm) if the source streams are
+ unbound and we've written to them.
+ (stream_substream): Rewritten... because ::seek() is so complex
+ for this type of stream, I've tried to eliminate a lot of the
+ headaches by making substreams only slurp up the streams within
+ the bounds of the start/end requested. If the entire contents
+ within the requested bounds are contained within a single source
+ stream, we return a substream of said source stream instead.
+ (g_mime_stream_cat_add_source): Don't precalculate the length here
+ anymore.
+
+ * gmime/gmime-stream-buffer.c (stream_read): Fixed to never allow
+ buflen to be negative if the read() of our source stream fails.
+ (stream_close): Handle the case where we've already been closed.
+ (stream_eos): Simplified.
+ (stream_reset): Stylistic changes.
+ (stream_seek): Don't allow seeks under our bound_start.
+
+2007-02-03 Jeffrey Stedfast <fejj@gnome.org>
+
+ * gmime/gmime-stream-cat.c (stream_flush): Flush all streams up to
+ and including the current stream, not just the current stream.
+ (stream_write): break if we don't write any data to
+ current->stream or get an error so we can try the next stream.
+
+ * gmime/gmime-stream-file.c (stream_close): Same as below.
+
+ * gmime/gmime-stream-fs.c (stream_close): Allow closing multiple
+ times... makes this consistant with the other streams.
+ (stream_write): If a system write fails with EFBIG or ENOSPC, set
+ eos to TRUE.
+
+2007-01-20 Jeffrey Stedfast <fejj@gnome.org>
+
+ * tests/test-streams.c (test_stream_gets): printf formatter fixes.
+
+ * examples/imap-example.c: #include <glib/gstdio.h>, fixes bug
+ #394434.
+
+2007-01-20 Jeffrey Stedfast <fejj@gnome.org>
+
+ Fixes bug #394419
+
+ * gmime/gmime-filter-charset.c (filter_filter): Do iconv const
+ casting.
+ (filter_complete): Same.
+
+2006-11-02 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (g_mime_utils_header_format_date): Changed
+ the names of the parameters to date and tz_offset to prevent
+ warnings from -Wshadow.
+
+ * gmime/gmime-filter-html.c (writeln): Fixed another possible
+ buffer overflow condition pointed out by hpj.
+
+ * gmime/gmime-filter-crlf.c (filter_filter): Fixed a possible
+ buffer overflow condition pointed out by hpj.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_op_step): Modified to use
+ poll() rather than select()
+
+2006-09-18 Joe Shaw <joeshaw@novell.com>
+
+ * mono/Makefile.am: Use SOURCES_XML instead of XML_SOURCES to
+ specify the sources.xml file. XML_SOURCES breaks with newer
+ automakes.
+
+2006-08-29 Pawel Salek <pawsa@theochem.kth.se>
+
+ * gmime/gmime-message-partial.c: set buf just before use - since
+ the mem stream buffer may get reallocated in the meantime leading
+ to segfaults.
+
+2006-08-29 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-param.c (decode_quoted_string): Unescape escape
+ sequences. Fixes bug #352771.
+
+ * gmime/gmime-message.c (g_mime_message_set_subject): Updated the
+ docs.
+ (g_mime_message_get_subject): Same.
+
+2006-08-21 Peter Bloomfield <peterbloomfield@bellsouth.net>
+
+ * gmime/gmime-utils.c (g_mime_utils_unquote_string): handle an
+ arbitrary sequence of quoted and unquoted sections.
+
+2006-08-02 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.3
+
+ * gmime/gmime-message.c (process_header): Decode the values for
+ Subject, From, Reply-To so that g_mime_message_get_subject/etc all
+ return decoded strings like they were meant to.
+
+2006-06-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-gpg-context.c (swrite): Use g_build_filename() and
+ g_get_tmp_dir() rather than hard-coding the tmpfile to be in /tmp.
+
+2006-06-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-part.c: Use g_ascii_* versions of str[n]casecmp.
+
+ * gmime/gmime-parser.c: Use g_ascii_* versions of str[n]casecmp.
+
+ * gmime/gmime-param.c: Use g_ascii_* versions of str[n]casecmp.
+
+ * gmime/gmime-multipart-signed.c: Use g_ascii_* versions of
+ str[n]casecmp.
+
+ * gmime/gmime-multipart-encrypted.c: Use g_ascii_* versions of
+ str[n]casecmp.
+
+ * gmime/gmime-multipart.c: Use g_ascii_* versions of
+ str[n]casecmp.
+
+ * gmime/gmime-message-partial.c: Use g_ascii_* versions of
+ str[n]casecmp.
+
+ * gmime/gmime-message-part.c: Use g_ascii_* versions of
+ str[n]casecmp.
+
+ * gmime/gmime-message.c: Use g_ascii_* versions of str[n]casecmp.
+
+ * gmime/gmime-iconv.c (g_mime_iconv_open): Use g_ascii_* versions
+ of str[n]casecmp.
+
+ * gmime/gmime-header.c (g_mime_header_new): Use
+ g_mime_strcase_[hash,equal] rather than param_[hash,equal] to
+ reuse code.
+
+ * gmime/gmime-gpg-context.c: Use g_ascii_* versions of
+ str[n]casecmp.
+
+ * gmime/gmime-filter-enriched.c: Use g_ascii_* versions of
+ str[n]casecmp.
+
+ * gmime/gmime-disposition.c (g_mime_disposition_add_parameter):
+ Use g_mime_strcase_[hash,equal] rather than param_[hash,equal] to
+ reuse code.
+ (g_mime_disposition_new): Same.
+ (param_equal): Removed.
+ (param_hash): Removed.
+
+ * gmime/gmime-content-type.c: Use g_ascii_* versions of
+ str[n]casecmp.
+ (g_mime_content_type_new_from_string): Use
+ g_mime_strcase_[hash,equal] rather than param_[hash,equal] to
+ reuse code.
+ (g_mime_content_type_set_parameter): Same.
+ (param_equal): Removed.
+ (param_hash): Removed.
+
+ * gmime/gmime-charset.c: Use g_ascii_* versions of str[n]casecmp.
+
+2006-06-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-stream-cat.c (stream_seek): Fixed to only seek if
+ necessary and also to use ::reset() if seeking back to the
+ beginning of the stream so that it works for non-seekable streams
+ too. Fixes bug #345503 - again thanks to Charles for reporting
+ this bug.
+
+ * gmime/gmime-object.c (subtype_bucket_foreach): Fixed to also
+ free the bucket memory. Fixes bug #345768, thanks to Charles Kerr
+ for pointing this out.
+
+2006-06-22 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-gpg-context.c: Removed #define _POSIX_SOURCE to fix
+ bug #172179.
+
+2006-06-15 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.2
+
+2006-06-01 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (parse_broken_date): Fixed to handle
+ MM-DD-YY properly and also to fallback to DD-MM-YY if the first
+ pair of digits isn't within range for a proper month.
+
+2006-05-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime.h.in: Removed.
+
+ * gmime.h: Now static, no longer auto-generated.
+
+ * gmime/gmime.c: Set the gmime_[major,minor,micro]_version
+ variables.
+ (g_mime_check_version): New function to check the required
+ version.
+
+ * gmime/gmime-stream-fs.c: Implement our own no-op version of
+ fsync() for systems that don't have fsync().
+
+2006-05-24 Jeffrey Stedfast <fejj@novell.com>
+
+ * examples/imap-example.c (main): Use g_mkdir() to make this
+ example portable to Win32.
+
+2006-05-01 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Handle prompts
+ from GnuPG asking for the user's PIN for their SmartCard.
+
+2006-04-21 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-stream.h: #include <stdio.h> for SEEK_SET/CUR/END
+ enum values.
+
+2006-03-16 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.1
+
+ * gmime/gmime-parser.c (parser_step): No-op if we are in an ERROR
+ state.
+ (parser_construct_message): Don't bail if we don't start in state
+ INIT, this is valid.
+ (parser_step_from): We need to bail even if parser_fill() returns
+ > 0 if the line is incomplete (e.g. a forced refill was needed but
+ no additional data could be read).
+
+2006-03-16 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Bumped version
+
+ * configure.in: Bumped version to 2.2.0, it's about time I made a
+ stable release.
+
+2006-03-15 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parser.c (parser_step_from): If we fail to find a
+ From line, set an error state. Also fixed the End-Of-Data check to
+ prevent an infinite loop if the stream ends with \n\n.
+ (parser_construct_message): Make sure our state starts off at
+ INIT. Also check for the ERROR state in our parser_step() loop and
+ return NULL if we encounter an error.
+
+2006-03-03 Jeffrey Stedfast <fejj@novell.com>
+
+ * util/url-scanner.c (g_url_web_end): Allow urls such as
+ "http://www.novell.com./path" (note the '.' before the path
+ component).
+ (g_url_addrspec_start): If the '@' is the first character in the
+ match, then it isn't a valid email address.
+
+2006-01-12 Jeffrey Stedfast <fejj@novell.com>
+
+ * configure.in: Bumped version to 2.1.19
+
+2006-01-19 Joe Shaw <joeshaw@novell.com>
+
+ * mono/DataWrapper.custom: We need to manually create a decoding
+ filtering stream and wrap that in a StreamWrapper rather than the
+ DataWrapper's GMimeStream directly, which contains undecoded data.
+
+ * mono/GMime.metadata: Rename some enum members, add DataWrapper's
+ GMimeStream property and MimePart's ContentObject properties as
+ items which return an owned ref.
+
+2006-01-12 Jeffrey Stedfast <fejj@novell.com>
+
+ ** made a release of 2.1.18 **
+
+ * gmime/gmime-stream-mem.c (g_mime_stream_mem_get_byte_array): Use
+ g_return_val_if_fail() rather than g_return_if_fail() since we
+ need to return NULL on error.
+
+2006-01-09 Joe Shaw <joeshaw@novell.com>
+
+ * mono/Message.custom: Add a References property. Based on a
+ patch from D Bera <dbera.web@gmail.com>
+
+2006-01-05 Joe Shaw <joeshaw@novell.com>
+
+ * configure.in: Require gtk-sharp 2.4.0. Set the mono API version
+ to <major>.<minor>.0.<interface>, which initially is set to
+ 2.1.0.0, so that version numbers are handled better with gmime
+ upgrades (and hopefully RPM deps on most distros). Bump version
+ to 2.1.18.
+
+ * README: Updated version
+
+ * gmime/gmime-stream-mem.[ch]: Add a
+ g_mime_stream_mem_get_byte_array() method for the mono bindings.
+
+ * mono/DataWrapper.custom:
+ * mono/Header.custom:
+ * mono/Object.custom: Remove WriteToStream() and replace with a
+ new Stream property which returns a wrapped gmime memory stream.
+
+ * mono/GMime.metadata: A bunch of metadata fixes, mainly for
+ 64-bit compatibility. gtk-sharp incorrectly maps off_t to size_t,
+ which is an int; it's actually a long, so map it manually
+ ourselves.
+
+ * mono/ObjectStream.cs: Remove this; it's been replaced by
+ StreamWrapper, which is much more memory efficient.
+
+ * mono/Stream.custom: Seek() returns a long. Remove the
+ CopyToStream() and WriteToStream() methods, since streams can now
+ just be wrapped with a StreamWrapper. Implement the Read()
+ method, and return a long.
+
+ * mono/StreamWrapper.cs: Added. Wraps a GMime.Stream in a
+ System.IO.Stream.
+
+ * mono/gmime-api.raw: Regenerated.
+
+2005-11-14 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (g_mime_references_next): Added for the C#
+ bindings.
+
+2005-10-12 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Updated version
+
+ * configure.in: Bumped version to 2.1.17
+
+ * gmime/gmime-message.c (message_get_header): For added
+ convenience, if the requested header is a Content-* header and a
+ top-level MIME part exists, query for the requested header on the
+ top-level MIME part and return the value.
+
+ * gmime/gmime-parser.c (parser_step_headers): If we weren't able
+ to find the end of the header, save it to our tmp buff before
+ refilling our input buffer and set midline to TRUE. No need to
+ check inptr < inend later because we know it to be true.
+ (parser_step_headers): Append the raw header leftovers in the
+ parser_fill() failure case.
+
+2005-09-27 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message-partial.c
+ (g_mime_message_partial_split_message): Reworked the splitting
+ logic to try and split on whole-lines.
+
+ * gmime/gmime-multipart-signed.c (g_mime_multipart_signed_verify):
+ Return NULL if the number of parts is incorrect.
+
+2005-09-20 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message-partial.c (header_copy): Only set the value
+ if the value is non-NULL. Thanks to Peter Bloomfield for this fix.
+
+2005-08-18 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Updated version
+
+ * configure.in: Bumped version to 2.1.16
+
+2005-08-18 Joe Shaw <joeshaw@novell.com>
+
+ * mono/Makefile.am: Install gmime-api.xml into gapi-2.0
+
+2005-08-17 Joe Shaw <joeshaw@novell.com>
+
+ * configure.in: Require gtk-sharp 2 for the mono bindings.
+
+ * mono/GMime.metadata: Rename a few items that the gtk-sharp 2
+ parser added.
+
+ * mono/gmime-api.raw: Regengerate this using the gtk-sharp 2
+ parser.
+
+2005-08-16 Joe Shaw <joeshaw@novell.com>
+
+ * mono/Makefile.am: libexecdir isn't right; we should be using
+ $prefix/lib instead.
+
+2005-07-12 Jeffrey Stedfast <fejj@novell.com>
+
+ * mono/Makefile.am: libexecdir fixes by Stanislav
+
+ * gmime/internet-address.c: Fixes to various functions that used
+ incorrect g_return*_if_fail variants. Thanks to sbrabec@suse.cz
+
+2005-06-23 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (g_mime_utils_header_decode_date): Handle
+ the case where the number of tokens returned from datetok is 0
+ which can happen if broken software sends an empty Date: header.
+
+2005-06-13 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Updated
+
+ * configure.in: Bumped version to 2.1.15
+
+ * gmime/gmime-parser.c (parser_step_headers): Don't check
+ inptr[-1] unless inptr > start
+
+2005-06-10 Joe Shaw <joeshaw@novell.com>
+
+ * mono/Stream.custom (CopyToStream): Check to see if
+ byte_array.data is IntPtr.Zero and don't try to copy if it is.
+
+2005-06-10 Joe Shaw <joeshaw@novell.com>
+
+ * mono/DataWrapper.custom: Added. Adds a WriteToStream() overload
+ which takes a System.IO.Stream.
+
+ * mono/Header.custom: Ditto.
+
+ * mono/Makefile.am: Add DataWrapper.custom and Header.custom to
+ customs.
+
+ * mono/Object.custom: Remove the GetData() method... it was rather
+ flawed. WriteToStream() is the right way to go about it now. Add
+ a WriteToStream() overload like DataWrapper and Header.
+
+ * mono/Stream.custom: Add an internal CopyToStream() method which
+ instantiates a GMime.StreamMem, calls WriteToStream() on it, and
+ then copies the data from the GByteArray into a System.IO.Stream.
+ Also add a WriteToStream() overload like the others.
+
+2005-05-25 Joe Shaw <joeshaw@novell.com>
+
+ * mono/GMime.metdata: Add a few extra rules since the
+ parser/generator changed how certain types are represented.
+
+ * mono/InternetAddress.custom: Remove this file, move the code to...
+
+ * mono/InternetAddressList.cs: ... this file, making it a
+ first-order object. Since it implements IDisposable and people
+ might want to explicitly dispose it.
+
+ * mono/Message.custom (GetRecipients): Return an
+ InternetAddressList rather than an ICollection, so people can
+ dispose when finished. Also have it always return a valid
+ InternetAddressList, so you don't have to do a null check before a
+ foreach.
+
+ * mono/Makefile.am: Remove InternetAddress.custom from customs and
+ add InternetAddressList.cs to sources.
+
+2005-05-25 Joe Shaw <joeshaw@novell.com>
+
+ * gmime/internet-address.c: Add accessor functions
+ internet_address_get_type(), internet_address_get_name(),
+ internet_address_get_addr() and internet_address_get_members() for
+ binding into the Mono bindings.
+
+ * mono/GMime.metadata: Work around an automatic rename of the
+ gtk-sharp generator of a method named "GetType" to a property
+ named "GType," since this method doesn't return a GType. Rename
+ it to "GetAddressType" which is mapped to an "AddressType"
+ property.
+
+ * mono/gmime-api.raw: Regenerated.
+
+2005-05-20 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (header_fold): Eat up extraneous whitespace
+ after forcing a fold.
+
+2005-03-30 Tim Mooney <Tim.Mooney@ndsu.edu>
+
+ * tests/test-stream.c: include <glib.h>, so we can use G_GNUC_FUNCTION
+ and therefore compile with non-gcc compilers.
+
+2005-04-14 Jeffrey Stedfast <fejj@novell.com>
+
+ * configure.in: Applied patch from
+ mooney@dogbert.cc.ndsu.nodak.edu to not assume that mcs was GNU
+ Mono and to instead verify that it was. Fixes bug #172175.
+
+2005-03-29 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Updated.
+
+ * configure.in: Bumped version to 2.1.14
+
+ * gmime/gmime-parser.c (parser_step_headers): If we didn't find
+ EOL for a header, set state based on 'inptr' rather than
+ 'start'. Fixes a bug parsing headers that cross read boundaries
+ (and where headers are longer than the internal read-ahead buffer
+ size).
+
+2005-03-23 Joe Shaw <joeshaw@novell.com>
+
+ * configure.in: Require gtk-sharp >= 1.0.6 for important
+ memory leak fixes
+
+2005-03-15 Joe Shaw <joeshaw@novell.com>
+
+ * mono/Makefile.am: Build ObjectStream.cs
+
+ * mono/ObjectStream.cs: Added. Implements a .net Stream for
+ getting the conents from a GMime.Object.
+
+2005-03-12 Joe Shaw <joeshaw@novell.com>
+
+ * mono/GMime.metadata: Tag the return values of
+ MessagePart.Message, Message.MimePart, Multipart.GetPart() and
+ Multipart.GetSubpartFromContentId() as "owned", meaning that
+ gtk-sharp should not ref them but take ownership of the single
+ reference that's returned from the underlying C functions.
+
+ * mono/Message.custom: Don't instantiate InternetAddress
+ objects, just deal with the C APIs directly. This saves us a
+ lot of allocations and fixes a bug in gtk-sharp where opaque
+ objects would leak references.
+
+2005-03-07 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-header.c (g_mime_header_prepend): New function to
+ prepend a header to the list.
+
+2005-03-07 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Updated.
+
+ * configure.in: Bumped version to 2.1.13
+
+ * gmime/gmime-charset.c (g_mime_charset_step): Don't bother with
+ MAX() for cases where we'll just end up setting level to 2.
+
+2005-03-07 Joe Shaw <joeshaw@novell.com>
+
+ * mono/GMime.metadata: Add the "owned" flag to the return
+ value parameter for ConstructMessage on the GMimeParser,
+ because this method returns a new object with a refcount
+ of 1. The binding needs to take ownership of the object.
+
+2005-02-14 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Updated
+
+ * configure.in: Bumped version to 2.1.12
+
+2005-01-31 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (header_fold): Don't break apart rfc2047
+ encoded tokens.
+
+2005-01-18 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Updated
+
+ * configure.in: Bumped version to 2.1.11
+
+2005-01-26 Joe Shaw <joeshaw@novell.com>
+
+ * mono/GMime.metdata: The gtk-sharp generator doesn't handle
+ "const unsigned char *" well, so override those methods in
+ metadata.
+
+2005-01-20 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-param.c (param_list_format): If folding mode is
+ enabled, terminate the header with a \n.
+
+2005-01-19 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-part.c (g_mime_part_init): Register a writer for
+ Content-Disposition.
+
+ * gmime/gmime-object.c (g_mime_object_init): Register a new writer
+ func for Content-Type headers so that we don't accidently fold in
+ the middle of a parameter value.
+
+2005-01-13 Joe Shaw <joeshaw@novell.com>
+
+ * autogen.sh: Allow automake 1.9
+
+2005-01-11 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Updated
+
+ * configure.in: Bumped version to 2.1.10
+
+2004-12-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/internet-address.c (internet_address_to_string): rfc2047
+ encode the group name too.
+
+2004-12-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-content-type.c (g_mime_content_type_is_type): Fixed
+ to do as advertised - allow wildcard matching for type.
+
+2004-12-06 Joe Shaw <joeshaw@novell.com>
+
+ * mono/Makefile.am: Add InternetAddress.custom
+
+ * mono/InternetAddress.custom: Added. Implements a new class
+ which will handle the destroying of InternetAddressLists.
+ Implement ParseString, which basically implements a managed
+ version of internet_address_parse_string.
+
+ * mono/Message.custom: Use the InternetAddressList for
+ GetRecipients ().
+
+2004-12-01 Joe Shaw <joeshaw@novell.com>
+
+ * configure.in: Error out if the user explicitly enables the mono
+ bindings and we can't find mcs.
+
+ * gmime.spec.in: Add support for the mono bindings, placing them
+ in a separate gmime-sharp package. Patch from Ryan Skadberg
+ <skadz@stigmata.org>
+
+2004-11-29 Joe Shaw <joeshaw@novell.com>
+
+ * mono/AssemblyInfo.cs.in: Add @srcdir@ to AssemblyKeyFile so we
+ build when builddir != srcdir.
+
+ * mono/Makefile.am: Add gmime-sharp.pub to EXTRA_DIST.
+
+2004-11-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-gpg-context.c: #define _POSIX_SOURCE so it compiles
+ on IRIX.
+
+ * gmime/gmime-multipart-signed.c (multipart_signed_remove_header):
+ Same.
+
+ * gmime/gmime-multipart-encrypted.c
+ (multipart_encrypted_remove_header): Don't return.
+
+2004-11-19 Joe Shaw <joeshaw@novell.com>
+
+ * mono/GMime.metadata: Don't autogenerate get GetDate method
+
+ * mono/Message.custom: Implement it by hand and return a DateTime.
+
+2004-11-17 Joe Shaw <joeshaw@novell.com>
+
+ * mono/GMime.metadata: More metadata goodness.
+
+ * mono/Makefile.am: Added Object.custom and Stream.custom.
+
+ * mono/Object.custom: Add a GetData() method which returns a byte
+ array of the object's data.
+
+ * mono/Stream.custom: Add a wrapper around Seek() so that you
+ don't need to specify whence.
+
+2004-11-16 Joe Shaw <joeshaw@novell.com>
+
+ * configure.in: Generate mono/gmime-sharp.pc.
+
+ * mono/GMime.metadata: Convert all ssize_t and off_t values to
+ ints in C#, since they're not automatically handled by the
+ generator right now.
+
+ * mono/Makefile.am: Install the gmime-sharp stuff as gmime-sharp
+ and not gmime.
+
+ * mono/gmime-sharp.pc.in: Added. pkgconfig file for the mono
+ bindings.
+
+2004-11-16 Joe Shaw <joeshaw@novell.com>
+
+ * Makefile.am: iconv-detect.h should be in DISTCLEANFILES, not
+ CLEANFILES, or else the build fails following a "make clean"
+ unless you re-autogen.
+
+ * gmime/internet-address.[ch]: Added functions
+ internet_address_list_next() and
+ internet_address_list_get_address() since we can't poke at the
+ structures by hand in mono.
+
+ * mono/GMime.metadata: Remove a bunch of commented out stuff, hide
+ the entire InternetAddressList structure. We'd prefer to do it
+ with .net datatypes.
+
+ * mono/Message.custom: Added. Adds a GetRecipients() method which
+ returns an ICollection of InternetAddresses, and a
+ GetRecipientsAsString() method which returns a stringified list
+ for pretty printing.
+
+ * mono/gmime-api.raw: Regenerate this for the new
+ InternetAddress.GetAddress() and Next() methods.
+
+2004-11-15 Joe Shaw <joeshaw@novell.com>
+
+ * Added a mono binding
+
+ * configure.in: Add optional checks for mono and gtk-sharp.
+
+ * Makefile.am: Build the mono subdir if enabled.
+
+ * gmime/Makefile.am: Add $(GLIB_LIBS) to the libgmime LIBADD line.
+
+ * gmime/*.h: Replace GMIME_CHECK macros with the G_TYPE_CHECK
+ ones, because the gtk-sharp binding generator looks for them.
+
+ * gmime/gmime-type-utils.h: Removed.
+
+ * mono/AssemblyInfo.cs.in: Added.
+
+ * mono/sources.xml: Added. The sources file, which tells the
+ generator how to generate the API data.
+
+ * mono/GMime.metadata: Added. Metadata file used to tweak the
+ generated API.
+
+ * mono/Global.custom: Added. The g_mime_init() function isn't
+ being wrapped automatically for some reason, so add the code here.
+
+ * mono/gmime-api.raw: Added. The raw generated API, so that the
+ parser doesn't have to be run by most people.
+
+ * mono/gmime-sharp.pub: Added. Public key used to sign the
+ assembly.
+
+2004-10-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Removed the --enable-ipv6 option. getaddrinfo is
+ now the only way hostname resolution is done. Added checks to see
+ if getaddrinfo requires -lsocket for Solaris boxen.
+
+ * gmime/gmime-host-utils.[c,h]: Removed
+
+ * gmime/gmime.h.in: Removed gmime-host-utils.h
+
+ * gmime/gmime-utils.c (g_mime_utils_generate_message_id): Use
+ getaddrinfo to resolve hostnames, don't bother with the
+ gethostbyname() variants. Makes this code simpler and allows us to
+ get rid of gmime-host-utils.[c,h].
+
+2004-10-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Updated
+
+ * configure.in: Bumped version to 2.1.9
+
+2004-09-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-parser.c (parser_step_headers): Save the entire raw
+ part header as well.
+ (parser_init): Init the rawbuf (will be used for holding the raw
+ part header).
+ (parser_close): Free the rawbuf.
+ (parser_construct_leaf_part): Set the raw header on the mime part.
+ (parser_construct_multipart): Set the raw header on the multipart.
+ (parser_construct_message): Don't use g_mime_message_set_mime_part
+ or we'll end up clearing the raw header that we worked so hard to
+ preserve.
+ (parser_scan_message_part): Same.
+ (parser_scan_multipart_face): Change comparison to >= so that we
+ actually get rid of the last crlf sequence like we meant to.
+ (parser_fill): Get rid of the atleast check (it isn't really
+ needed and can cause breakage).
+
+ * gmime/gmime-message.c (message_get_headers): Modified to only
+ write part headers if the toplevel mime part contains the raw
+ header.
+ (message_write_to_stream): Same.
+ (g_mime_message_set_mime_part): Clear the raw message headers
+ since it obviously won't contain the raw message headers.
+ (message_add_header): If any message headers change, clear the raw
+ header from the toplebel mime part.
+ (message_set_header): Same.
+
+ * gmime/gmime-header.c (g_mime_header_set_raw): New function to
+ set the raw part header (to be used in place of our own folding if
+ available).
+ (g_mime_header_has_raw): New function to check if the raw header
+ is available.
+
+2004-09-28 Peter Bloomfield <PeterBloomfield@bellsouth.net>
+
+ * gmime/gmime-multipart-signed.c (sign_prepare): Must treat
+ multipart/signed and multipart/encrypetd parts as opaque
+ (e.g. don't even attempt to change their encodings).
+
+2004-09-13 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-message.c (write_addrspec): New folding callback to
+ use on addrspec headers.
+ (g_mime_message_init): Register write_addrspec for all address
+ headers.
+
+ * gmime/gmime-utils.c (header_fold): Fixed the logic a bit for
+ structured headers such that we don't break long tokens.
+
+2004-08-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Updated.
+
+ * configure.in: Bumped the version to 2.1.8
+
+ * gmime/gmime.h.in: #include <gmime/gmime-session-simple.h> for
+ ia64 build fix on Debian (required because of the way gtk-doc's
+ scan program works).
+
+ * gmime/gmime-filter-enriched.c (enriched_to_html): Don't replace
+ <nofill> with <pre>. Also, replace lone '\n's with a space as
+ suggested by rfc1896.
+
+2004-08-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_encrypt): Don't set encrypted.asc as
+ the filename anymore.
+
+ * gmime/gmime-multipart-signed.c (g_mime_multipart_signed_sign):
+ Added a hack for Balsa so it can support S/MIME. Also don't set
+ the filename to signature.asc. Balsa maintainers don't want this
+ *shrug*.
+ (g_mime_multipart_signed_verify): Same. These changes really
+ require a design change to CipherContext but that'll have to wait.
+
+2004-08-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Changed the iconv-detect logic to not error-out on
+ fail. The code can properly handle the case where iconv-detect.h
+ doesn't exist, so let it do that instead.
+
+2004-07-30 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-utils.c (rfc2047_encode_get_rfc822_words): Don't use
+ g_unichar_isspace() here, we only want to break 'words' on ascii
+ lwsp.
+
+2004-07-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime.c (g_mime_init): Make intialisation ref-counted.
+ (g_mime_shutdown): Updated.
+
+2004-07-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-utils.c (rfc2047_encode_get_rfc822_words): Break
+ apart long words so that they we don't generate encoded-word
+ tokens that are >75 chars. Fixes bug #145497.
+
+2004-07-04 Jeffrey Stedfast <fejj@novell.com>
+
+ * README: Updated.
+
+ * configure.in: Bumped the version to 2.1.7
+
+ * gmime/gmime-parser.c (parser_construct_leaf_part): Removed code
+ to check that the content_type argument is NULL - it can never be
+ NULL.
+ (parser_scan_multipart_face): Fixed a possible buffer-overrun.
+
+ * gmime/gmime-object.c (process_header): Modified to call
+ g_mime_object_set_content_type() if we got called with a
+ Content-Type header. This way all the ::set_content_type()
+ subclass methods get a chance to update the object's state.
+ (process_header): Return TRUE if we've "processed" the value or
+ FALSE otherwise.
+ (add_header): Only add the header if process_header() didn't do
+ anything with the header.
+ (set_header): Same.
+
+ * gmime/gmime-message.c (g_mime_message_set_sender): Parse the
+ sender string so we can properly encode it before setting it as
+ the From header.
+
+2004-06-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-parser.c (parser_scan_content): Updated to handle
+ crlf sequences.
+ (parser_scan_mime_part_content): Same.
+ (crlf2lf): New function to convert CRLF to LF.
+ (parser_scan_multipart_face): Convert the pre/postface into lf
+ format.
+
+2004-06-27 Jeffrey Stedfast <fejj@novell.com>
+
+ * util/url-scanner.c (g_url_web_end): Some fixes that I had to do
+ recently for Camel as well.
+
+2004-06-22 Jeffrey Stedfast <fejj@novell.com>
+
+ * gmime/gmime-parser.c (parser_construct_leaf_part): Only destroy
+ the existing content_type on the object if it is non-NULL.
+ (parser_construct_multipart): Same.
+
+2004-06-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Added --enable-profile option and removed
+ --enable-gprof. --enable-profile enables gprof and gcov.
+
+ * gmime/gmime-parser.c: #include <stdlib.h> for strtoul()
+ (parser_construct_leaf_part): Got rid of an unused variable.
+
+ * gmime/gmime-param.c (rfc2184_param_new): Got rid of an unused
+ variable.
+ (rfc2184_decode): Got rid of an unused variable.
+
+ * util/gtrie.c (trie_utf8_getc): Get rid of the unused labels.
+
+2004-06-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream-filter.c (stream_write): Set flushed to
+ FALSE.
+ (stream_read): Set flushed to FALSE if we end up filtering more
+ data.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Record the
+ nodata state.
+ (gpg_verify): Check the nodata state.
+
+2004-06-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Updated.
+
+ * configure.in: Bumped version to 2.1.6
+
+ * gmime/gmime-parser.c (parser_construct_multipart): Instead of
+ using g_mime_object_set_content_type(), destroy the current
+ content_type object and set our own on it directly. This prevents
+ the raw Content-Type header value from being overridden by the
+ re-written version from our parsed object.
+ (parser_construct_leaf_part): Same.
+
+ * gmime/gmime-part.c (mime_part_write_to_stream): Don't sync the
+ GMimeDisposition object to the header here anymore. We want to try
+ and keep the original raw header if this is a parsed message.
+
+2004-06-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-part.c (sync_content_disposition): Moved. Also
+ protect against a NULL disposition.
+ (mime_part_write_to_stream): Sync the Content-Disposition header
+ before writing to the stream.
+
+ * gmime/gmime-utils.c (header_fold): Fixed a folding bug where we
+ could get a blank line (well, wasn't really blank - but we would
+ get a "\n\t\n" sequence which isn't really useful nor desirable).
+
+ * gmime/gen-table.c: Added a new bit and corresponding macro.
+
+ * gmime/gmime-table-private.h: Updated.
+
+ * gmime/gmime-param.c (encode_param): If conversion into the best
+ charset fails, fall back to using UTF-8. Also use the new
+ convenience macro, is_attrchar(), to decide which characters in
+ the param value to encode.
+ (param_list_format): Use is_attrchar() for calculating how many
+ characters we expect to either have to quote or encode.
+ (decode_param_list): Rewritten.
+
+2004-05-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-data-wrapper.c (g_mime_data_wrapper_set_stream):
+ Updated gtk-doc comments to note that you'll probably also want to
+ call g_mime_data_wrapper_set_encoding().
+
+2004-05-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-message.c (write_subject): New function. Use
+ unstructured folding rather than the default.
+ (g_mime_message_init): Register the subject header writer.
+
+ * gmime/gmime-utils.c (g_mime_utils_structured_header_fold): New
+ function (same as g_mime_utils_header_fold() but more
+ appropriately named).
+ (g_mime_utils_unstructured_header_fold): Fold unstructured headers
+ like Subject.
+ (header_fold): Moved all of the g_mime_utils_header_fold() logic
+ into here with a small adjustment to differentiate structured vs
+ unstructured header folding.
+
+2004-05-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-param.c (param_list_format): Modified to try and
+ squeeze more characters per line and still keep it under 76 chars
+ per line.
+
+2004-05-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-filter-gzip.c (g_mime_filter_gzip_finalize): Call
+ inflateEnd/deflateEnd to fix a memory leak.
+
+ * gmime/gmime-parser.c (parser_offset): If priv->offset == -1,
+ don't bother doing any pointer arithmetic as it will result in a
+ value that will break certain code (eg. the boundary matching
+ code).
+
+2004-05-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_new): Remember if our
+ environment is in UTF-8 or not.
+ (gpg_ctx_parse_status): Only convert the user name from the locale
+ charset to UTF-8 if the env isn't UTF-8.
+ (gpg_ctx_parse_status): Convert the password to the locale charset
+ if the locale isn't UTF-8.
+
+2004-05-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Updated.
+
+ * configure.in: Bumped version to 2.1.5
+
+ * gmime/gmime-multipart-signed.c (g_mime_multipart_signed_verify):
+ Updated.
+
+ * gmime/gmime-cipher-context.h: Added a new GMimeSignatureValidity
+ which replaces the now deprecated GMimeCipherValidity. Typedef
+ GMimeCipherValidity to GMimeSignatureValidity and wrap deprecated
+ functions with #ifndef GMIME_DISABLE_DEPRECATED.
+
+ * gmime/gmime-cipher-context.c (g_mime_signature_validity_new):
+ New function.
+ (g_mime_signature_validity_free): New.
+ (g_mime_signature_validity_get_status): New.
+ (g_mime_signature_validity_set_status): New.
+ (g_mime_signature_validity_get_details): New.
+ (g_mime_signature_validity_set_details): New.
+ (g_mime_signature_validity_get_signers): New.
+ (g_mime_signature_validity_add_signer): New.
+ (g_mime_cipher_validity_new): Deprecated.
+ (g_mime_cipher_validity_init): Deprecated.
+ (g_mime_cipher_validity_get_valid): Deprecated.
+ (g_mime_cipher_validity_set_valid): Deprecated.
+ (g_mime_cipher_validity_get_description): Deprecated.
+ (g_mime_cipher_validity_set_description): Deprecated.
+ (g_mime_cipher_validity_clear): Deprecated.
+ (g_mime_cipher_validity_free): Deprecated.
+ (g_mime_signer_new): New function
+ (g_mime_signer_free): New function.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Save more
+ state.
+ (gpg_verify): Updated to fill out the new GMimeSignatureValidity
+ structure with more details.
+
+2004-05-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-host-utils.h: Wrap inclusion of netdb.h with G_OS_WIN32
+
+ * util/memchunk.c (memchunk_alloc): Fixed another cast warning on
+ win32.
+
+ * gmime/gmime-message.c (g_mime_message_get_mime_part): New
+ function.
+ (g_mime_message_get_body): Fixed a bug where is_html could get set
+ to TRUE even if the part wasn't html.
+
+2004-05-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * util/memchunk.c (memchunk_alloc): Add parens to fix casting
+ warning on win32.
+
+ * gmime/gmime-message.c (write_received): Rewritten.
+
+2004-05-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-filter-gzip.c: New filter for compressing/inflating
+ gzip streams.
+
+2004-05-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-message.c (write_received): Be careful to never
+ append bytes beyond the end of the header value (eg the nul byte).
+
+ * gmime/gmime-utils.c (g_mime_utils_header_fold): Don't allow
+ folded headers to end with \n\n.
+
+2004-04-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_decrypt): Reset the stream before
+ trying to parse it.
+
+2004-04-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-utils.c (g_mime_utils_header_fold): Rather than
+ always using a tab character when folding, use the lwsp character
+ that we are wrapping at instead.
+
+2004-04-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-parser.c (g_mime_parser_init): Initialise
+ respect_content_length.
+
+2004-04-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Updated
+
+ * configure.in: Bumped version to 2.1.4
+
+ * gmime/gmime-part.c (g_mime_part_get_content): Disable debug
+ warning.
+
+ * gmime/gmime-iconv.c: Same.
+
+ * gmime/gmime-iconv-utils.c: Disable warnings.
+
+ * gmime/gmime-utils.c (decode_msgid): Try to always return a
+ string buffer containing whatever we can get from the msg-id, even
+ if it isn't a valid msg-id token.
+
+2004-04-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-content-type.c
+ (g_mime_content_type_new_from_string): Chew up lwsp between the
+ end of the subtype and the ';' token, if there is any.
+
+2004-04-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Save both the
+ TRUST_UNDEFINED trust state as well as the whether or not we get a
+ NO_PUBKEY status message.
+
+2004-04-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream-filter.c (stream_read): Check that we haven't
+ already flushed the stream if the source stream is at EOS - fixes
+ an infinite loop case if the user doesn't use a loop to check
+ eos() each loop.
+
+2004-04-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream-cat.c (stream_write): This should be writing
+ data, not reading it from the underlying streams. Oops.
+
+2004-03-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-charset.c (charset_best_mask): Don't use the charset
+ if it is lang specific and the lang doesn't match the
+ locale. Fixes bug #138218.
+
+ * gmime/gmime-utils.c (mktime_utc): New function to mktime() into
+ UTC.
+ (parse_rfc822_date): Use mktime_utc() instead of doing it
+ ourselves.
+ (parse_broken_date): Same.
+
+2004-03-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream-buffer.c (stream_write): Fixed a bug when
+ writing across block boundaries.
+
+2004-03-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-cipher-context.c (g_mime_cipher_verify): Allow the
+ sigstream to be NULL (it is optional afterall).
+
+ Thanks to Peter Bloomfield for reminding me about
+ g_ascii_strdown() and g_ascii_strup() and for providing the
+ original patch.
+
+ * gmime/gmime-charset.c (locale_parse_lang): Don't use
+ g_ascii_strdown() and g_ascii_strup() as these functions strdup
+ the result rather than working on the input string.
+ (g_mime_charset_map_init): Instead of strdup()ing the charset name
+ and then using g_ascii_strdown(), just use g_ascii_strdown() since
+ it malloc's. Also, even if we have nl_langinfo(), we want to parse
+ LC_ALL to get the locale lang.
+
+2004-03-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Updated
+
+ * configure.in: Bumped version to 2.1.3
+
+2004-02-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream-buffer.c (stream_write): Shrink buflen down
+ by the number of bytes flushed or we'll loop forever writing the
+ same block over and over.
+
+ * gmime/gmime-strea.[c,h]: Make stream_write() take a const char
+ *buf argument instead of char *buf.
+
+ * gmime/gmime-stream-*.c (stream_write): constify the buf
+ argument.
+
+ * gmime/gmime-stream-null.c (stream_write): Count newlines as
+ well.
+
+2004-02-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * util/*.[c,h]: Moved here from gmime/
+
+ * gmime/*.h: Fixed #includes
+
+ * gmime/cache.[c,h]: Moved to util/
+
+ * gmime/gtrie.[c,h]: Moved to util/
+
+ * gmime/list.[c,h]: Moved to util/
+
+ * gmime/md5-utils.[c,h]: Moved to util/
+
+ * gmime/memchunk.[c,h]: Moved to util/
+
+ * gmime/url-scanner.[c,h]: Moved to util/
+
+ * gmime/gmime-parser.c: Don't use gobject macro casts.
+
+ * gmime/gmime-filter-md5.c: Move the MD5Context into a private
+ structure so that we don't need to install md5-utils.h
+
+2004-02-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-utils.c (rfc2047_encode): Return a duplicate of the
+ input string if there are no 'words'.
+
+ * gmime/internet-address.c (internet_address_to_string): Make sure
+ ia->name is not an empty string.
+
+2004-02-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-parser.c (parser_construct_multipart): Pop our end
+ boundary before scanning postface text data. Prevents a hang if a
+ multipart brokenly has 2 end boundaries.
+
+2004-02-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/*.c: Use g_object_ref/unref instead of the
+ g_mime_object_ref/unref and g_mime_stream_ref/unref.
+
+2004-02-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-utils.c (rfc2047_encode): Changed to take a safemask
+ arg instead of a gboolean phrase arg since we never used 'phrase'
+ directly.
+ (g_mime_utils_header_encode_phrase): Pass IS_PSAFE as second
+ argument.
+ (g_mime_utils_header_encode_text): Pass IS_ESAFE as second
+ argument.
+
+2004-02-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Updated.
+
+ * configure.in: Bumped version to 2.1.2
+
+ * examples/README: New README explaining the purpose of each of
+ the example sources.
+
+2004-02-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-parser.c (parser_construct_message): If we've been
+ told to respect the Content-Length header, then parse the length
+ value and calculate the offset of the beginning of the next
+ message.
+ (g_mime_parser_get_respect_content_length): New function to get
+ whether we've been told to respect the Content-Length header.
+ (g_mime_parser_set_respect_content_length): New function to set
+ this option.
+ (parser_offset): Now takes a private struct pointer rather than
+ the parser object since it didn't really need it. Also makes it
+ usable from check_boundary().
+ (g_mime_parser_tell): Updated.
+ (check_boundary): Only scan for end-boundaries if we've reached
+ the projected end-of-content offset as calculated using the
+ Content-Length header.
+
+2004-02-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Generate examples/Makefile
+
+ * gmime/gmime-utils.c (g_mime_utils_generate_message_id):
+ Simplified and updated for g_gethostbyname_r() API changes.
+
+ * gmime/gmime-error.h: Changed the #define of GMIME_ERROR_QUARK to
+ just be the GQuark variable. Also added GMIME_ERROR_IS_SYSTEM() to
+ decide if an error is a system error (aka errno) or a GMime error.
+
+ * gmime/gmime.c: Make gmime_error_quark an actual variable and
+ initialise it here.
+
+2004-02-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-host-utils.c (g_gethostbyname_r): Replace the herr
+ argument with a GError to make the interface a bit nicer to use.
+ (g_gethostbyaddr_r): Same.
+
+ * gmime/url-scanner.c: Added single/double quotes to url_braces[]
+ in case the user is quoting the url.
+ (g_url_web_end): Add "-;:" to list of punctuation to strip off the
+ end of urls. Also fixed to handle user@domain's
+ (g_url_addrspec_start): Strip open brace characters from the
+ beginning of the addr.
+ (g_url_web_start): Make sure "www" wasn't part of something not a
+ url (like "Ewww.Gross") by check that pos[-1] is either an open
+ brace or whitespace.
+ (g_url_addrspec_end): Don't allow toplevel domain addr-specs
+ (if we encounter something that looks like it is a toplevel domain
+ addr, it is more likely to be bogus than correct).
+
+2004-02-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream-buffer.c (g_mime_stream_buffer_gets): Strip
+ off \r too if the stream is in the canonical form.
+
+ * gmime/gmime.c (g_mime_shutdown): Oops, call
+ g_mime_charset_map_shutdown(), not g_mime_charset_shutdown().
+
+2004-01-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime.c (g_mime_shutdown): New public function to shutdown
+ GMime. Fixes a segfault in applications that dynamically
+ load/unload GMime during execution.
+
+ * gmime/gmime-iconv.c (g_mime_iconv_init): Don't register an
+ atexit handler.
+ (g_mime_iconv_shutdown): Make public.
+
+ * gmime/gmime-charset.c (g_mime_charset_map_init): Don't set a
+ g_atexit handler for the shutdown routine.
+ (g_mime_charset_map_shutdown): Make public.
+
+2004-01-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-param.c: Disable debugging and conditionally disable
+ warnings.
+
+ * gmime/gmime-multipart.c: Disable debugging.
+
+ * gmime/gmime-stream.c: Disable debugging.
+
+ * gmime/internet-address.c: Same.
+
+ * gmime/gmime-parser.c: Conditionally disable warnings.
+
+2004-01-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-host-utils.c (g_gethostbyaddr_r): Fixed some compile
+ problems in the IPv6 implementation.
+
+2003-12-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream-mmap.c (g_mime_stream_mmap_new): Don't add
+ getpagesize() to the file length.
+ (g_mime_stream_mmap_new_with_bounds): Same.
+
+2003-12-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_parse_status): Don't immediately
+ prompt for a passwd after receiving the NEED_PASSPHRASE status
+ message. Instead, parse the userid that gpg needs a passwd for and
+ store it on our context. Wait for a GET_HIDDEN status message
+ before prompting, this way if the user has their gpg configured to
+ use gpg-agent, the user won't get 2 passwd prompts.
+
+2003-12-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-parser.c (parser_step_headers): If scanning for eoln
+ results in finding inend, request a refill and try again (changed
+ from inptr + 1 >= inend).
+
+2003-12-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/internet-address.c (decode_domain): Make sure domain->len
+ > 0 before checking domain->str[domain->len - 1].
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_op_start): Properly set the
+ O_NONBLOCK flag on each of the pipes (ie. we need to get the
+ current flags first and then add the O_NONBLOCK flag rather than
+ just setting the O_NONBLOCK flag by itself).
+
+2003-12-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Updated.
+
+ * configure.in: Bumped version to 2.1.1
+
+2003-12-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_op_start): Modified the code
+ that closes the child's fds to use fcntl and also to start at fd =
+ 3 so as to get rid of the need to check for stdin/out/err.
+
+ * gmime/gmime-filter-from.c (filter_filter): Fixed to malloc the
+ correct buffer length.
+
+2003-10-28 Pawel Salek <pawsa@theochem.kth.se>
+
+ * gmime.h.in: Use macros rather than the global variables to
+ prevent compiler warnings.
+
+ * gmime-error.h: Removed the trailing comma after the last enum
+ value to fix ANSI compile warnings.
+
+ * gmime-filter-basic.h: Same.
+
+ * gmime-filter-best.h: Here too.
+
+ * gmime-filter-crlf.h: And here.
+
+ * gmime-filter-from.h: Same.
+
+ * gmime-filter-yenc.h: Again here.
+
+ * gmime-multipart-encrypted.h: And here.
+
+ * gmime-multipart-signed.h: Here too.
+
+ * gmime-stream-buffer.h: Same.
+
+ * gmime-stream.h: And finally here.
+
+2003-10-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Added a check for altzone.
+
+ * gmime/gmime-utils.c (parse_broken_date, parse_rfc822_date):
+ Account for altzone if the system libc defines it.
+
+2003-09-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-host-utils.c (g_gethostbyaddr_r): IPv6
+ implementation rewritten to use getnameinfo() which is the proper
+ function to use in this case.
+
+ * gmime/internet-address.c (internet_address_list_length): Changed
+ to take a const argument.
+ (internet_address_to_string): Now takes a const InternetAddress.
+ (internet_address_list_to_string): Now takes a const
+ InternetAddressList.
+
+2003-09-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream.c (g_mime_stream_read): If len == 0, return 0.
+ (g_mime_stream_write): Same.
+
+ * gmime/gmime-parser.c (parser_push_boundary): Fix the
+ boundarylenfinal calculation. Thanks to Bart Visscher for catching
+ this mistake.
+
+2003-08-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/md5-utils.c (md5_get_digest_from_file): Open in binary
+ mode, fixes a bug when built on Win32 systems.
+
+2003-08-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Bumped to version 2.1.0
+
+ * configure.in: Bumped to version 2.1.0
+
+ * gmime/gmime-charset.c (g_mime_charset_name): Added back this
+ symbol in order to avoid breaking ABI.
+ (g_mime_charset_locale_name): Same.
+
+ * gmime/gmime-utils.c (g_mime_utils_generate_message_id): Slight
+ fix for growing the buffer used by g_gethostbyname_r().
+
+2003-08-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime.h.in: Added new headers.
+
+ * gmime/gmime-utils.c (g_mime_utils_generate_message_id): Use the
+ re-entrant g_gethostbyname_r() function rather than
+ gethostbyname() so that we are threadsafe.
+
+ * gmime/gmime-host-utils.[c,h]: New source files containing
+ gethostbyname_r() and gethostbyaddr_r() implementations.
+
+ * gmime/gmime-filter-windows.[c,h]: New source files implementing
+ a windows charset detection filter.
+
+ * gmime/gmime-charset.c (g_mime_charset_iso_to_windows): New
+ function to return the windows-cp125# equivalent charset for
+ iso-8859-# charsets.
+
+ * gmime/gmime-parser.c (parser_push_boundary): Soptimise a bit :-)
+ (parser_push_boundary):
+
+2003-08-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-multipart.c (g_mime_multipart_foreach): Simplified.
+
+ * gmime/gmime-stream-cat.c (stream_read): Same here.
+ (stream_write): And finally here.
+
+ * gmime/gmime-stream-file.c (stream_read): Same.
+ (stream_write): And again...
+
+ * gmime/gmime-stream-fs.c (stream_read): Here too.
+ (stream_write): And here.
+
+ * gmime/gmime-stream-mmap.c (stream_read): Same as the mem stream.
+ (stream_write): Same.
+
+ * gmime/gmime-stream-mem.c (stream_read): Need to fix the MIN
+ expresion so that both args are signed, otherwise 'len' will be
+ the min if the 'bytes-left' calculation is negative.
+ (stream_write): Same.
+
+2003-07-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-message.c (g_mime_message_get_recipients): Return
+ const.
+
+ * gmime/gmime-message-part.c (g_mime_message_part_get_message):
+ Ref the content message before returning it.
+
+2003-07-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-multipart.c (g_mime_multipart_foreach): Don't
+ descend recursively... make the user descend into sub-multiparts
+ him/herself. This makes more sense since the callback will be
+ called on the multipart too...
+ (g_mime_multipart_get_subpart_from_content_id): Make checking if
+ the subpart is a multipart more efficient by using
+ GMIME_IS_MULTIPART macro.
+
+2003-07-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-charset.c (g_mime_charset_canon_name): Updated to
+ return canonical charset names for windows-cp125x charsets.
+
+2003-06-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Added a section for links to language bindings starting
+ with the Perl MIME::Fast modules.
+
+ * docs/reference/question_index.sgml: Updated docs about the Perl
+ bindings.
+
+ * docs/tutorial/gmime-tut.sgml: Updated slightly.
+
+2003-06-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-parser.c (g_mime_parser_get_persist_stream): New
+ function to get whether or not the parser will attempt to keep the
+ content on disk when it constructs messages.
+ (g_mime_parser_set_persist_stream): New function to set whether or
+ not the above should be done.
+ (parser_scan_mime_part_content): Only load content if persist and
+ seekable are both TRUE.
+
+ * gmime/gmime-stream-fs.c (g_mime_stream_fs_get_owner): Same idea.
+ (g_mime_stream_fs_set_owner): And here.
+
+ * gmime/gmime-stream-file.c (g_mime_stream_file_get_owner): New
+ function, just like StreamMem.
+ (g_mime_stream_file_set_owner): Same.
+
+ * gmime/gmime-stream-mem.c (g_mime_stream_mem_set_owner): New
+ function to set whether or not the memory stream should free the
+ backend memory buffer when finalized.
+ (g_mime_stream_mem_get_owner): New function to get the above
+ attribute.
+
+2003-06-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gtrie.c (g_trie_free): Free the fail_states array.
+
+2003-05-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-common.c (g_mime_strcase_hash): Oops, fixed a bug.
+
+ * gmime/gmime-multipart-signed.c (g_mime_multipart_signed_verify):
+ Do not strip trailing whitespace when verifying, this should allow
+ us to verify both rfc2015 and rfc3156 signed messages (as well as
+ this being the correct way of doing it anyway).
+
+2003-05-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-common.[c,h]: New source files implementing some
+ common routines scattered throughout the gmime sources (currently
+ a strcase_hash and strcase_equal implementation).
+
+ * gmime/gmime-object.c (type_registry_init): Use the new
+ g_mime_strcase_[hash,equal] functions from gmime-common.h.
+ (g_mime_object_register_type): Here too.
+
+ * gmime/gmime-filter-enriched.c
+ (g_mime_filter_enriched_class_init): Use the new
+ g_mime_strcase_[hash,equal] functions from gmime-common.h.
+
+2003-05-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-parser.c (parser_construct_multipart): Fixed to
+ properly handle multiparts which do not end with their own
+ end-boundary. See bug #113527 for details.
+
+2003-05-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Check for sys/param.h
+
+ * gmime/gmime-stream-mmap.h: Removed sys/mman.h and unistd.h from
+ the #includes. These are needed in the ehader and will break the
+ build on win32.
+
+ * gmime/gmime-utils.c: Only #include sys/param.h if the system has
+ it. Also added unistd.h and sys/types.h as they should have been
+ there for pid_t.
+
+2003-05-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-message.c (handle_multipart_mixed): Don't look at
+ the subtype of the first_type unless we have already defined
+ first_type. Fixes a crash.
+
+ * gmime/gmime-multipart.c
+ (g_mime_multipart_get_subpart_from_content_id): Don't return a
+ const GMimeObject, ref it to be consistant with the rest of the
+ API.
+
+ * gmime/gmime-message-partial.c
+ (g_mime_message_partial_split_message): Fixed an optimisation gone
+ bad. Thanks to Piotr Klaban for reporting this.
+
+2003-05-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * tests/test-mbox.c: Fixed a memory leak.
+
+ * gmime/gmime-multipart-encrypted.c: Same as below.
+
+ * gmime/gmime-multipart-signed.c: Fixed the prototype for
+ write_to_stream().
+
+2003-05-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * docs/reference/streams.sgml: Updated for correctness.
+
+ * docs/reference/data-wrappers.sgml: Pretty much re-written to
+ better explain GMimeDataWrapper.
+
+ * gmime/gmime-session-simple.[c,h]: New simple instantiable class
+ implementing the GMimeSession interfaces.
+
+2003-04-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * tests/test-mime.c: Fixed some compile warnings.
+
+ * src/uudecode.c: Fixed some compile warnings.
+
+ * src/uuencode.c: Fixed some compile warnings.
+
+ * gmime/gmime-parser.c (parser_scan_content): Initialise 'start'.
+
+ * gmime/gmime-multipart-signed.c: #include <string.h>
+
+ * gmime/gmime-message-part.c: #include <string.h>
+
+ * gmime/gmime-filter-enriched.c: #include <stdlib.h> for strtoul.
+
+ * gmime/gmime-charset.c (strdown): New function to lowercasify a
+ string inline (rather than being lame and strdup'ing the bloody
+ string like g_ascii_strdown does).
+
+ * gmime/gmime-iconv.c: Turn off cache debugging.
+
+2003-04-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_new): Initialise seen_eof1 to
+ TRUE.
+ (gpg_ctx_set_ostream): Set seen_eof1 to FALSE here, this way we
+ only ever check for EOF for gpg's stdout if we care about the data
+ received from it.
+ (gpg_ctx_parse_status): Remove the hack that set seen_eof1 to TRUE
+ when we received a TRUST status from gpg when verifying a
+ signature. Same for when importing signatures.
+ (gpg_ctx_op_step): Only FD_SET() fd's that we have not finished
+ reading from.
+ (gpg_ctx_op_exited): #if 0'd for now since we aren't using it
+ anymore. Keeping it around for historical reasons and in case we
+ find we really do need it back.
+
+2003-04-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Check for netdb.h, gethostname and gethostbyname.
+
+ * gmime/gmime-utils.c (g_mime_utils_generate_message_id): Guard
+ against systems without netdb.h, gethostname() and/or
+ gethostbyname(). Seems MingW does not have these things.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_get_diagnostics): Flush the
+ diagnostics stream and append a nul-byte. This allows us to return
+ a const char * which will allow us to avoid strdup/free later.
+ (gpg_ctx_free): Unref the diagnostics stream.
+ (gpg_ctx_new): Get the locale charset and setup a charset filter
+ for the diagnostics stream (use a stream instead of a GByteArray
+ like we did before so we can do charset conversion more easily).
+ (gpg_ctx_op_step): Use g_mime_stream_write() to append data to the
+ diagnostics buffer instead of g_byte_array_append() - this way we
+ get some charset filtering action. When reporting errors, use
+ gpg_ctx_get_diagnostics(). Also make the errors reported to the
+ user a little nicer.
+ (gpg_sign): Diagnostics is now const, so don't free the result.
+ (gpg_verify): Same. But also don't exit the main loop when gpg
+ exits - there could still be data in the pipes left to read.
+ (gpg_encrypt): Same as gpg_sign().
+ (gpg_decrypt): Same here.
+ (gpg_import_keys): Here too.
+ (gpg_export_keys): And here.
+ (gpg_ctx_parse_status): Convert the userid hint to UTF-8.
+
+2003-03-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/*.c: s/g_str[n]casecmp/str[n]casecmp/g
+
+ * configure.in: Change the check for mmap so that we know we not
+ only have mmap defined, but also that it "works". Also added
+ checks for strcasecmp and strncasecmp and define them to the glib
+ versions if appropriate (g_ascii_str[n]casecmp since
+ g_str[n]casecmp is apparently deprecated *sigh*). Doing this
+ because I don't want to type g_ascii_str[n]casecmp. Call me a lazy
+ bastard, but this is rediculous.
+
+ * gmime/gmime-filter-enriched.[c,h]: New source files that can be
+ used to convert text/enriched and text/rtf to text/html.
+
+2003-03-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * PORTING: Began writing a porting guide for developers porting
+ their applications from GMime 2.0 to GMime 2.2.
+
+ * gmime/gmime-utils.c (g_mime_utils_8bit_header_encode_phrase):
+ Re-added for binary compatability. At least for now?
+ (g_mime_utils_8bit_header_encode): Same.
+ (g_mime_utils_8bit_header_decode): Here too.
+
+2003-03-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/internet-address.c (internet_address_new_name): Use
+ header_decode_phrase().
+ (internet_address_new_group): Same.
+ (internet_address_set_name): Again here.
+ (encoded_name): Always use encode_phrase() here if rfc2047_encode
+ is TRUE, even if the raw name contains no 8bit characters. It
+ *should* do the Right Thing (tm) now.
+
+ * gmime/gmime-param.c (decode_param): Use
+ g_mime_utils_header_decode_text().
+
+ * gmime/gmime-message.c (g_mime_message_set_subject): Use
+ g_mime_utils_header_encode_text().
+
+ * gmime/gmime-utils.c (g_mime_utils_header_encode_phrase):
+ Renamed. Also rewritten to do the Right Thing (ie. Group 'word's
+ by type and so forth).
+ (g_mime_utils_header_encode_text): Renamed from
+ 8bit_header_encode() to make it clear that this function is meant
+ to encode 'text' fields (see rfc822 for the definition of 'text'
+ and for which headers have text values). Does the same basic
+ thing, but now shares a lot of code with encode_phrase().
+ (rfc2047_encode_get_rfc822_words): Renamed from
+ rfc2047_encode_phrase_get_words() - also now handles WORD_QSTRING
+ and takes an arg to determine whether or not to allow for QSTRING
+ words.
+ (g_mime_utils_text_is_8bit): Don't go past '\0' if we encounter
+ one before inend. Should allow our caller to cheat and pass in -1
+ instead of strlen()ing the string if the string is nul-terminated.
+ (g_mime_utils_header_decode_text): Renamed from
+ 8bit_header_decode(). Also made a lot less strict.
+ (g_mime_utils_header_decode_phrase): Basically the same as
+ decode_text() but with the same strictness of previous versions.
+
+2003-03-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-message.c (g_mime_message_set_subject): Encode the
+ subject before setting it in the raw header list.
+
+ * gmime/gmime-header.c (g_mime_header_add): Don't try to encode
+ the header here. This is not our responsibility.
+ (g_mime_header_set): Same.
+
+2003-03-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-utils.c (rfc2047_encode_word): Add 1 to enclen so as
+ to protect against buffer overruns.
+ (rfc2047_encode_phrase_get_words): if c > 127 && c < 256, then set
+ encoding to MAX (encoding, 1), not 2.
+
+2003-03-11 Charles Kerr <charles@rebelbase.com>
+
+ * gmime/md5-utils.c (md5_get_digest_from_file): fix
+ dangling file pointer.
+
+2003-03-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/url-scanner.c (g_url_addrspec_end): Make sure inptr != pos
+ + 1, if it does, then return FALSE.
+
+2003-03-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Check that the compiler supports the inline
+ optimisation keyword (or variant) and #define it to 'inline'.
+
+ * gmime/gtrie.c (trie_utf8_getc): Same.
+
+ * gmime/gmime-filter-html.c (html_utf8_getc): Use the inline macro.
+
+2003-03-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-filter-charset.c (filter_filter): Use outbuf -
+ filter->outbuf to calculate how much data we've written - simpler
+ and less likely to be wrong.
+ (filter_complete): Same.
+
+ * gmime/gmime-iconv.c: Modified to use the new cache
+ implementation in cache.c
+
+ * gmime/cache.[c,h]: New source files implementing an LRU cache.
+
+ * gmime/list.[c,h]: New source files containing a really nice/fast
+ linked-list implementation.
+
+2003-03-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-iconv.c (iconv_cache_bucket_new): If the current
+ list of cache buckets is non-NULL, set list->prev to the new
+ bucket being prepended.
+ (g_mime_iconv_open): Only expire unused if the cache size is
+ greater than the max allowable size.
+
+2003-02-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream-filter.c (stream_read): Set priv->flushed to
+ TRUE if we call g_mime_filter_complete() on our filters.
+ (stream_eos): It's not actually the end of the stream until we've
+ flushed the filters. This fixes some possible truncation when
+ reading from a filtered stream.
+
+2003-02-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Bumped version to 2.1.0
+
+ * configure.in: Bumped version to 2.1.0
+
+ * gmime/gmime-utils.c (rfc2047_decode_word): Use
+ g_mime_locale_charset().
+
+ * gmime/gmime-param.c (rfc2184_decode): Use
+ g_mime_locale_charset().
+
+ * gmime/gmime-iconv-utils.c (iconv_utils_init): Same as
+ below. Also use g_mime_locale_charset() rather than
+ g_mime_charset_locale_name().
+
+ * gmime/gmime-iconv.c (g_mime_iconv_open): Use
+ g_mime_charset_iconv_name() instead of the older deprecated
+ g_mime_charset_name() function.
+
+ * gmime/gmime-charset.c (g_mime_charset_map_init): Initialize the
+ locale_lang.
+ (g_mime_charset_iconv_name): Renamed from g_mime_charset_name()
+ (g_mime_charset_canon_name): New function which does almost the
+ same thing as g_mime_charset_iconv_name() except that it will
+ always return the canonical forms of the iso-8859 charsets.
+ (g_mime_locale_charset): Renamed from g_mime_charset_locale_name()
+ (g_mime_locale_language): New function to return the user's locale
+ language.
+ (g_mime_charset_language): New function to map charsets to their
+ language code (meant for CJKR).
+
+2003-02-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README: Bumped version to 2.0.2
+
+ * configure.in: Bumped version to 2.0.2
+
+ * gmime/gmime-parser.c (parser_scan_content): Stop looping if/when
+ we find EOS in all cases. Also handle the case where an
+ [end-]boundary ends an an EOS rather than a new-line.
+
+2003-02-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/url-scanner.c (g_url_file_end): If the file:// url is
+ preceded with some sort of brace, when scanning for the end of the
+ url - take this into consideration.
+ (g_url_web_end): Same.
+
+2003-02-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-gpg-context.c: #include <sys/time.h>
+
+2003-02-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/url-scanner.c: Fixed the table to treat >=127 as a CTRL
+ character.
+
+ * gmime/gtrie.c (trie_utf8_getc): When we encounter an invalid
+ UTF-8 sequence, update in to point to in+1 and return 0xffff.
+ (g_trie_add): Handle invalid UTF-8 sequences (ie, c == 0xffff).
+ (g_trie_search): Same.
+
+ * gmime/gmime-filter-html.c (html_utf8_getc): Shortcut if inptr ==
+ inend by returning 0 and treating it as if we found the
+ terminating nul-char.
+
+2003-02-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped the version to 2.0.1
+
+ * docs/*: A completely new set of documentation.
+
+2003-02-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-multipart.c (multipart_remove_part): When the part
+ being removed is not the first part in the list, make sure to set
+ node->prev->next = node->next -- oops :-)
+ (multipart_remove_part_at): Same.
+
+2003-01-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped the version to 2.0.0
+
+ * gmime/gmime-filter-html.c (writeln): Read the stream as UTF-8
+ rather than 8bit so that we can properly write out unicode
+ entities.
+
+2002-12-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ Build fixes for G_DISABLE_DEPRECATED
+
+ * gmime/gmime-param.c (encode_param): Replace calls to
+ g_string_sprintfa() with g_string_append_printf() since the former
+ is marked as being deprecated.
+ (param_list_format): Same.
+
+ * gmime/gmime-utils.c (rfc2047_encode_word): Here too.
+
+2002-12-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped the version to 1.90.8
+
+ * doc/gmime-doc.sgml: Added a section for GMimeFilterMd5.
+
+ * doc/gmime-sections.txt: Added a section on GMimeFilterMd5.
+
+ * tests/test-parser.c (print_mime_struct): Validate Content-Md5
+ headers.
+
+ * gmime/gmime-part.c (g_mime_part_set_content_md5): Rewritten to
+ use the md5 filter and also to do things the right way by
+ converting textual parts to their canonical CRLF form.
+ (g_mime_part_verify_content_md5): Same.
+
+ * gmime/gmime-filter-md5.[c,h]: New filter to compute the md5
+ digest of a stream passed through it.
+
+2002-12-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-message.c (g_mime_message_get_body): Reworked the
+ logic a bit to properly handle multipart/alternative.
+
+2002-12-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped the version to 1.90.7
+
+2002-12-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/url-scanner.c: Use our own masking table since we need it
+ atoms to be slightly different. There's a few more chars we want
+ to restrict. Also has the benefit of being easier to split out if
+ someone else wants to use it.
+ (g_url_addrspec_end): Fixed to not be fooled in the case where the
+ address is followed immediately by a period.
+ (g_url_web_end): Made more robust.
+ (g_url_scanner_scan): Oops. We need to set the match->pattern
+ string pointer to the correct pattern before executing the
+ start/end methods (as some of them rely on this info).
+
+2002-12-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/url-scanner.c: Don't need a hash table anymore.
+ (g_url_scanner_add): When adding a pattern to the trie, use the
+ array index as the pattern_id argument.
+ (g_url_scanner_scan): Use the matched_id set by g_trie_search() to
+ lookup the urlpattern_t instead of using a hash table.
+
+ * gmime/gtrie.c (g_trie_add): Now takes a pattern_id argument so
+ that we can avoid the use of GQuarks and thus save on unecessary
+ memory usage.
+ (g_trie_search): Instead of giving our caller back the pattern
+ string pointer, give him back the pattern id.
+
+2002-12-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gtrie.c (g_trie_matches): Removed.
+ (g_trie_search): Fixed the FIXME.
+
+2002-12-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-filter-html.c: Modified to use url-scanner.c instead
+ of using glibc's regex routines. This has improved performance by
+ ~16.5x not to mention that it is also more accurate than the regex
+ patterns had been (the url scanner can be setup to be much
+ stricter in the matching).
+
+ * gmime/url-scanner.c: New source file implementing a simple
+ expression scanner meant (currently designed for url matching)
+ which uses gtrie.
+
+ * gmime/gtrie.c: New source file implementing Aho-Corasick's Trie
+ graph algorithm.
+
+2002-12-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fix for bug #91536
+
+ * gmime/gmime-object.c (g_mime_object_register_type): Use a struct
+ to hold the object_type for the subtype hash. 64 archs use 32bit
+ ints and so using GINT_TO_POINTER() and GPOINTER_TO_INT() doesn't
+ work.
+ (g_mime_object_new_type): Get the object_type from the subtype
+ bucket.
+
+2002-12-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream.c (g_mime_stream_writev): Pointer arithmetic
+ fixes.
+
+ * gmime/memchunk.c (memchunk_alloc): Pointer arithmetic fixes.
+
+2002-12-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-utils.c (datetok): Modified to properly handle when
+ the first char of a token is a special char (such as a '-') that
+ is also used as a token delimiter.
+
+2002-12-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-filter-html.c (g_mime_filter_html_init): match
+ REG_ICASE so we don't cut off at the first capital letter, duh.
+
+2002-12-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-utils.c: #define _GNU_SOURCE for isblank on GNU
+ systems.
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_op_wait): Fixed the errno
+ saving.
+
+2002-11-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-message.c (write_received): After skipping the
+ special received token and it's value, skip any following comments
+ as well.
+ (skip_addrspec): Skip past the '.' and '@' chars before decoding
+ the next word or domain respectively.
+
+2002-11-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-message.c (write_received): New function to nicely
+ format Received headers.
+ (write_msgid): New writer function that doesn't fold the msg-id no
+ matter now long it is.
+ (g_mime_message_init): Override the writer functions for Received
+ and Message-Id headers. Should we also override the writer
+ function for Path headers to not wrap?
+
+ * gmime/internet-address.c (decode_addrspec): Get rid of an extra
+ call to decode_lwsp that wasn't needed.
+
+ * gmime/gmime-header.c (g_mime_header_register_writer): Renamed.
+
+2002-11-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Make sure to include -liconv on systems that need it.
+
+2002-11-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Check for gethostbyname in -lnsl and also bump the
+ version to 1.90.6.
+
+ * src/getopt*.[c,h]: Added for portability to non-GNU systems.
+
+ * gmime/gmime-parser.c (g_mime_parser_init): Initialize scan_from
+ and have_regex here instead of in parser_init() since we don't
+ want these flags to be reset when a new stream gets set.
+ (g_mime_parser_new_with_stream): New convenience function.
+
+2002-11-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-utils.c (decode_msgid): Eat the '<' before
+ continuing to parse the addr-spec.
+
+2002-11-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-content-type.c
+ (g_mime_content_type_new_from_string): #include
+ "gmime-table-private.h" and use is_ttoken() to correctly parse
+ type/subtype. Fixes bug #98463.
+
+2002-11-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-gpg-context.c (gpg_ctx_op_start): Don't bother
+ stat()ing gpg->path, if the file doesn't exist, the exec() call
+ will return immediately anyway.
+
+2002-11-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped the version to 1.90.5.
+
+ * gmime/Makefile.am: Remove gmime-exception-list.def from the
+ EXTRAS.
+
+2002-11-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+ * gmime/gmime-error.h: Added.
+
+ * gmime/gmime-multipart-encrypted.[c,h]: Use GError instead of
+ GMimeException.
+
+ * gmime/gmime-multipart-signed.[c,h]: Same.
+
+ * gmime/gmime-session.[c,h]: Here too.
+
+ * gmime/gmime-gpg-context.[c,h]: Don't use GMimeException anymore,
+ instead use GError.
+
+ * gmime/gmime-cipher-context.[c,h]: Same here.
+
+ * gmime/gmime.h.in: Remove gmime-exception.h and add gmime-error.h
+
+2002-11-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Generate src/Makefile.
+
+ * Makefile.am: Add src to the SUBDIRS.
+
+ * src/Makefile.am: Build uuencode and uudecode.
+
+ * src/uuencode.c: New source file emulating GNU shareutils'
+ uuencode.
+
+ * src/uudecode.c: New source file emulating GNU shareutils'
+ uudecode.
+
+2002-11-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped the version to 1.90.4
+
+ * PORTING: New document meant to help developers port their
+ applications from gmime-1.0 to gmime-2.0.
+
+ * iconv-detect.c: Removed unused variables and #include <stdlib.h>
+
+ * gmime/gmime-multipart.c
+ (g_mime_multipart_get_subpart_from_content_id): Init part to NULL.
+
+ * gmime/gmime-stream-cat.c (stream_write): Init n to -1 each time
+ through the outer loop.
+
+ * gmime/gmime-filter-strip.c: #include <string.h> for memcpy.
+
+ * gmime/gmime-filter-html.c (html_convert): Make sure to
+ initialise depth to 0 each loop so we don't use it uninitialised.
+
+2002-11-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime*.[c,h]: Moved to gmime/ subdirectory. Also updated to
+ #include <gmime/some-header.h> instead of #include "some-header.h"
+
+ * test-*.c: Moved to tests/ subdirectory.
+
+2002-11-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Install headers to $(includedir)/gmime-2.0/gmime
+
+2002-11-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-basic.c (g_mime_filter_basic_new_type): Set the
+ new->type to type.
+
+2002-11-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime.h.in: Wrap in #ifdef __cplusplus
+
+ * gmime-filter-html.c (html_convert): If flush is TRUE, flush any
+ remaining input rather than backing it up.
+
+2002-10-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-gpg-context.c: Renamed stdin to stdin_fd, stdout to
+ stdout_fd, and stderr to stderr_fd to be more portable.
+
+2002-10-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-html.c (html_convert): Rewrote to use regex for
+ url/addr extraction. Outputs more correct html now too.
+
+2002-10-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-filter.c (stream_read): Change presize from an int
+ to a size_t to fix a 64bit cleanliness bug.
+ (stream_write): Same.
+
+2002-10-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-gpg-context.c (gpg_ctx_get_argv): Setup the import/export
+ command-line.
+ (gpg_ctx_op_step): Handle import/export errors.
+ (gpg_import_keys): Implemented.
+ (gpg_export_keys): Implemented.
+ (gpg_ctx_op_step): Don't do anything with gpg's stdin unless we
+ have something to write to it (exporting keys doesn't require
+ writing to gpg's stdin).
+
+2002-10-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+ * gmime-utils.c (g_mime_utils_generate_message_id): New function
+ to generate a valid unique message-id string.
+
+2002-10-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes to make g_mime_message_partial_split_message() use the
+ correct token as the id parameter.
+
+ * gmime-object.c (g_mime_object_set_content_id): Same as with
+ GMimeMessage::message_id.
+ (process_header): Same as process_header for gmime-message.c but
+ for content_id.
+
+ * gmime-message.c (process_header): Set only the addr-spec portion
+ of the msgid.
+ (g_mime_message_set_message_id): Treat the message_id passed in as
+ the addr-spec msgid (ie, as if it didn't contain <>'s).
+
+2002-10-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-gpg-context.c (gpg_import_keys): Renamed.
+ (gpg_export_keys): Renamed.
+
+ * gmime-cipher-context.c (g_mime_cipher_export_keys): Renamed to
+ be friendlier toward c++.
+ (g_mime_cipher_import_keys): Renamed to be similarly named with
+ the above function.
+
+2002-09-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped version.
+
+ * Makefile.am: Don't install gmime.m4
+
+ * gmime.m4: Removed.
+
+2002-09-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-charset.c (filter_filter): Rewritten, don't set
+ errno to 0 before calling iconv (we can't assume that on success
+ errno will not be set?). Also, don't grow the buffer here, save
+ any un-converted text in the backup buffer to be converted next
+ time through.
+ (filter_complete): Pick up the slack of filter_filter by
+ converting anything left over.
+
+2002-09-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter[c,h]: Ported to GObject.
+
+ * gmime-filter-basic.[c,h]:
+ * gmime-filter-best.[c,h]:
+ * gmime-filter-charset.[c,h]:
+ * gmime-filter-crlf.[c,h]:
+ * gmime-filter-from.[c,h]:
+ * gmime-filter-html.[c,h]:
+ * gmime-filter-strip.[c,h]:
+ * gmime-filter-yenc.[c,h]: Ported to the new GMimeFilter.
+
+ * gmime-data-wrapper.c (write_to_stream): Unref the filter after
+ adding it to the filtered stream.
+
+ * gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_encrypt): Unref the filters once we've
+ added them to the filtered_stream.
+ (g_mime_multipart_encrypted_decrypt): And here.
+
+ * gmime-multipart-signed.c (g_mime_multipart_signed_sign): Unref
+ the filters once we've added them to the filtered_stream.
+ (g_mime_multipart_signed_verify): Same here.
+
+ * gmime-part.c (write_content): Unref the filter.
+ (g_mime_part_set_pre_encoded_content): Here too.
+
+ * gmime-stream-filter.c (g_mime_stream_filter_add): Ref the filter
+ here.
+ (g_mime_stream_filter_remove): Unref the filter.
+ (g_mime_stream_filter_finalize): Unref the filters here.
+
+2002-09-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-charset.c: Try our best to handle EILSEQ (illegal
+ multibyte sequences) by eating the illegal bytes and
+ continuing. This seems to be what users expect (it's what Mozilla
+ seems to do).
+
+2002-09-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-charset.c (g_mime_charset_name): Don't g_assert after
+ using strtoul on the iso charset name, seems that some news
+ clients use 'isolatin' as if it were a real charset (it's not) and
+ we don't want to abort() on this.
+
+2002-09-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+ * gmime-utils.c (g_mime_utils_decode_message_id): New function to
+ decode a message-id as defined by rfc822.
+ (g_mime_references_decode): New function to decode a references or
+ in-reply-to header.
+ (g_mime_references_append): New function to append a raw
+ message-id to a GMimeReferences list.
+ (g_mime_references_clear): New function to clear a GMimeReferences
+ list.
+
+ * internet-address.c (decode_addrspec): New function to parse an
+ addr-spec needed by the msg-id decoder.
+ (decode_lwsp): Make public.
+ (decode_word): Same.
+
+2002-09-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (parse_broken_date): Wrap printfs in d() to
+ prevent them from printing anything unless debugging is turned on.
+
+2002-09-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (get_tzone): Fixed to not get false positives when
+ the token is shorter than the actual timezone string (but matches
+ the first little bit of it).
+
+2002-09-03 Tomasz K³oczko <kloczek@pld.org.pl>
+
+ * Makefile.am: fixes for automake >= 1.5 (removed duplicated
+ variables) and few minor cleanups and better method for install gmime
+ aclocal macros.
+
+ * doc/Makefile.am: fixes for "make install DESTDIR=</install/prefix>".
+
+2002-09-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * internet-address.c (decode_mailbox): When erroring out due to no
+ local part in the add-spec, set *in to inptr + 1 so we don't get
+ into an infinite loop.
+
+ * gmime-message-part.c (message_part_remove_header): Same as
+ below.
+
+ * gmime-multipart.c (multipart_remove_header): Same as
+ gmime-part.c
+
+ * gmime-part.c (mime_part_remove_header): Don't return anything
+ here since our function is supposed to return void.
+
+2002-08-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_scan_mime_part_content): Pass `content'
+ into parser_scan_content(), fixes bug #92183.
+
+2002-08-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped version to 1.90.1
+
+ * doc/Makefile.am: Don't gtkdoc-fixxref if the user disabled
+ gtk-doc from the build.
+
+2002-08-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * test-best.c: New test suite for the gmime-filter-best filter.
+
+ * gmime.h.in: Added gmime-filter-best.h
+
+ * gmime-filter-best.c (g_mime_filter_best_charset): Never return
+ NULL, instead return us-ascii.
+ (filter_filter): Fixed to not get into an infinite loop.
+
+2002-08-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+ * gmime-message-part.c (message_part_write_to_stream): Changed the
+ prototype to return ssize_t and not int.
+
+2002-08-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-best.c: New filter for calculating the best charset
+ and encoding for a stream.
+
+ * gmime-iconv-utils.c (g_mime_iconv_locale_to_utf8): Make
+ threadsafe.
+ (g_mime_iconv_locale_to_utf8_length): Same.
+ (g_mime_iconv_utf8_to_locale): Here too.
+ (g_mime_iconv_utf8_to_locale_length): And here.
+
+ * gmime.c (g_mime_init): Updated to call
+ g_mime_charset_map_init().
+
+ * gmime-charset.c (g_mime_charset_locale_name): Initialize the
+ charset map if it hasn't already been initialized.
+ (g_mime_charset_map_init): Renamed from g_mime_charset_init().
+ (g_mime_charset_init): Renamed from charset_init() and also made
+ it globally accessable.
+ (g_mime_charset_step): New external function (was an internal
+ function before).
+ (g_mime_charset_best_name): Now an external function also.
+
+2002-08-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-gpg-context.c (gpg_decrypt): Report better errors for when
+ gpg fails to be executed.
+ (gpg_encrypt): Same.
+ (gpg_verify): Here too.
+ (gpg_sign): And here.
+ (gpg_ctx_op_start): Try stat()ing the gpg binary to make sure it
+ exists and when handling an exception, save errno so we can re-set
+ it after cleanup.
+
+2002-08-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-iconv.c: Instead of checking for #ifdef _REENTRANT, just
+ check #ifdef G_THREADS_ENABLED and use a GStaticMutex rather than
+ a pthread_mutex_t.
+
+ * gmime-charset.c (g_mime_charset_init): Use nl_langinfo() if it
+ is available.
+ (g_mime_charset_name): Call g_mime_charset_init() if
+ iconv_charsets is NULL (meaning the programmer did not properly
+ initialize gmime). Also do mutex locking around the use of the
+ iconv_charset hash table.
+
+2002-08-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * test-pgpmime.c (test_multipart_signed): Unref the content object
+ after setting it on the MIME part.
+
+ * gmime-multipart-signed.c (g_mime_multipart_signed_sign): Unref
+ the content object after setting it on the MIME part.
+ (g_mime_multipart_signed_verify): Unref the content object after
+ we're done with it.
+
+ * gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_encrypt): Unref the content object
+ after setting it on the MIME part.
+ (g_mime_multipart_encrypted_decrypt): Unref the content object
+ after we're done with it.
+
+ * gmime-message-partial.c
+ (g_mime_message_partial_reconstruct_message): Unref the content
+ object when we're done with it.
+ (g_mime_message_partial_split_message): Unref the content object
+ after setting it on the MIME part.
+
+ * gmime-parser.c (parser_scan_mime_part_content): Unref the
+ content object after setting it on the MIME part.
+
+ * gmime-part.c (g_mime_part_set_content_object): Ref the new
+ content object and unref the old.
+ (g_mime_part_get_content_object): Ref the content object before
+ returning it to our caller.
+ (g_mime_part_finalize): Unref the content object.
+
+ * gmime-data-wrapper.c: Rewritten to subclass GObject.
+ (g_mime_data_wrapper_destroy): Removed.
+ (g_mime_data_wrapper_write_to_stream): Virtualize.
+
+2002-08-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-iconv.c: Implemented an all new iconv cache. Also has the
+ beginnings of thread-safety but I'd really need to fix the
+ Makefiles to conditionally link with -lpthread before it'd be of
+ any value as well as needing to make gmime-charset.c's functions
+ thread-safe.
+
+2002-08-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message.c (message_remove_header): If the header to be
+ removed is one of the special headers, then g_free() the cached
+ value on the message object and set it to NULL. Fixes bug #90138.
+
+2002-08-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+ * gmime-multipart-signed.c (g_mime_multipart_signed_sign):
+ Documented.
+ (g_mime_multipart_signed_verify): Documented.
+
+ * gmime-filter-from.c (g_mime_filter_from_new): Updated the
+ documentation to explain the new mode argument.
+
+ * gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_encrypt): Documented.
+ (g_mime_multipart_encrypted_decrypt): Documented.
+
+ * gmime-gpg-context.c (g_mime_gpg_context_get_always_trust):
+ Implemented.
+
+2002-08-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+2002-08-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message.c (g_mime_message_set_message_id): Revert Charles'
+ previous fix and just g_return_if_fail() if the message_id is NULL
+ instead.
+ (g_mime_message_set_subject): Same for NULL subjects.
+ (g_mime_message_set_reply_to): Here too.
+ (g_mime_message_set_sender): Again here.
+ (g_mime_message_add_header): Check that the value != NULL.
+ (g_mime_message_set_header): Same here.
+
+ * internet-address.c (decode_mailbox): Changed a for-loop into a
+ while-loop to make the code a tad easier to read. Also fixed a
+ type-o that meant to wrap a debug printf in d(). While we're at
+ it, g_strstrip the resulting comment before using it as the name
+ part of the address.
+
+2002-08-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message-part.c: Fix some comments that say "message/*"
+ (which is meant as a wildcard mime-type match) and change them to
+ just "message" to prevent compiler warnings about a /* being
+ inside a comment.
+
+ * gmime-charset.c: Get rid of a #include "unicode.h". This is no
+ longer needed since we use glib2's unicode stuff.
+
+2002-08-02 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-message.c (gmime_message_foreach_part): if the message
+ isn't a multipart message, just invoke the callback directly,
+ passing in the single part.
+
+ * gmime-message.c (gmime_message_set_message_id): work around
+ a g_strstrip() warning if message_id is NULL.
+
+ * gmime-part.c (g_mime_part_get_content_object): remove "const"
+ from the retval; otherwise it's impossible to add a new filter.
+
+2002-07-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-html.c (is_addr_char): Don't use "isprint(c)" to
+ mean "c >= 32 && c < 128" since it doesn't in most locales.
+ (is_url_char): Same.
+ (is_trailing_garbage): Same.
+ (is_domain_name_char): New macro for dns-valid characters
+ (email_address_extract): Use is_domain_name_char rather than
+ is_addr_char for the part after the @.
+
+2002-07-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_step_headers): Finish the fix from
+ yesterday, the last statement of the while-loop needs to
+ re-calculate `len' for parser_fill().
+
+2002-07-30 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-message.c (message_remove_header): Fix April 3 2002 bug
+ that kept message-remove-header from removing headers.
+
+2002-07-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message.c (message_get_headers): Write the toplevel MIME
+ Part's headers to the string as well, this fixes bug #88632 in
+ bugzilla.gnome.org.
+
+2002-07-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ The following changes are meant to address bug #88100 on
+ bugzilla.gnome.org - I'm as of yet unsure whether or not GMime
+ should override the Message-Id write function or if Pan should do
+ it. I'm sort of leaning towards Pan doing it simply because the
+ current behavior is RFC compliant and the bug is really a "we need
+ a workaround for a buggy NNTP server". However... It might just be
+ simpler to have GMime do it.
+
+ * gmime-header.c (g_mime_header_new): Init a new hash table that
+ stores info on how to write a particular header.
+ (g_mime_header_destroy): Free the hash table.
+ (g_mime_header_set_write_func): Set the writer function for a
+ header.
+ (g_mime_header_write_to_stream): Use the specified header write
+ function for each ehader. If one wasn't specified, use the
+ default.
+
+2002-07-29 Charles Kerr <charles@rebelbase.com>
+
+ * remove strlib.[ch]
+ * use g_strcasecmp instead of strcasecmp
+ * use g_strncasecmp instead of strncasecmp
+ * use g_stpcpy instead of stpcpy
+ * added "#include <string.h>" where needed
+
+2002-07-29 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-filter-strip: fix trivial compiler warning.
+ * gmime-message-part.c: same.
+ * gmime-multipart-signed.c: same.
+ * gmime-object.c: same.
+ * gmime-param.c: same.
+ * gmime-session.c: same.
+ * test-iconv.c: same.
+ * test-mbox.c: same.
+ * test-parser.c: same.
+ * test-partial.c: same.
+
+2002-07-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_step_headers): When refilling, make sure
+ that the refilled buffer is larger than the buffer was before
+ refilling, otherwise break out of the loop and parse whatever is
+ left. Fixes bug #89260 on bugzilla.gnome.org
+
+2002-07-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-cat.c (stream_read): Initialize `n' at the
+ beginning of the while-loop so that it can't be used
+ uninitialized.
+
+ * gmime-parser.c (header_parse): Check to make sure that the
+ header was valid (ie, `colon' == ':'). If not, then set
+ header->value to "".
+
+2002-05-26 Charles Kerr <charles@rebelbase.com>
+
+ * alloca.c: removed.
+ * gmime-charset.c: use g_alloca instead of alloca.
+ * gmime-filter-from.c: same.
+ * gmime-filter-strip.c: same.
+ * gmime-iconv.c: same.
+ * gmime-param.c: same.
+ * gmime-part.c: same.
+ * gmime-utils.c: same.
+ * memchunk.c: same.
+
+2002-07-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-crlf.c (filter_filter): Fix to not add an extra \r
+ for pre-canonicalised streams.
+
+2002-07-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-iconv-utils.c (g_mime_iconv_strndup): Fix a logic mistake
+ in the calculation of the number of bytes converted.
+
+2002-07-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (set_disposition): Fix to parse the disposition
+ parameter values rather than assuming it is only the "attachment"
+ or "inline" part of the value.
+
+2002-07-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: check for gmtime_r
+
+ * gmime-utils.c (g_mime_utils_header_format_date): Use gmtime_r() if
+ we have this function available to us.
+
+ * gmime-parser.c (parser_step_from): Save the From-line offset.
+ (g_mime_parser_get_from_offset): Newly implemented function used
+ for retrieving the offset of the From-line (for use when parsing
+ mbox files).
+
+2002-07-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * strlib.c (strlcpy): Changed to behave the same as the Solaris
+ strlcpy function.
+ (strlcat): Changed to behave the same as the Solaris strlcat
+ function.
+
+2002-07-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-iconv-utils.c (g_mime_iconv_strndup): Fix for
+ nul-terminating some multibyte charsets.
+
+2002-06-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-gpg-context.c (gpg_ctx_op_step): If we get an EOF from the
+ status-fd, then set gpg->complete to TRUE.
+ (gpg_ctx_get_argv): Use --charset=UTF-8 and --keyserver-options to
+ disable auto-key-retrieve rather than the deprecated
+ --no-auto-key-retrieve flag.
+
+2002-06-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-gpg-context.c (gpg_ctx_op_step): Loop on our reads while
+ errno is EINTR or EAGAIN. Also make sure to completely read stdout
+ and stderr by keeping better state.
+ (gpg_ctx_parse_status): If we encounted a NODATA error from gpg
+ and we have diagnostics output, use that as the exception string.
+ (gpg_ctx_op_exited): New function to determine if the gpg process
+ has exited.
+ (gpg_ctx_op_wait): Reuse any exit status information from
+ gpg_ctx_op_exited().
+ (gpg_verify): Check that the gpg process has not exited each loop.
+
+2002-06-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-multipart-signed.c (g_mime_multipart_signed_sign): Once
+ we've created the mime-part stream and armored the From lines and
+ such, create a new MIME part based on this stream (since normally
+ our QP encoder will not armor From lines) and use it as the
+ content part for this multipart/signed part rather than the
+ original MIME part.
+ (multipart_signed_write_to_stream): This can now be simplified by
+ calling our parent class's write_to_stream implementation since
+ g_mime_multipart_signed_sign() takes care of all the From
+ armoring.
+
+2002-06-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * test-pgpmime.c: New test suite for the pgp/mime code.
+
+ * gmime-gpg-context.c (gpg_ctx_parse_status): Handle a NODATA
+ status message from gpg.
+
+ * gmime-message.c (g_mime_message_new): Don't set NULL header
+ values via the g_mime_object_set_header interface.
+
+ * gmime-object.c (g_mime_object_add_header): Don't allow value == NULL.
+ (g_mime_object_set_header): Same.
+
+ * gmime.h.in: Updated to #include the new headers related to
+ encryption and digital signatures.
+
+ * gmime.c (g_mime_init): register the multipart/encrypted and
+ multipart/signed cclass types.
+
+ * gmime-multipart-signed.c: Fixed to compile cleanly.
+ (multipart_signed_write_to_stream): We need to handle writing out
+ the subparts ourselves because we need to armor From-lines.
+
+ * gmime-multipart-encrypted.c: Fixed to compile cleanly.
+
+2002-06-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-param.c (g_string_append_len_quoted): Append length as
+ advertised rather than appending the whole string. Oops.
+
+ * gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_decrypt): Ugh, the
+ g_return_val_if_fail()'s should be returning NULL.
+
+ * test-pgp.c: New test suite to make sure that the gpg code works.
+
+ * gmime-gpg-context.c: Keep more state as it seems we needed
+ it. Also keep information such as trust level and whether the
+ signature was found to be valid and such (in case we ever decide
+ to use it).
+
+2002-06-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-multipart-signed.c (g_mime_multipart_signed_get_type):
+ Register as a subclass of a GMimeMultipart.
+
+ * gmime-multipart-encrypted.c
+ (g_mime_multipart_encrypted_get_type): Same.
+
+ * gmime-gpg-context.[c,h]: A new class implementing the
+ GMimeCipherContext interfaces for GnuPG.
+
+ * gmime-session.[c,h]: New abstract session class for use by the
+ cipher context classes for requesting passphrases/etc.
+
+ * gmime-cipher-context.c (g_mime_cipher_context_finalize): Unref
+ the gmime-session.
+
+2002-06-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c: Oops, a prototype had the wrong return type.
+
+2002-06-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-multipart.c: Oops, some prototypes had the wrong return
+ type.
+
+2002-06-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_scan_mime_part_content): Use
+ g_mime_stream_mem_new_with_byte_array() so that the mem stream
+ owns the byte array so we don't leak.
+
+2002-06-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gen-table.c: Updated.
+
+ * gmime-utils.c (quoted_decode): Oops. ESPECIALs are allowed
+ inside of the encoded-text section of the encoded-word.
+
+ * gmime-message.c (process_header): Add some NULL-protection.
+
+ * gmime-iconv.c (g_mime_iconv_open): If the from charset is
+ "x-unknown", replace it with the user's locale charset.
+
+2002-06-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_scan_mime_part_content): If the parser
+ stream is not seekable, then scan the content into a memory
+ stream.
+
+2002-06-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-2.0.pc.in: New file for use in pkg-config.
+
+ * gmime-filter-strip.[c,h]: New source files implementing a stream
+ filter for stripping trailing whitespace from lines (needed for
+ PGP/MIME).
+
+ * gmime-exception.[c,h]: New source files implementing generic
+ error reporting functionality.
+
+ * gmime-cipher-context.[c,h]: New abstract class for performing
+ common functionality (such as encryption, decryption, signing,
+ verifying, importing keys, and exporting keys) needed by any MIME
+ cipher suite (PGP/MIME and S/MIME specifically).
+
+ * gmime-multipart-signed.[c,h]: New source files implementing the
+ multipart/signed specification.
+
+ * gmime-multipart-encrypted.[c,h]: New source files implementing
+ the multipart/encrypted specification.
+
+2002-06-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * test-mbox.c (test_parser): Test the new set_header_regex
+ function.
+
+ * gmime-parser.c (g_mime_parser_set_header_regex): New convenience
+ function to allow an application to be notified when a header
+ matching a particular pattern is parsed by the
+ parser. Particularly useful for finding the Status: header when
+ parsing mbox files.
+
+2002-06-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-iconv-utils.c (g_mime_iconv_strndup): Pull up past fixes
+ from the gmime-1 branch.
+
+2002-06-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime.c (g_mime_init): Register the message-part class.
+
+ * gmime-message-part.c: New class for handling message/* subparts.
+
+ * gmime-parser.c (parser_scan_message_part): Handle mime parts of
+ type message.
+ (parser_construct_leaf_part): Find out if the leaf part is
+ actually a message part.
+
+ * gmime-filter-from.c (g_mime_filter_from_new): Now takes a mode
+ argument to specify how "From "'s should be protected.
+ (filter_filter): If we are to armor the "From " then transform it
+ into "=46rom " otherwise transform it into the normal ">From ".
+
+2002-05-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime/gmime-stream-cat.c (stream_read): Rewritten to work
+ correctly. This was broken worse than I could imagine :-)
+ (stream_write): Fix similarly.
+
+2002-05-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-cat.c (stream_reset): Same.
+
+ * gmime-stream-file.c (stream_reset): Same.
+
+ * gmime-stream-fs.c (stream_reset): If the stream position is
+ already reset, just return 0.
+
+2002-05-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated documentation.
+
+2002-05-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-multipart.c (multipart_write_to_stream): Avoid adding an
+ extranious newline character when a preface doesn't exist.
+
+2002-05-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (g_mime_part_set_content_md5): Fix some compiler
+ warnings as well as doing some more error handling.
+ (g_mime_part_verify_content_md5): Same.
+
+ * md5-utils.c: Removed some compiler warnings.
+
+2002-05-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-cat.c (stream_seek): Return the absolute offset
+ into the cat stream rather than the relative offset of one of the
+ substreams on success. Fixed a few other things too.
+ (stream_read): Fix the logic here so that we never try reading
+ from a stream that is current at EOS.
+
+2002-05-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_scan_mime_part_content): Only compensate
+ for the '\n' if we found a boundary.
+
+2002-05-16 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-filter-yenc.c: fixed regression that caused end line of
+ yenc encoding to not be detected. This was causing crc errors in Pan.
+
+2002-05-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-filter.c (stream_destroy): Removed.
+
+2002-05-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-cat.c (stream_read): Don't allow our caller to read
+ past the end of the stream.
+ (stream_write): Same.
+ (stream_seek): Don't forget to add the current source stream's
+ bound_start when seeking on the current source stream.
+
+ * gmime-message-partial.c (g_mime_message_partial_init): Zero our
+ extra fields.
+ (g_mime_message_partial_finalize): Cleanup strdup'd memory.
+ (message_partial_set_content_type): Implemented.
+ (g_mime_message_partial_class_init): Override set_content_type().
+ (g_mime_message_partial_get_id): Simplify.
+ (g_mime_message_partial_get_number): Simplify.
+ (g_mime_message_partial_get_total): Simplify.
+
+ * gmime-multipart.c (multipart_set_content_type): Implement.
+ (g_mime_multipart_class_init): Override set_content_type().
+
+ * gmime-object.c: Make set_content_type() virtual.
+
+2002-05-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message-partial.c (partial_compare): Fixed to work
+ properly.
+
+2002-05-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * test-partial.c: New test suite for gmime-message-partial.c.
+
+ * gmime-stream-cat.c: Several fixes.
+ (g_mime_stream_cat_class_init): Overload the seek method.
+
+ * gmime-stream-mmap.c (g_mime_stream_mmap_class_init): Overload
+ the seek method.
+
+ * gmime-stream-buffer.c (g_mime_stream_buffer_class_init):
+ Overload the seek method.
+
+ * gmime-stream-null.c (g_mime_stream_null_class_init): Overload
+ the seek method.
+
+ * gmime-stream-filter.c (g_mime_stream_filter_class_init):
+ Overload the seek method.
+
+ * gmime-stream.c (g_mime_stream_class_init): Overload the seek
+ method.
+
+ * gmime-stream-mem.c (g_mime_stream_mem_class_init): Overload the
+ seek method.
+
+ * gmime-stream-file.c (g_mime_stream_file_class_init): Overload
+ the seek method.
+ (stream_length): The length of the stream is bound_end -
+ bound_start.
+
+ * gmime-stream-fs.c (g_mime_stream_fs_class_init): Overload the
+ seek method.
+ (stream_length): The length of the stream is bound_end -
+ bound_start.
+
+2002-05-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-cat.c (stream_reset): Use stream_seek().
+ (stream_read): Seek to position before starting our read, this is
+ to protect against one of our source streams being read while we
+ weren't looking and/or a substream related to our cat stream.
+ (stream_write): Same.
+
+2002-05-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message-partial.c: New class to handle MIME parts with a
+ content-type of message/partial.
+
+ * gmime.c (g_mime_init): Register the message/partial class.
+
+ * gmime-object.c (g_mime_object_new_type): If we fail to find an
+ appropriate mime object class, try falling back to the */*
+ handler. Only if that fails do we return NULL.
+
+2002-05-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Added gmime-stream-cat.c to the build.
+
+ * gmime-stream-cat.c: New stream that acts similar to the Unix
+ `cat` command by concatenating multiple streams.
+
+2002-05-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-fs.c (stream_write): Do more error handling and
+ also try to write out everything.
+
+2002-05-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-charset.c (main): Generate the multibyte charsets without
+ the need for using external .dat files. Also attempt to condense
+ the charset-map table a bit.
+
+ * gen-multibyte.c: Removed.
+
+2002-04-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-charset.c (main): Instead of converting the multibyte
+ charset tables to UTF-8 and then using the unicode functions to
+ convert UTF-8 to UCS4, just convert directly to UCS4. Also fixed a
+ type-o in the Big5.dat filename (it should be Big5.dat not
+ Big5.data).
+
+2002-04-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_fill): Try to align the end of our
+ left-over buffer with realbuf + SCAN_HEAD so that we avoid: 1)
+ completely filling the prespace or 2) reading more than SCAN_BUF
+ bytes per read() call.
+
+2002-04-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (g_mime_utils_base64_decode_step): Only backtrack
+ if we have output data.
+
+2002-04-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (rfc2047_encode_phrase): Fixed a small memory
+ leak. Thanks to the Pan guys for finding this.
+
+2002-04-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_step_from): Fixes to make it work.
+ (g_mime_parser_eos): New function to tell if a parser is at the
+ end of it's stream.
+
+2002-04-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * docs/*: Updated.
+
+ * configure.in: Add $srcdir to the include path so it catches
+ iconv-detect.h.
+
+2002-04-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_step_headers): Take advantage of the same
+ optimization as parser_scan_content.
+
+2002-04-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_scan_content): Optimized by a good 15% by
+ simply changing my inner while-loop. See comment for explanation.
+
+ * gmime-part.c (g_mime_part_encoding_from_string): Added support
+ for the binary encoding.
+ (g_mime_part_encoding_to_string): Same.
+
+ * gmime-utils.h: Added GMIME_PART_ENCODING_BINARY.
+
+2002-04-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parser_scan_multipart_subparts): Don't leak
+ objects!
+
+2002-04-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message.c (process_header): process the headers we care
+ about.
+ (message_add_header): Call process_header.
+ (message_set_header): Same.
+
+ * gmime-part.c (process_header): process the headers we care
+ about.
+ (mime_part_add_header): Call process_header.
+ (mime_part_set_header): Same.
+
+ * gmime-object (process_header): process the headers we care
+ about.
+ (add_header): Call process_header.
+ (set_header): Same.
+
+2002-04-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (g_mime_parser_set_scan_from): New accessor
+ method to set whether or not to scan from-lines.
+ (g_mime_parser_get_scan_from): New accessor method to get the
+ from-line mode.
+
+2002-04-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (datetok): Treat ',' as a token delimeter. Also
+ updated the datetok lookup table.
+
+ * configure.in: Check for off_t, size_t, and ssize_t.
+
+2002-04-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.[c,h]: Brand spankin' new parser. Seems to work for
+ at least simple messages, needs a lot more love though.
+
+ * gmime-stream*.c: Don't use a base_class init or finalize.
+
+ * gmime-object.c: Same.
+
+ * gmime-part.c: Same here.
+
+ * gmime.c (g_mime_init): Call g_type_init.
+
+ * gmime-utils.c (g_mime_utils_header_fold): Slight bugfix to get
+ rid of extra whitespace at the end of a line.
+
+ * gmime-multipart.c (g_mime_multipart_set_preface): New accesor
+ function to set the multipart preface.
+ (g_mime_multipart_get_preface): New accesor function to get the
+ multipart preface.
+ (g_mime_multipart_set_postface): New accesor function to set the
+ multipart postface.
+ (g_mime_multipart_get_postface): New accesor function to get the
+ multipart postface.
+ (write_to_stream): Don't force a preface if we don't have one.
+
+2002-04-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-object.c: Don't tie the type-registry lifetime to the
+ GMimeObject lifetime.
+
+ * gmime.c (g_mime_init): Register our generic and multipart/* MIME
+ object classes here.
+
+ * gmime-part.c (g_mime_part_class_init): Don't register ourselves
+ here anymore.
+
+ * gmime-multipart.c (g_mime_multipart_class_init): Don't register
+ ourselves here anymore.
+
+2002-04-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (g_mime_utils_uuencode_close): Fixed a bug that
+ crept in during my simplification.
+
+2002-04-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (g_mime_part_set_content_id): Wrap the object
+ set_content_id.
+ (g_mime_part_get_content_id): Same.
+
+ * gmime-multipart.c
+ (g_mime_multipart_get_subpart_from_content_id): Compare the
+ object->content_id's.
+
+ * gmime-object.c (g_mime_object_set_content_id): New function
+ since the Content-Id should really be stored on the object class.
+ (g_mime_object_get_content_id): Same.
+ (set_header): If we are setting the Content-Id header, also set
+ our internal content_id member.
+ (add_header): Same.
+
+ * gmime-content-type.c (g_mime_content_type_set_parameter):
+ Renamed from g_mime_content_type_add_parameter.
+
+ * gmime-multipart.c (g_mime_multipart_new_with_subtype): New
+ convenience function.
+
+ * Makefile.am temporarily removed gmime-parser.c from the
+ build. It needs to be completely rewritten from scratch pretty
+ much.
+
+2002-04-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (g_mime_part_add_subpart): Removed.
+ (g_mime_part_set_boundary): Removed.
+ (g_mime_part_get_boundary): Removed.
+
+ * gmime-object.c (g_mime_object_get_content_type_parameter): New
+ function.
+ (g_mime_object_set_content_type_parameter): New function.
+
+ * gmime-multipart.c (g_mime_multipart_new): New function, forgot
+ to implement it before ;-)
+ (multipart_set_boundary): Set the boundary parameter on the
+ content-type.
+
+2002-04-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (g_mime_part_foreach): Removed.
+ (g_mime_part_get_subpart_from_content_id): Same.
+
+ * gmime-multipart.c (g_mime_multipart_foreach): Moved here from
+ gmime-part.c:g_mime_part_foreach since this is really only meant
+ to work on multiparts.
+ (g_mime_multipart_get_subpart_from_content_id): Same idea here too.
+
+ * gmime-object.c (g_mime_object_set_content_type): Move
+ g_mime_part_set_content_type up to the GMimeObject abstraction.
+ (g_mime_object_get_content_type): Same.
+
+2002-04-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message.c: Initial port to GObject.
+
+2002-04-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message.c (g_mime_message_add_recipients_from_string):
+ Destroy the temporary addrlist.
+
+2002-03-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Detect the iconv-friendly formats for iso charsets
+ at configure time and dump them into iconv-detect.h for use in
+ gmime-charset.c.
+
+ * gmime-charset.c: Updated to use iconv-detect.h if it exists.
+
+2002-03-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-multipart.c: Compile fixes.
+
+ * gmime-header.c (g_mime_header_write_to_stream): Now returns the
+ number of bytes written or -1 on fail.
+
+ * gmime-object.c: Compile fixes.
+
+ * gmime-stream-null.c (g_mime_stream_null_finalize): And finally
+ here.
+
+ * gmime-stream-mmap.c (g_mime_stream_mmap_finalize): Here too.
+
+ * gmime-stream-mem.c (g_mime_stream_mem_finalize): And again...
+
+ * gmime-stream-fs.c (g_mime_stream_fs_finalize): Again here.
+
+ * gmime-stream-filter.c (g_mime_stream_filter_finalize): Here too.
+
+ * gmime-stream-file.c (g_mime_stream_file_finalize): Same.
+
+ * gmime-stream-buffer.c (g_mime_stream_buffer_finalize): Call
+ GObject's finalize function.
+
+2002-03-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * memchunk.c: Make this compile.
+
+ * internet-address.c (decode_mailbox): No longer check
+ gmime_interfaces_utf8 as that was a hack in gmime-1's branch.
+
+ * gmime-charset.c (charset_step): Sync with the gmime-1 branch. We
+ now have multibyte charset detection.
+
+ * gmime-utils.c: Sync with gmime-1's changed.
+ (rfc2047_decode_word): Always convert decoded text to UTF-8.
+ (rfc2047_encode_phrase_get_words): We can always assume our input
+ is in UTF-8 now.
+ (rfc2047_encode_phrase): Sam here.
+ (g_string_append_len): Removed since glib2 now has this function.
+
+ * gmime-param.c (decode_param): Make sure the decoded text is
+ valid UTF-8.
+ (encode_param): Convert to the best charset before encoding.
+ (g_string_append_len): Removed since glib2 now has this function.
+
+ * gmime.c (g_mime_init): Initializes gmime. We no longer care
+ about GMIME_INIT_FLAGS_UTF8 as we now always use UTF-8 interfaces.
+
+2002-03-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-null.c (g_mime_stream_null_get_type): Use
+ GMIME_TYPE_STREAM as our base class.
+ (g_mime_stream_null_class_init): Our parent class is a
+ GMIME_STREAM_CLASS, not a G_OBJECT_CLASS.
+ (g_mime_stream_null_finalize): Call our parent's finalize, which
+ is GMIME_STREAM_CLASS's finalize, not G_OBJECT_CLASS's finalize.
+
+ * gmime-stream-mmap.c: Same.
+
+ * gmime-stream-filter.c: Here too.
+
+ * gmime-stream-file.c: And here.
+
+ * gmime-stream-fs.c: Again here.
+
+ * gmime-stream-mem.c: And again...
+
+ * gmime-stream-buffer.c: And finally here.
+
+ * gmime-multipart.[c,h]: New class that inherits from GMimeObject
+ that represents a MIME multipart.
+
+2002-03-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-object.c: Ported to glib2 by subclassing GObject and also
+ added a GMimeHeader data member and methods to access those
+ headers as well as adding abstract methods for getting the headers
+ as one big string buffer and writing the object headers/content to
+ a stream.
+
+ * gmime-stream-*.c (*_class_init): Don't set a destroy handler -
+ we can't, we don't have a virtual function pointer for it!
+
+ * gmime-stream.c (g_mime_stream_substream): Use GET_CLASS since we
+ are passing in an object.
+ (g_mime_stream_length): Same.
+ (g_mime_stream_tell): Here too.
+ (g_mime_stream_seek): And here.
+ (g_mime_stream_reset): And again here.
+ (g_mime_stream_eos): Again.
+ (g_mime_stream_close): Here too.
+ (g_mime_stream_flush): Same.
+ (g_mime_stream_write): Same here.
+ (g_mime_stream_read): And finally here.
+ (g_mime_stream_class_init): Setup default implementations of all
+ the stream methods. Also no longer set a destroy handler.
+
+ * gmime-stream-buffer.[c,h]: Updated to subclass the new
+ GMimeStream based on GObject.
+
+2002-03-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-filter.[c,h]: Updated to subclass the new
+ GMimeStream based on GObject.
+
+ * gmime-stream-fs.[c,h]: Updated to subclass the new GMimeStream
+ based on GObject.
+
+ * gmime-stream-file.[c,h]: Updated to subclass the new GMimeStream
+ based on GObject.
+
+ * gmime-stream-mmap.[c,h]: Updated to subclass the new GMimeStream
+ based on GObject.
+
+ * gmime-stream-null.[c,h]: Updated to subclass the new GMimeStream
+ based on GObject.
+
+ * gmime-stream-mem.[c,h]: Updated to be based on the new
+ implementation of GMimeStream.
+
+ * gmime-type-utils.h: New file to contain some more-friendly
+ type-cast macros around the glib2 ones.
+
+ * gmime-stream.[c,h]: Now subclasses GObject. Not sure if I got
+ everything right, but I think it's mostly there?
+
+2002-03-15 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-filter-charset.c: fixed minor compiler warnings.
+ * gmime-iconv-utils.c: same.
+ * test-html.c: same.
+ * test-iconv.c: same.
+ * test-mime.c: same.
+ * test-streams.c: same.
+
+2002-03-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (g_mime_utils_uudecode_step): Fixed a logic
+ mistake. All is good now in the land of UU :-)
+
+2002-03-15 Charles Kerr <charles@rebelbase.com>
+
+ Syncing up with small changes from Pan...
+
+ * gmime-content-type.c: remove unused #include <alloca.h>
+ * gmime-message.c: same.
+ * gmime-part.c: same.
+ * internet-address.c: same.
+
+ * gmime-filter-basic.c: add #include <string.h> (strncmp)
+ * gmime-filter-yenc.c: add #include <string.h> (strncmp)
+ * gmime-iconv-utils.c: add #include <string.h> (strlen)
+ * gmime-iconv.c: add #include <string.h> (strlen)
+ * gmime-iconv.c: add #include <stdio.h> (sprintf)
+
+2002-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-yenc.c (filter_reset): Added a switch-statement
+ based on direction. Yes, for now the INIT state for encode/decode
+ are both the same but this may change? Probably not but oh well
+ :-)
+ (g_mime_ydecode_step): Sync up with Charles' yenc fixes.
+
+2002-03-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-yenc.c: Compile fixes.
+
+2002-03-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-yenc.c (g_mime_filter_yenc_get_pcrc): Finalize the
+ crc before returning.
+ (g_mime_filter_yenc_get_crc): Same.
+
+2002-03-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-yenc.c: New filter to encode/decode yEnc streams.
+
+2002-03-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ Thanks to Carlos Morgado <chbm@chbm.nu>
+
+ * gmime.spec.in: Fix.
+
+2002-03-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (g_mime_part_write_to_stream): Get rid of some
+ extra line feeds.
+
+2002-02-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+ * configure.in: Updated version to 0.8.0
+
+2002-01-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-charset.c (g_mime_charset_name): Updated for AIX, HPUX,
+ IRIX, and Sun systems.
+
+2002-01-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-iconv.c (iconv_cache_bucket_add_node): Fixed an oops.
+ (iconv_cache_bucket_get_first_unused): Fixed another oops.
+
+2002-01-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-data-wrapper.c (g_mime_data_wrapper_write_to_stream):
+ Handle the x-uuencode encoding type.
+
+ * gmime-utils.c (g_mime_utils_uuencode_close): No longer needs a
+ uulen argument since it is now compacted into the state argument.
+ (g_mime_utils_uuencode_step): Same here.
+
+ * gmime-filter-basic.c (filter_filter): Ignore data until we have
+ found the "begin" line. Also, we no longer need uulen.
+ (filter_complete): Same.
+
+ * gmime-part.c (g_mime_part_encoding_to_string): Handle
+ x-uuencode.
+ (g_mime_part_encoding_from_string): Same.
+ (g_mime_part_set_pre_encoded_content): Here too.
+ (write_content): And again here.
+
+2002-01-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-iconv.c (iconv_node_new): Return the node - how did I miss
+ this!?
+
+2002-01-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Fixed more silliness.
+
+ * acconfig.h: Added #undef's for some iconv stuff.
+
+ * gmime-filter-charset.c (g_mime_filter_charset_new): Put the
+ charset arguments in the right order.
+
+ * gmime-iconv.c (g_mime_iconv_open): Swap the to/from arguments so
+ that they are in the same order as iconv_open.
+
+ * gmime-iconv-utils.c (iconv_utils_init): Put the to/from
+ arguments in the right order.
+
+2002-01-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-iconv-utils.c (g_mime_iconv_strndup): If we get an EILSEQ,
+ just return NULL rather than g_strndup'ing the original
+ string. We'd rather get back NULL and know it failed than get back
+ a string thinking everything went okay.
+
+ * configure.in: Fixed some silliness, thanks to Charles Schmidt.
+
+2002-01-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-iconv-utils.c (g_mime_iconv_strndup): New utility function
+ to iconv n bytes of a string and return a buffer containing the
+ converted string.
+ (g_mime_iconv_strdup): Same but for the whole string.
+ (g_mime_iconv_locale_to_utf8): Converts a string in the locale
+ charset to utf8.
+ (g_mime_iconv_locale_to_utf8_length): Same but for a sublength of
+ the string.
+ (g_mime_iconv_utf8_to_locale): Converts a string from utf8 to the
+ locale charset.
+ (g_mime_iconv_utf8_to_locale_length): Same but for a sublength of
+ the string.
+
+2002-01-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * test-iconv.c: test suite to make sure that the gmime-iconv cache
+ works.
+
+ * gmime-iconv.c (g_mime_iconv_init): Initialize the iconv_node
+ memchunk.
+ (g_mime_iconv_shutdown): Destroy the iconv_node memchunk.
+ (iconv_node_destroy): Use memchunk_free instead of g_free.
+ (iconv_node_new): Use memchunk_alloc.
+ (iconv_node_set_used): Add/Remove the node to the iconv_open_hash.
+
+2002-01-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped the version to 0.7.7
+
+ * doc/*: Updated to document the new gmime-iconv interfaces.
+
+ * gmime-filter-charset.c (g_mime_filter_charset_new): Use
+ g_mime_iconv_open instead of iconv_open. Also no longer need to
+ use g_mime_charset_name() since gmime-iconv does this for us.
+ (filter_destroy): Use g_mime_iconv_close() instead of
+ iconv_close().
+
+ * gmime-iconv.c (g_mime_iconv_open): New wrapper around
+ iconv_open() so that we can cache the results. This'll be a major
+ speedup for systems like Solaris where iconv_open() must dlopen a
+ module for each of the charsets. Also uses g_mime_charset_name()
+ to get the iconv-friendly charset name for you.
+ (g_mime_iconv_close): New wrapper around iconv_close().
+
+2002-01-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped version to 0.7.6
+
+ * doc/*: Updated to document the new charset code.
+
+ * gmime.h.in: Added #includes for gmime-charset.h and
+ gmime-filter-charset.h.
+
+ * gmime-filter-charset.c: New filter for converting text between
+ charsets using iconv.
+
+ * gmime-charset.c (g_mime_charset_name): New function to derive
+ the iconv-friendly name for a given charset.
+
+2002-01-09 Charles Kerr <charles@rebelbase.com>
+
+ * internet-address.c (internet_address_list_prepend): replaced
+ "g_return_if_fail" with "g_return_val_if_fail".
+ * internet-address.c (internet_address_list_append): same.
+
+ * internet-address.c (internet_address_set_group): removed
+ unused variables to shut up compiler.
+ * gmime-param.c (rfc2184_decode): same.
+
+2002-01-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * config.h.in: Added a #include <alloca.h> if HAVE_ALLOCA_H is
+ defined - this limits the number of places I have to conditionally
+ add #include <alloca.h> in the source files.
+
+2002-01-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (parse_broken_date): Implemented.
+
+2002-01-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * memchunk.c (memchunk_clean): Oops, when tree_search() returns 0
+ we want to prune it, not the other way around :-)
+
+2002-01-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * memchunk.c (memchunk_clean): Fixed a logic mistake that
+ prevented pruning of the head node.
+
+2002-01-01 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-message (g_mime_message_get_body): added g_return_val_if_fail
+ checks in the entry point.
+
+2001-12-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * internet-address.c (decode_address): Optimized group parsing.
+
+ * doc/*: Updated.
+
+2001-12-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * strlib.c (strncasecmp): Convert the chars to lowercase before
+ diffing.
+
+2001-12-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped version number to 0.7.5 since the
+ internet-address API and bits of the gmime-message API have
+ changed.
+
+ * internet-address.c (internet_address_new): Initialize the
+ refcount to 1.
+ (internet_address_destroy): This is now an internal function.
+ (internet_address_ref): New function to ref an InternetAddress
+ object.
+ (internet_address_unref): New function to unref an InternetAddress
+ object.
+ (internet_address_set_group): Updated to use the new
+ internet_address_list functions.
+ (internet_address_add_member): Same.
+ (internet_address_list_prepend): New function to manipulate a list
+ of InternetAddress objects.
+ (internet_address_list_append): Same.
+ (internet_address_list_concat): Another new function.
+ (internet_address_list_length): Again...
+ (internet_address_list_destroy): Destroy a list of addresses.
+ (internet_address_list_to_string): New utility function to write a
+ list of addresses to a string.
+ (internet_address_parse_string): Optimized slightly by not using
+ GLists' generic append function and also updated to use
+ InternetAddressList.
+
+ * gmime-message.c (recipients_destroy): Updated to call
+ internet_address_list_destroy.
+ (sync_recipient_header): Updated to let the InternetAddress code
+ do the work for us.
+ (g_mime_message_add_recipient): Updated to use the new
+ InternetAddress API.
+ (g_mime_message_add_recipients_from_string): Same.
+ (g_mime_message_get_recipients): Return an InternetaddressList
+ instead of GList.
+
+2001-12-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * strlib.c (strncasecmp): Do null-checking.
+
+ * TODO: Remove features that have already been
+ implemented/fixed/whatever.
+
+2001-12-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * memchunk.c (memchunk_clean): Prune 'cleaned' nodes from our
+ free-node list. Thanks to Charles Kerr for discovering this bug.
+
+ * strlib.c (strncasecmp): Moved the return calculation to within
+ the loop so as to only take a difference if the strings are not
+ identical. This also fixes a bug that would falsely return
+ non-zero for strings that were identical for the first n bytes.
+
+2001-12-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream.c (g_mime_stream_construct): 'type' is now an
+ unsigned int rather than a signed int.
+
+ * memchunk.c (memchunk_clean): Oops. Don't forget to free the tree
+ after we're finished with it...
+
+2001-12-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ Various compiler warning fixes to several source files (mostly
+ "unused variable" type stuff).
+
+2001-12-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (datetok): reimplement to not use GLists
+ (appending is slow) and also to not g_strndup the token, instead
+ just remember it's offset and length so we can examine it later.
+ (decode_int): New function to decode an int.
+ (get_wday): Now takes an inlen argument.
+ (get_mday): Same. Also calls decode_int.
+ (get_month): Here too.
+ (get_year): Again here... also calls decode_int.
+ (get_tzone): Modified to use struct _date_token.
+ (get_time): Completely rewritten.
+
+2001-12-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * memchunk.[c,h]: A memchunk library similar to g_mem_chunk's but
+ faster.
+
+2001-12-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Added a --enable-warnings to turn on compiler
+ warnings.
+
+ * gmime-utils.c: Various compiler warning cleanup.
+
+ * gmime-object.c (g_mime_object_construct): Change the type
+ argument to be of type unsigned rather than int.
+
+ * gmime-filter-html.c (url_extract): g_strndup takes an unsigned
+ length argument.
+
+ * gmime-filter-from.c (filter_filter): memcpy takes an unsigned
+ length argument.
+
+ * gmime-disposition.c (g_mime_disposition_new): g_strndup takes an
+ unsigned length argument.
+
+ * gmime-content-type.c (g_mime_content_type_new_from_string):
+ g_strndup takes an unsigned length argument.
+
+ * gmime-charset.c (g_mime_charset_init): g_strndup takes an
+ unsigned length argument.
+
+2001-12-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (g_mime_part_destroy): Now an internal-only method.
+
+ * gmime-message.c (g_mime_message_destroy): Now an internal-only
+ method.
+
+2001-12-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-basic.c (filter_filter):
+ (filter_complete): The outbuf for QP decoding can be up to len + 2
+ bytes and UU decoding outbuf can be up to len + 3 bytes.
+
+2001-12-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parse_content_headers): Set is_multipart to
+ FALSE.
+ (g_mime_parser_construct_part_internal): Get the inlen properly
+ and do content-offsetting a little better by skipping past the
+ end-of-header marker.
+
+ * gmime-stream-buffer.c (g_mime_stream_buffer_gets): Use the
+ 'register' keyword for some variables.
+
+ * gmime-data-wrapper.c (g_mime_data_wrapper_set_stream): Safeguard
+ against NULL streams.
+ (g_mime_data_wrapper_write_to_stream): Reset the stream before
+ writing too.
+
+ * gmime-stream-mem.c (stream_seek): Fix to work like the others.
+ (stream_read): On error, always return -1 (and not just any value
+ less than 0)
+ (stream_write): Same.
+
+2001-11-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (write_content): Implemented a slight optimization
+ which bypasses the need to do any encoding in certain
+ circumstances.
+
+2001-11-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * pan-mime-parser.c (parser_read_until_boundary): Make sure
+ boundary is non-NULL before calling strlen on it.
+
+2001-11-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (g_mime_parser_construct_part_internal): Fixed a
+ bug - don't set bounds on the original stream, set the bounds on
+ our temporary memory stream. Also got rid of find_header_end().
+
+ * gmime-filter-from.c (filter_filter): initialize fromcount to 0.
+
+2001-11-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * strlib.c (strlcpy): BSD defines the prototype as returning
+ size_t, the strlen of the resultant string.
+ (strlcat): Same.
+
+ * gmime-stream-buffer.c (stream_flush): Oops, memmove the buffer
+ too and a smidgen of code cleanup.
+ (stream_reset): Fix reset for block write mode.
+
+ * configure.in: Bumped the version to 0.7.4 and added checks for
+ system mmap functions.
+
+ * gmime-stream-mmap.[c,h]: New stream that uses an mmaped buffer.
+
+2001-11-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/gmime-docs.sgml: Added documentation of the use of filters.
+
+2001-11-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-buffer.c (stream_seek): Implemented.
+
+ * gmime-parser.c (parse_content_headers): Fixed another memory
+ leak here.
+
+ * gmime-param.c (decode_param_list): Fixed a small memory leak.
+
+2001-11-22 Jeffrey stedfast <fejj@ximian.com>
+
+ * gmime-filter-from.[c,h]: New filter to escape from-lines.
+
+ * pan-mime-parser.c (parser_read_until_boundary): Slight
+ optimization.
+
+2001-11-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (is_8bit_word_encoded): Make into a macro, we
+ don't need to do a strlen because the atom is a GString which
+ means we have it's length already. This also saves us some
+ overhead of calling a function.
+ (g_mime_utils_8bit_header_decode): Update to pass the len argument
+ to is_8bit_word_encoded.
+
+2001-11-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped version to 0.7.3
+
+ * gmime-param.c: GMimeParam is now a linked list of parameters
+ rather than a single name/value pair.
+ (g_mime_param_new_from_string): Now returns a parameter list based
+ on the input string rather than only returning a single parameter
+ name/value pair. Also updated to handle rfc2184 encoded
+ parameters.
+ (g_mime_param_destroy): Destroy the linked list of params.
+ (g_mime_param_append): Append a new parameter.
+ (g_mime_param_append_param): Append a new parameter object.
+ (g_mime_param_write_to_string): New function (which replaces
+ g_mime_param_to_string) which correctly encodes (either by quoting
+ the value or rfc2184 encoding it) the list of parameters and
+ optionally folds them suitable for header wrapping.
+
+ * gmime-disposition.[c,h]: New source files to handle
+ parsing/generating Content-Disposition headers.
+
+ * gmime-part.c (g_mime_part_destroy): Updated to use
+ g_mime_disposition_destroy.
+ (g_mime_part_set_content_disposition_object): New function for
+ setting the disposition object on a mime part.
+ (g_mime_part_set_content_disposition): Updated to use
+ g_mime_disposition_set.
+ (g_mime_part_get_content_disposition): Updated to use
+ g_mime_disposition_get.
+ (g_mime_part_add_content_disposition_parameter): Updated to use
+ g_mime_disposition_add_parameter.
+ (g_mime_part_get_content_disposition_parameter): Updated to use
+ g_mime_disposition_get_parameter.
+ (g_mime_part_set_filename): Updated to use
+ g_mime_disposition_add_parameter.
+ (g_mime_part_get_filename): Updated to use
+ g_mime_disposition_get_parameter.
+
+ * gmime-content-type.c (g_mime_content_type_new_from_string): Use
+ the gmime-param code to parse any Content-Type parameters.
+ (g_mime_content_type_destroy): Updated to use
+ g_mime_param_destroy.
+ (g_mime_content_type_add_parameter): Updated to use g_mime_param
+ functions.
+
+ * gmime-utils.c (g_mime_utils_header_fold): Fixed a small header
+ folding bug.
+
+ * gmime-parser.c (parse_content_headers): Updated to use the
+ GMimeDisposition parser.
+
+ * pan-mime-parser.c (parse_content_headers): Updated to use the
+ GMimeDisposition parser.
+
+2001-11-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Bumped version to 0.7.2 due to the change-over to
+ refcounted mime objects.
+
+ * gmime-object[c,h]: New source files that implement an abstract
+ Object class.
+
+ * gmime-message.c: Updated to subclass GMimeObject
+
+ * gmime-part.c: Updated to subclass GMimeObject
+ (g_mime_part_set_content_header): Set an arbitrary mime content
+ header.
+ (g_mime_part_get_content_header): Get an arbitrary mime content
+ header.
+ (g_mime_part_add_child): Finally deprecated, please use
+ g_mime_part_add_subpart instead if you aren't already.
+
+ * gmime-parser.c: Updated to unref mime parts where appropriate as
+ well as set unknown content headers on mime parts.
+
+ * pan-mime-parser.c: Same as gmime-parser.c
+
+2001-11-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-null.c (g_mime_stream_null_new): A new stream,
+ similar to /dev/null basically.
+
+2001-11-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Added checks for strlib functions and bumped the
+ version to 0.7.1 (there won't be an official 0.7.1 release but I
+ figure I should be bumping version numbers whenever I add
+ functionality).
+
+ * strlib.[c,h]: New string library that provides anything that the
+ system libc doesn't (includig strnstr and stpcpy).
+
+ * gmime-filter-html.[c,h]: New filter that converts plain text
+ into HTML suitable for display in things like GtkHTML (makes urls
+ into hyperlinks and preserves whitespace and such).
+
+ * gmime-parser.c (g_strstrbound): Removed.
+ (find_header_part_end): Use strnstr.
+ (g_mime_parser_construct_part_internal): Use strnstr.
+
+2001-10-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Updated the version to 0.7.0
+
+ * doc/*: Updated.
+
+2001-10-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message.c (g_mime_message_new): Now takes an
+ "init_headers" argument, it doesn't really matter what value you
+ put here - it's more a "I want my message headers to be in a nice
+ friendly order rather than the order they are set in".
+
+ * gmime-parser.c (g_mime_parser_construct_message): Use
+ !preserve_headers as the init_headers argument to
+ g_mime_message_new ().
+
+ * pan-mime-parser.c (g_mime_parser_construct_message): Same.
+
+2001-10-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * pan-mime-parser.c (construct_message_headers): Use
+ g_mime_header_add instead of g_mime_header_set so we can get
+ multiple of the same header (such as "Received:").
+
+ * gmime-parser.c (construct_headers): Use g_mime_header_add
+ instead of g_mime_header_set so we can get multiple of the same
+ header (such as "Received:") and also move it into the switch
+ statement into the default case.
+
+ * gmime-message.c (g_mime_message_set_header): New function to add
+ a header to a message.
+
+ * gmime-header.c (g_mime_header_add): New function to add a
+ header.
+
+ * gmime-stream.c (g_mime_stream_writev): New function to write a
+ vector to a stream.
+
+2001-10-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * pan-mime-parser.c: Updated to use g_mime_stream_buffer_readln.
+
+ * gmime-stream-buffer.c (g_mime_stream_buffer_readln): New
+ convenience function to read a single line from a stream.
+
+2001-10-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (g_mime_part_write_to_stream): No longer takes a
+ 'toplevel' argument.
+ (g_mime_part_to_string): No longer takes a 'toplevel' argument.
+
+ * gmime-message.c (g_mime_message_write_to_stream): Write the
+ MIME-Version header here instead of needing to pass a 'toplevel'
+ argument to g_mime_part_write_to_stream().
+
+ * gmime-charset.c (g_mime_charset_init): Fix for Debian and
+ Solaris.
+
+2001-10-09 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-filter.c (g_mime_filter_construct): make sure outptr is
+ zeroed out before we read it in g_mime_filter_set_size().
+
+2001-10-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-filter-basic.c (filter_filter): Implemented uuencoding.
+ (filter_complete): Implemented uuencoding.
+
+ * gmime-utils.c (g_mime_utils_uuencode_close): New function to
+ flush the uuencoder.
+ (g_mime_utils_uuencode_step): New function to uuencode a block of
+ data.
+
+2001-10-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes for c++ compilation
+
+ * gmime-stream*.c: s/template/stream_template
+
+ * gmime-filter*.c: s/template/filter_template
+
+2001-10-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-data-wrapper.c (g_mime_data_wrapper_set_stream): If we
+ just change the order of operations, we can get away without a
+ second stream pointer.
+
+ * gmime-stream.c (g_mime_stream_substream): Revert.
+
+ * gmime-stream-buffer.c (stream_substream): Instead of calling
+ g_mime_stream_substream(), call the source stream's substream
+ method directly. I think this is the better fix for the bug
+ Charles just fixed.
+
+2001-10-04 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-stream.c (g_mime_stream_substream): fix refcount stealth
+ bug. Calling this on a buffered stream wound up reffing two
+ streams instead of one because of a nested call to
+ g_mime_stream_substream(). This took a lot of scaffolding to
+ find. :)
+
+ * gmime-data-wrapper.c (g_mime_data_wrapper_set_stream): fix
+ refcount paranoia bug. ref the new *before* unreffing the old
+ just in case new==old.
+
+ * gmime-filter-basic.[ch]: fix some compiler warnings that I
+ introduced yesterday. (Strange how the same version of gcc finds
+ different warnings on different platforms.)
+
+2001-10-03 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-part.c (g_mime_part_get_content): bugfix for when getting
+ the content from a stream-mem. We were just returning the
+ stream-mem's gbytearray buffer, but we need to check against the
+ stream's bounds.
+
+ * gmime-filter-basic.[ch]: added support for decoding a uuencoded
+ stream; added a placeholder for uuencoding a stream.
+
+ * md5-utils.c: commented out d(x) macro.
+
+2001-10-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-buffer.h: buflen should be an ssize_t not a
+ size_t. Thanks to Charles for catching this.
+
+2001-10-01 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-filter.c: include <string.h> to pick up memcpy prototype.
+ * gmime-stream-mem.c: same.
+ * gmime-stream-buffer.c: same.
+ * gmime-stream-filter.c: same.
+
+ * gmime-stream-mem.c (stream_flush): added a retval of 0.
+
+ * gmime-filter-crlf.h (g_mime_filter_crlf_new_type): renamed
+ prototype as g_mime_filter_crlf_new to sync with .c
+
+ * gmime-part.h: added g_mime_part_set_content_object() prototype.
+
+ * gmime-content-type.h: Replaced <> with "" in #include
+ <gmime-param.h>
+
+ * pan-mime-parser.c: added #include gmime-stream-buffer.h to pick
+ up prototype for g_mime_stream_buffer_gets.
+ (g_strstrbound): removed unused func.
+
+ * gmime-utils.c: on calls to ctype functions, explicitly upcast
+ the char arguments as ints to shut up gcc warnings on Solaris.
+ * gmime-param.c: same.
+
+2001-09-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * pan-mime-parser.c: New parser (with exactly the same API as
+ gmime-parser.c) that is meant to parse MIME objects without
+ needing them to be memory mapped. Quite a bit slower on average,
+ but is vastly sped up by using a GMimeStreamBuffer in BLOCK_READ
+ mode.
+
+ * gmime-stream-buffer.c (stream_write): Incremement the stream
+ position by the number of bytes we wrote.
+ (stream_tell): Return stream->position.
+ (stream_substream): Just return a substream of our source stream.
+ (g_mime_stream_buffer_gets): Increment the stream position by the
+ number of bytes read if and only if we are operating on a buffered
+ stream.
+
+2001-09-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-file.c (stream_tell): Return stream->position here
+ too.
+
+ * gmime-part.c (g_mime_part_set_pre_encoded_content): Don't decode
+ into a stream and then set the data wrapper encoding to the
+ incoming encoding type, instead use filters to decode into the
+ stream and set the data wrapper encoding to the default.
+
+ * gmime-stream.c (g_mime_stream_set_bounds): Don't set the
+ position equal to end if end == -1.
+
+ * gmime-parser.c (g_mime_parser_construct_message): Use the stream
+ functions to find the beginning and end of the stream rather than
+ breaking abstractions. Also reset the mem stream after writing to
+ it.
+ (g_mime_parser_construct_part): Reset the mem stream here too.
+ (g_mime_parser_construct_part_internal): Use the stream interfaces
+ to get the position instead of breaking abstractions.
+
+ * gmime-stream-fs.c (stream_tell): Return stream->position.
+
+ * gmime-stream-mem.c (stream_seek): Return the new syteam
+ position.
+ (stream_tell): Return stream->position.
+
+2001-09-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/gmime-docs.sgml: Documented streams.
+
+ * gmime-stream-fs.c (stream_write): Seek to the position we think
+ we're at before attempting to write, and increment the stream
+ position after the write.
+
+ * gmime-stream-file.c (stream_write): Seek to the position we
+ think we're at... this is just in case we are or have substreams
+ that might have read or written in the meantime. Also remember to
+ increment the stream position after the write.
+ (stream_eos): Only return feof() if our end boundary is unlimited.
+
+ * gmime-stream-mem.c (stream_write): Start writing data at
+ stream->position rather than always appending it to the end of the
+ mem stream. Also don't go writing past the end boundary if it's
+ set.
+ (stream_length): Use a relative bound_end.
+ (stream_seek): Same.
+ (stream_eos): Here too.
+ (stream_write): And here.
+ (stream_read): And here.
+ (stream_substream): Correctly set the bounds.
+ (g_mime_stream_mem_new): Here too.
+ (g_mime_stream_mem_new_with_byte_array): And here.
+ (g_mime_stream_mem_new_with_buffer): Same.
+ (g_mime_stream_mem_set_byte_array): And finally here.
+
+2001-09-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * test-streams.c: New test suite for streams.
+
+ * gmime-stream-buffer.c (stream_read): Fixed some logic bugs
+ (including forgetting a break statement at the end of a case).
+ (g_mime_stream_buffer_gets): Fixed some logic bugs.
+
+ * gmime-stream-mem.c (stream_read): Fixed logic error.
+
+2001-09-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-buffer.c (g_mime_stream_buffer_gets): Implemented.
+ (stream_reset): Implemented.
+ (stream_eos): Implemented.
+ (stream_write): Reimplemented.
+ (stream_read): Reimplemented.
+
+2001-09-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-buffer.[c,h]: New stream that buffers reads or
+ writes to/from another stream. Will also implement a gets() method
+ for Charles.
+
+2001-09-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-mem.c (stream_eos): Check for position >= instead
+ of == bound_end
+
+ * gmime-stream.c (g_mime_stream_eos): Do some simple bounds
+ checking.
+
+ * doc/*: Updated.
+
+ * gmime-part.c (g_mime_part_get_content_object): Added.
+
+2001-09-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-fs.c (stream_seek): Improve.
+
+ * gmime-stream-file.c (stream_reset): Oops, reset the position
+ pointer on a successful reset.
+ (stream_seek): Fixed.
+
+2001-09-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream-fs.c (stream_reset): Reset the position offset. Doh!
+
+ * gmime-stream.c (g_mime_stream_write_to_stream): Don't increment
+ total if no bytes were read/written.
+
+ * gmime-stream-filter.c (stream_substream): Copy over the filters.
+
+ * gmime-part.c (g_mime_part_verify_content_md5): Updated.
+ (g_mime_part_set_content_md5): Updated.
+ (g_mime_part_get_content): Updated.
+ (write_content): Updated.
+
+ * gmime-data-wrapper.c (g_mime_data_wrapper_write_to_stream):
+ Implemented.
+
+ * gmime-filter-basic.[c,h]: A basic filter that does Base64 and QP
+ encoding/decoding.
+
+ * gmime-filter-crlf.[c,h]: A simple filter that does crlf(/dot)
+ encoding/decoding.
+
+2001-09-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-data-wrapper.c (g_mime_data_wrapper_new_with_stream): Ref
+ the stream.
+ (g_mime_data_wrapper_set_stream): Same.
+ (g_mime_data_wrapper_get_stream): Return the internal stream.
+ (g_mime_data_wrapper_get_encoding): Return the internal stream's
+ encoding.
+ (g_mime_data_wrapper_write_to_stream): Not-yet-implemented.
+
+ * gmime-filter.[c,h]: Abstract class for filters.
+
+ * gmime-stream-filter.[c,h]: Abstract stream for filtering.
+
+ * gmime-part.c (g_mime_part_set_content): Updated for data-wrapper
+ changes.
+ (g_mime_part_set_content_byte_array): Same.
+ (g_mime_part_set_pre_encoded_content): And here.
+ (g_mime_part_get_content): And here too.
+
+ * gmime-parser.c (g_mime_parser_construct_part_internal): Fix
+ offset calculations.
+ (g_mime_parser_construct_part_internal): Updated for data-wrapper
+ changes.
+
+2001-09-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * test-parser.c (test_parser): Updated.
+
+ * test-mime.c (test_parser): Updated.
+
+ * gmime-utils.h: Move the GMimePartEncodingType enum here.
+
+ * gmime-stream-fs.[c,h]: Implemented.
+
+ * gmime-stream.c (g_mime_stream_construct): New function to
+ initialize the stream data members.
+ (g_mime_stream_substream): New function to get a substream of
+ another stream.
+ (g_mime_stream_unref): If the stream is actually a substream,
+ unref it's "super" stream if we are destroying the substream.
+
+ * gmime-stream-mem.c (stream_substream): Implemented.
+ (g_mime_stream_mem_new): Updated to use g_mime_stream_construct().
+ (g_mime_stream_mem_new_with_byte_array): Same.
+ (g_mime_stream_mem_new_with_buffer): And here too.
+
+ * gmime-stream-file.c (stream_substream): Implemented.
+ (g_mime_stream_file_new): Updated to use
+ g_mime_stream_construct().
+ (g_mime_stream_file_new_with_bounds): Same.
+
+ * gmime-part.c (g_mime_part_set_content_md5): Updated to use
+ streams.
+ (g_mime_part_verify_content_md5): Same.
+ (g_mime_part_set_content): Updated to use streams and data
+ wrappers.
+ (g_mime_part_set_content_byte_array): Same.
+ (g_mime_part_set_pre_encoded_content): And here.
+ (g_mime_part_set_content_object): New function that allows one to
+ set the content object of a MIME part.
+ (g_mime_part_get_content): Updated to use streams.
+ (write_content): Same.
+ (g_mime_part_write_to_stream): Replacement for
+ g_mime_part_write_to_string().
+ (g_mime_part_to_string): Updated to use
+ g_mime_part_write_to_stream().
+ (g_mime_part_destroy): Updated to destroy the content object
+ rather than destroying a GByteArray (since we longer use a
+ GByteArray for the content data).
+
+ * gmime-parser.c (g_mime_parser_construct_message): Now takes a
+ stream argument instead of a string.
+ (g_mime_parser_construct_message_from_file): Deprecated.
+ (g_mime_parser_construct_part): Also takes a stream now.
+
+ * gmime-message.c (g_mime_message_write_to_stream): Replacement
+ for g_mime_message_write_to_string().
+ (g_mime_message_to_string): Updated.
+
+ * gmime-header.c (g_mime_header_write_to_stream): Replacement for
+ g_mime_header_write_to_string().
+ (g_mime_header_to_string): Updated.
+
+2001-09-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-stream.[c,h]: Abstract stream class.
+
+ * gmime-stream-mem.[c,h]: Memory stream.
+
+ * gmime-stream-file.[c,h]: File stream.
+
+ * gmime-data-wrapper.[c,h]: Data wrapper class. Will be used as
+ the content object in MIME parts.
+
+2001-08-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (encode_8bit_word): Oops. Add the closing ? char.
+ (g_mime_utils_8bit_header_encode): Oops. Make sure we encode *all*
+ lwsp chars.
+ (g_mime_utils_8bit_header_decode): Slightly better fix for the
+ other day.
+
+2001-08-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+2001-08-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Added gmime-charset.[c,h] to the build.
+
+ * gmime-charset.[c,h]: New source files for managing charset
+ related issues.
+ (g_mime_charset_init): New function to retrieve the user's locale
+ information for later use with gmime_charset_locale_name.
+ (g_mime_charset_locale_name): New function to return user's
+ locale.
+
+ * gmime-utils.c (g_mime_utils_8bit_header_decode): linear
+ whitespace isn't the only thing that can delimit atoms.
+ (get_codeset): Removed in favor of the new gmime-charset
+ functions.
+ (g_mime_utils_8bit_header_encode): Use g_mime_charset_locale_name.
+ (encode_8bit_word): And here too.
+
+2001-08-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * internet-address.c (decode_mailbox): When returning due to a
+ missing local part, make sure to set *in to inptr.
+
+2001-08-13 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-utils.c (encode_8bit_word): query nl_langinfo for the
+ codeset instead of just assuming iso-8859-1. Thanks to Volodymyr
+ M . Lisivka <lvm@mystery.lviv.net> for suggesting this patch.
+
+ * gmime-utils.c (g_mime_utils_8bit_header_encode): same.
+
+ * gmime-parser.c (find_header_part_end): new utility function to
+ find the dividing line between body & header.
+ (g_mime_parser_construct_part): sync.
+ (g_mime_parser_construct_message): sync.
+
+ * gmime-parser.c (get_header_block): remove unused func.
+ (rfc822_headers): remove unused static array.
+
+2001-07-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * zentimer.h: Added. Provides some timing macros for performace
+ testing.
+
+ * zenprofiler.h: Added. Extends zentimer.h as a simple profiler
+ that gives nice printouts.
+
+ * test-parser.c: Use zentimer.h
+
+2001-06-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-header.c (g_mime_header_remove): New function.
+ (g_mime_header_set): Setting header to NULL no longer removes the
+ header. Use g_mime_header_remove instead.
+
+ * gmime-message.c (g_mime_message_write_to_string): No longer have
+ to sync the headers.
+ (g_mime_message_get_headers): Same.
+ (g_mime_message_set_sender): sync the From header.
+ (g_mime_message_set_reply_to): Sync the Reply-To header.
+ (g_mime_message_add_recipient): Sync the recipient header.
+ (g_mime_message_add_recipients_from_string): Same.
+ (g_mime_message_set_subject): Sync the Subject header.
+ (g_mime_message_set_date): Sync the date header.
+ (g_mime_message_set_message_id): Sync the Message-Id header.
+
+2001-06-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (quoted_encode): Minor cleanup.
+
+2001-06-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message.c (sync_headers): Oops. Don't place "Cc:" in the
+ header value string :-)
+
+2001-03-31 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-utils.c (g_mime_utils_8bit_header_decode): big speedups.
+
+ * gmime-utils.c (g_mime_utils_8bit_header_encode): small speedups.
+
+2001-05-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * internet-address.c (decode_mailbox): Oops, test to make sure we
+ won't be running past the end of the buffer when considering a
+ retry. Thanks to Charles Kerr for this fix.
+
+2001-03-29 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-part.c (g_mime_part_append_pre_encoded_content): fix small
+ bug that crept into the last commit.
+
+2001-05-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes on behalf of Charles Kerr of Pan fame:
+
+ * gmime-parser.c (g_mime_parser_construct_part_from_file):
+ Use g_mime_part_append_pre_encoded_content().
+
+ * gmime-part.c (g_mime_part_append_pre_encoded_content): New
+ function so that the FILE parser doesn't need to manage it's own
+ content array.
+
+ * gmime-header.[c,h]: const'ify.
+ (g_mime_header_foreach): New function to call a chosen function
+ for each header in the header object.
+
+2001-05-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * configure.in: Updated version to 0.6.0.
+
+ * README: Updated version to 0.6.0.
+
+ * doc/*: Updated again.
+
+ * gmime-header.c (g_mime_header_to_string): New function - mostly
+ for the sake of keeping with the API of the rest of GMime.
+ (g_mime_header_set): Make sure to always encode the header value
+ before we set it.
+
+ * gmime-part.c (g_mime_part_write_to_string): New function to
+ write the mime part to a GString.
+ (g_mime_part_to_string): Use g_mime_part_write_to_string.
+
+ * gmime-message.c (g_mime_message_get_headers): Use the new
+ g_mime_header_to_string function.
+ (g_mime_message_write_to_string): New function to write the
+ message to a GString.
+ (g_mime_message_to_string): Use write_to_string.
+
+2001-05-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+ * Makefile.am: Add gmime-header.[c,h] to the build.
+
+ * gmime-parser.c: Numerous changes to use gmime-header.
+
+ * gmime-message.c: Numerous changes to use gmime-header.
+ (g_mime_message_add_arbitrary_header): Removed.
+ (g_mime_message_set_header): The replacement for
+ add_arbitrary_header.
+ (g_mime_message_get_header): New function to get a header.
+
+ * gmime-header.[c,h]: New source fies to handle the complicated
+ nature of setting/getting header pairs.
+
+2001-05-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * doc/*: Updated.
+
+ * doc/Makefile.am: Use $(INSTALL) and $(INSTALL_DATA) rather than
+ `install -m 644`
+
+ * alloca.c: New file for systems that do not have alloca().
+
+ * Makefile.am: build alloca.c
+
+ * gmime-utils.c: Don't #include <alloca.h> - this is now handled
+ by config.h.
+
+ * config.h.in: Added alloca define checks.
+
+ * acconfig.h: Remove some extra defines that we don't care about.
+
+2001-05-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (parse_content_headers): Simplified and also
+ unfolded content-headers.
+
+ * gmime-part.c (g_mime_part_get_filename): If there isn't a
+ disposition, make sure that we don't ignore the possibility of a
+ "name" param in the Content-Type header.
+
+2001-05-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (need_quotes): Include '.' as a char to quote.
+
+ * gen-table.c (main): Fixed a type-o.
+
+ * internet-address.c (decode_mailbox): Be a little more forgiving
+ about unexpected chars while parsing the name part of the email
+ address. Skip the bad char and then retry. If we fail again,
+ *then* we abort.
+
+ * gmime-utils.c: #include <alloca.h>
+
+ * gmime-parser.c (g_mime_parser_construct_part): Oops, inend
+ points to the end of the string, not the last char of the string
+ (ie, '\0' not the char before it).
+
+2001-05-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-table-private.h: Oops, take out the check for isblank().
+
+ * internet-address.c (decode_quoted_string): Get rid of unused
+ variable.
+ (decode_address): Same.
+
+2001-04-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * internet-address.c (decode_domain): Try to only get
+ "fully-qualified" domain names, or ones that "look" like they are
+ at least ;-)
+ (decode_mailbox): If decode_domain() returns NULL, don't append
+ the '@' char. Also make sure that the name is non-empty.
+
+2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (g_mime_utils_quote_string): Made smarter.
+
+2001-03-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Added rules to build gen-table.c and added
+ gmime-table-private.h to the build.
+
+ * gen-table.c: New file to generate gmime-table-private.h if need
+ be.
+
+ * gmime-table-private.h: New file that contains
+ gmime_special_table.
+
+ * gmime-utils.c: Remove the gmime_special_table from here and
+ instead #include gmime-table-private.h.
+
+ * internet-address.c: #include gmime-table-private.h
+
+2001-03-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-message.c (create_header): Simplified a tad.
+ (g_mime_message_add_recipient): Updated for the new
+ InternetAddress API.
+ (g_mime_message_add_recipients_from_string): Simplified greatly
+ using the new InternetAddress API.
+
+ * internet-address.[c,h]: Completely rewritten to be a lot more
+ rfc0822 compliant.
+
+2001-03-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * README, configure.in: Updated version to 0.5.0
+
+2001-03-29 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-parser.c (g_mime_parser_construct_message_from_file): new
+ function to read a message from a FILE* instead of a character
+ array. This can be used to reduce the memory requirements of very
+ large messages.
+
+ * gmime-parser.c (get_next_line): new internal function.
+ * gmime-parser.c (g_mime_parser_construct_part_from_file): same.
+ * gmime-parser.c (parse_content_headers): same.
+ * gmime-parser.c (find_header_end): same.
+ * gmime-parser.c (get_header_block): same.
+ * gmime-parser.c (get_header_block_from_file): same.
+
+2001-03-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (get_time): Fix a compile warning.
+
+2001-03-20 Charles Kerr <charles@rebelbase.com>
+
+ * gmime-utils.c (get_year): constify the argument list.
+ * gmime-utils.c (get_time): same.
+
+ * gmime-utils.c (get_days_in_month): if #0'ed out unused code.
+ * gmime-utils.c (parse_broken_date): same.
+
+2001-03-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * internet-address.c (internet_address_new_from_string): Try to be
+ a little better about extracting the name, not 100% accurate but
+ better I guess.
+
+2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (g_mime_part_get_content_disposition_parameter):
+ It's okay to have a NULL disposition or a NULL param hash.
+ (g_mime_part_get_filename): Same.
+ (g_mime_part_get_content): It's okay not to have content.
+
+2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (quoted_decode): Fix a possible buffer overrun.
+
+2001-02-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-utils.c (parse_rfc822_date): Allow for time token to not
+ have a seconds field.
+
+2001-02-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-part.c (g_mime_part_to_string): Oops. Don't init
+ content_md5 with the content location string ;-)
+
+ * gmime-parser.c (g_mime_parser_construct_part): Init content to
+ NULL to get rid of a warning (this doesn't really matter as 'len'
+ was init'd to 0)
+
+ * gmime-part.c: #include unistd.h
+
+2001-01-27 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (g_mime_part_set_content_byte_array): So
+ set_content_array() was no good. After inspecting glib it was
+ discovered that there are hidden data members of a GByteArray that
+ hold info like if the data is NUL terminated, how much data is
+ allocated, etc.
+
+2001-01-26 Charles Kerr <charles@superpimp.org>
+
+ * gmime-part.c (g_mime_part_set_content_array): new function.
+
+2001-01-25 Charles Kerr <charles@superpimp.org>
+
+ * gmime-part.c (g_mime_part_destroy): fix memory leak - the
+ disposition wasn't being g_free()d.
+
+2001-01-24 Charles Kerr <charles@superpimp.org>
+
+ * gmime-part.c (g_mime_part_get_filename): Now takes a const
+ GMimePart.
+
+2001-01-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * internet-address.c (encoded_name): Updated.
+
+ * gmime-part.c (g_mime_part_set_pre_encoded_content): Updated to
+ reflect changes to gmime-utils.
+
+ * gmime-utils.c (g_mime_utils_text_is_8bit): Take a len argument.
+ (g_mime_utils_best_encoding): Same.
+ (encode_8bit_word): Updated.
+
+2001-01-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * gmime-parser.c (g_mime_parser_construct_part): Check for NULL
+ returns from g_strstrbound.
+
+2001-01-11 Charles Kerr <charles@superpimp.org>
+
+ * gmime-utils.c (get_year): small patch to handle 2-digit year
+ representation a little better -- "71" now translates to 1971,
+ but "01" now translates to 2001. Thanks to Ihar Viarheichyk for
+ suggesting this change.
+
+2001-01-07 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (g_mime_part_set_content_md5): Don't allow the
+ setting of Content-MD5 headers for multipart/* and message/rfc822
+ types.
+
+ * rfc/rfc1864.txt: Added (Content-MD5 RFC).
+
+2001-01-05 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (g_mime_part_set_content_md5): Oops, didn't quite
+ do this right. It should be correct now.
+ (g_mime_part_verify_content_md5): New function to verify the
+ Content-MD5.
+
+2001-01-04 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-parser.c (g_mime_parser_construct_part): Added support for
+ parsing Content-Location and Content-Md5 headers. Trim excess
+ trailing \n's. Also fix a bug where the end boundary would get
+ included as part of the last MIME Part's contents.
+ (g_strstrbound): Bounded strstr.
+
+ * configure.in:
+ * README: Updated version to 0.4.0
+
+ * Makefile.am: Added md5-utils to the build.
+
+ * md5-utils.[c,h]: Added.
+
+ * gmime-part.c (g_mime_part_to_string): Slightly new
+ implementation. Also added in support for Content-Location and
+ Content-Md5 headers.
+ (g_mime_part_destroy): Return if the mime part is
+ NULL. Also free the new content_location and content_md5 headers.
+ (g_mime_part_set_content_md5): Implemented.
+ (g_mime_part_get_content_md5): Implemented.
+ (g_mime_part_set_content_location): Implemented.
+ (g_mime_part_get_content_location): Implemented.
+ (get_content_type): Append a '\n'.
+
+2001-01-01 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * doc/gmime-sections.txt: Updated.
+
+ * doc/sgml/*: Updated.
+
+ * doc/html/*: Updated.
+
+2000-12-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-parser.c (g_mime_parser_construct_part): Don't set the
+ boundary if we are able to get the boundary from the content-type
+ because we'll just set the same data over again which is a
+ waste. Also tack a \n onto the ends of the boundary markers so
+ that "blah_" and "blah_D" don't trick the parser. Fix it so that
+ an empty part won't set any contents (since setting a 0-length
+ content stream causes a segfault).
+ (construct_headers): Take an inlen argument so that we can parse
+ headers without needing to strdup before passing into this
+ function.
+ (g_mime_parser_construct_message): Don't strdup the headers since
+ we can just pass in the length to the construct_headers() function
+ now.
+
+2000-12-18 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-parser.c (g_mime_parser_construct_part): Moved from being
+ an internal-only function.
+
+2000-12-28 Charles Kerr <charles@superpimp.org>
+
+ * gmime-utils.c (g_mime_utils_text_is_8bit): gracefully handle
+ a NULL pointer being passed in. Thanks to Christophe Lambin for
+ reporting this problem.
+
+2000-12-14 Charles Kerr <charles@superpimp.org>
+
+ * gmime-messge.c (g_mime_message_get_message_id): change
+ g_return_if_fail() to g_return_val_if_fail() to ensure that
+ a value is always returned.
+
+ * gmime-part.h (g_mime_part_get_content_description): make
+ the GMimePart argument const.
+ * gmime-part.h (g_mime_part_get_content): same.
+
+ * test-mime.c (test_addresses): fix bad printf statement.
+
+ * test-parser.c (test_parser): fixed the printf type of a time_t
+ from an int to unsigned long to avoid compiler warnings.
+
+2000-12-13 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * doc/sgml/*:
+ * doc/html/*:
+ * doc/gmime-sections.txt: Updated.
+
+ * README: Updated version line to 0.3.0
+
+2000-12-12 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (g_mime_part_to_string): Wrap some content-*
+ headers that might sometimes be long.
+
+ * gmime-message.c (create_header): Updated to reflect function
+ name changes/moves.
+
+ * gmime-utils.c (g_mime_utils_header_printf): Moved here from
+ gmime-message.c and slightly renamed ;-)
+ (g_mime_utils_header_fold): Moved from being private to being
+ public.
+
+2000-12-12 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c: Hmmm, why weren't multiparts using the internal
+ get_content_type function rather than ...content_type_to_string?
+ Possible FIXME: Should content_type_to_string do what
+ get_content_type does? or should it remain untouched and just
+ return "type/subtype"?
+
+ * gmime-part.h: No more boundary data member.
+
+ * gmime-part.c (g_mime_part_get_boundary): Updated, as we no
+ longer store the boundary on the MIME Part and instead only on the
+ content-type (where it belongs).
+ (g_mime_part_set_boundary): And here too.
+ (g_mime_part_destroy): No longer need to destroy the boundary.
+
+2000-12-11 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (g_mime_part_get_subpart_from_content_id): Erm,
+ smack me. This needs to be recursive (this is what happens when I
+ code really late at night).
+
+2000-12-11 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * configure.in (GMIME_MINOR_VERSION): Updated to 0.3.0
+
+ * gmime-parser.c (get_mime_part): Updated to reflect the
+ add_subpart API change.
+
+ * test-mime.c (test_multipart): And here too.
+
+ * gmime-part.h (g_mime_part_add_child): Macro added for backward
+ source compatability.
+
+ * gmime-part.c (g_mime_part_get_subpart_from_content_id): Renamed
+ from g_mime_part_get_child_from_content_id as I think I'm gonna
+ start calling them subparts in the API as it's a bit clearer than
+ calling them children. Also fixed up some of the logic (what if
+ the parent mime part had a content-id? The way the code was before
+ it'd never search the subparts). Oh, it also returns const now.
+ (g_mime_part_add_subpart): Renamed from g_mime_part_add_child and
+ also now does some error checking to make sure the parent part is
+ a multipart.
+
+2000-12-10 Charles Kerr <charles@superpimp.org>
+
+ * gmime-part.c (g_mime_part_get_child_by_content_id): new
+ utility function.
+
+2000-12-09 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (g_mime_part_set_boundary): Generate a random
+ boundary if passed boundary is NULL.
+
+2000-12-07 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-message.c (multipart_get_body): Traverses a MIME Part and
+ 'always' extracts the body assuming it exists. Extracts the
+ preffered text type if it exists, otherwise returns the type less
+ preferred.
+ (g_mime_message_get_body): Use multipart_get_body if the toplevel
+ part is a multipart.
+
+2000-12-05 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * README: Updated with more RFCs, etc.
+
+ * rfc/* Added a bunch more rfcs of interest.
+
+2000-12-04 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * test-mime.c: Added test code for the address parser.
+
+ * gmime-utils.c (g_mime_utils_quoted_encode_step): Updated. No
+ longer need to special-case whitespace chars as they have been put
+ into the gmime_special_table (a while ago).
+
+2000-12-02 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * Makefile.am: Install gmime.m4
+
+ * gmime.m4: Added.
+
+2000-12-02 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (g_mime_part_foreach): New convenience function for
+ manipulating each subpart of a mime part.
+
+ * gmime-message.c (g_mime_message_foreach_part): New convenience
+ function for manipulating all mime parts of a message.
+
+2000-12-02 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * doc/sgml/*:
+ * doc/html/*: Updated.
+
+ * doc/gmime-sections.txt: Add g_mime_message_[g,s]et_message_id.
+
+ * gmime-parser.c (construct_headers): Parse out Message-Id
+ headers.
+
+ * gmime-message.c (g_mime_message_destroy): Free the message id.
+ (g_mime_message_set_message_id): New function to set the message
+ id on a message.
+ (g_mime_message_set_message_id): New accessor function for
+ message-ids.
+ (create_header): Write out the Message-Id if and only if it
+ exists.
+
+2000-11-29 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * README: Updated.
+
+ * doc/gmime-sections.txt: Added new functions.
+
+ * doc/html/*: Updated.
+
+2000-11-29 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * configure.in: Bumped the version to 0.2.0 because the API has
+ changed a bit.
+
+ * test-parser.c:
+ * test-mime.c: Updated.
+
+ * gmime-utils.c (BASE64_ENCODE_LEN):
+ (QP_ENCODE_LEN): Macros for determining how much space we need to
+ encode a chunk of data to that encoding (estimate is liberal).
+ (encode_8bit_word): Use the macros to determine the length we
+ need.
+
+ * gmime-message.c (g_mime_message_get_body): Updated to reflect
+ changes to gmime-part.
+
+ * gmime-parser.c (get_mime_part): Updated.
+
+ * gmime-part.c (g_mime_part_set_content): Now takes a len argument
+ and has been updated to reflect the move to GByteArray.
+ (g_mime_part_destroy): Updated.
+ (g_mime_part_set_pre_encoded_content): New convenience function to
+ decode pre-encoded content and set it on the mime part.
+ (g_mime_part_get_content): Renamed from
+ g_mime_part_decode_contents.
+
+ * gmime-part.h: GMimePart->content is now a GByteArray that will
+ hold the raw content (in it's unencoded form).
+
+2000-11-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-content-type.c (g_mime_content_type_new_from_string):
+ Ignore extranious semicolons between parameters. Handle the event
+ where the content-type doesn't specify a subtype (this is broken
+ but some mailers will send "Content-Type: text" for example).
+ (g_mime_content_type_new): If there isn't a type or subtype, print
+ a warning and try to do some smart defaulting action.
+
+ * gmime-message.c (handle_multipart_alternative): Only remember
+ the last subpart if it was a text part.
+
+2000-11-19 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * doc/html/*:
+ * doc/sgml/*: Updated.
+
+ * test-mime.c: Updated.
+
+ * gmime-utils.c (g_mime_utils_quote_string): Do the detection on
+ whether or not to wrap the string in quotes here rather than
+ requiring a boolean argument specifying whether the string should
+ be quoted. RFC2045 provides us with a list of characters that are
+ not safe.
+
+ * gmime-param.c (g_mime_param_to_string): Updated to reflect
+ changes to g_mime_utils_quote_string. This function is the main
+ reason for the change - parameter values should really only be
+ quoted if they have to be else they should remain unquoted.
+
+ * internet-address.c (encoded_name): Updated to reflect changes to
+ g_mime_utils_quote_string.
+
+2000-11-19 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * TODO: Updated.
+
+ * gmime-utils.c: Updated gmime_special_table.
+ (g_mime_utils_8bit_header_encode): Since rfc2047 states that all
+ whitespace between encoded atoms must be ignored, the encoder
+ should therefor make an effort to encode whitespace when it falls
+ between two atoms that will be encoded. Use the IS_ESAFE mask.
+ (quoted_encode): Now takes a safemask argument to specify which
+ chars are safe to leave unencoded and also a arg to save whether
+ or not the word was encoded.
+ (g_mime_utils_8bit_header_encode_phrase): Updated to use the
+ IS_PSAFE mask.
+
+2000-11-19 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-parser.c (header_unfold): New function to unfold a header
+ (to be used internally).
+ (construct_headers): Unfold headers as we parse them.
+
+ * configure.in: Changed version to 0.1.1.
+
+ * gmime-part.c (get_content_disposition): Append a ";" before
+ appending any parameters even when there is no disposition
+ text. Also only enter into the param loop if there exist params.
+
+2000-11-16 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * doc/sgml/*: Added.
+
+ * doc/gmime-sections.txt: Added g_mime_part_decode_contents and
+ g_mime_header_printf.
+
+ * gmime-message.c (header_fold): New function to fold headers.
+ (g_mime_header_printf): New convenience function to print a
+ formatted header (which will get correctly folded).
+ (create_header): Correctly fold each header.
+
+2000-11-16 Charles Kerr <charles@superpimp.org>
+
+ * gmime-utils.c (datetok): don't crash if the date string passed
+ in is NULL.
+
+2000-11-15 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (g_mime_part_decode_contents): New convenience
+ function to decode the contents of a mime part (based on code by
+ Wayne Schuller).
+
+2000-11-14 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * doc/html/index.sgml: Added - apparently we need this :-)
+
+ * doc/Makefile.am: Updated to pass distcheck
+
+2000-11-10 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * doc/gmime-docs.sgml: Added a new paragraph explaining the
+ difference between functions that return const and the ones that
+ don't.
+
+ * doc/html/*.html: Updated.
+
+ * gmime-message.c:
+ * gmime-part.c:
+ * gmime-parser.c:
+ * internet-address.c:
+ * gmime-param.c: Updated Gtk-Doc comments.
+
+ * gmime-content-type.c: Wrote Gtk-Doc comments.
+
+2000-11-10 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * Makefile.am (SUBDIRS): Added doc
+
+ * configure.in: Generate doc/Makefile
+
+ * doc/Makefile.am: Ignore more headers when performaing
+ gtkdoc-scan.
+
+ * doc/gmime-docs.sgml:
+ * doc/gmime-sections.txt: Added.
+
+ * doc/html/*.html: Generated library reference.
+
+2000-11-09 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * TODO: Updated.
+
+ * test-mime.c: Added test of the new quote/unquote functions.
+
+ * gmime-message.c (g_mime_message_add_recipients_from_string):
+ Check for escaped quotes.
+
+ * gmime-part.c (get_content_type): Correctly quote params.
+ (get_content_disposition): Same.
+
+ * gmime-param.c (g_mime_param_new_from_string): Check for escaped
+ quotes. Also use unquote_string() to unquote the value.
+ (g_mime_param_to_string): Correctly quote the value.
+
+ * gmime-parser.c (get_mime_part): Check for escaped quotes and
+ correctly unquote strings where appropriate.
+
+ * gmime-utils.c (g_mime_utils_quote_string): New convenience
+ function to escape and quote a string.
+ (g_mime_utils_unquote_string): New convenience function to
+ un-escape and un-quote a string.
+
+ * internet-address.c (encoded_name): Use quote_string().
+ (internet_address_new): Use unquote_string() to unquote and
+ unescape the name component (it will be re-escaped and re-quoted
+ when it's written to a string later).
+
+2000-11-09 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * TODO: Updated.
+
+2000-11-08 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-parser.c (construct_headers): Oops. Set the subject with
+ the decoded string rather than the encoded one.
+ (get_mime_part): On the chance that we come accross a broken
+ multipart, default the mime type to text/plain and continue on.
+
+2000-11-08 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * internet-address.c (internet_address_to_string): Moved code
+ around to avoid unecessary warnings.
+
+ * gmime-utils.c: Added Gtk-Doc style comments to all the
+ functions.
+ (g_mime_utils_best_encoding): Return a GMimePartEncodingType
+ instead of gint.
+
+2000-11-01 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * Makefile.am (INCLUDES): Add -DG_LOG_DOMAIN=\"gmime\"
+
+2000-10-31 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * test-parser.c (test_parser): Test g_mime_message_get_body() here
+ as well.
+
+ * test-mime.c: Updated to reflect changes to get_body.
+
+ * gmime-message.c (g_mime_message_get_body): Return an allocated
+ buffer because we want to return the decoded message body rather
+ than the (possibly) encoded form.
+ (create_header): Write out the arbitrary headers first as they may
+ contain headers like "Received:" which really ought to be at the
+ top.
+
+ * gmime-part.c: Removed some old cruft.
+
+2000-10-29 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * internet-address.c (encoded_name): Use
+ g_mime_utils_8bit_header_encode_phrase() to encode the addrspec.
+
+ * gmime-utils.c (g_mime_utils_8bit_header_decode): Fix to make the
+ decoder more rfc compliant. As stated by rfc2047, all white space
+ between encoded words MUST be ignored.
+ (g_mime_utils_8bit_header_encode_phrase): New rfc2047 encoding
+ function for phrases (see rfc2047 section 5 part 3).
+
+2000-10-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-utils.c (parse_rfc822_date): Fixed the off-by-one-hour
+ bug.
+
+ * test-mime.c: Updated to reflect changes to
+ g_mime_message_get_body().
+
+ * gmime-message.c (g_mime_message_get_headers): Added Gtk-Doc
+ comment.
+ (g_mime_message_get_body): Modified to return a const pointer to
+ the message body rather than allocating it.
+
+2000-10-28 Charles Kerr <charles@superpimp.org>
+
+ * gmime-message.c (g_mime_message_get_headers): New function
+ similar to g_mime_message_get_body. Useful if you want a raw
+ display of headers separate from the body.
+
+ * gmime-message.[c,h] (g_mime_message_get_body): made const.
+
+2000-10-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * tests/Makefile.am: New automake file (when we make a release,
+ this directory should really be a part of the tarball as it
+ contains data for the test programs).
+
+ * tests/.cvsignore: Added.
+
+ * Makefile.am (SUBDIRS): Add the 'tests' directory
+
+ * configure.in: Generate tests/Makefile
+
+2000-10-27 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * test-mime.c: Added code to test g_mime_message_get_body()
+
+ * gmime-message.c (g_mime_message_get_body): New convenience
+ function that attempts to get the message body in the requested
+ text format (plain vs html).
+
+ * gmime-parser.c (construct_headers): If the end of a header field
+ is the end of the header, break out of the loop.
+
+ * gmime-content-type.[c,h]: Added const to arguments where
+ appropriate.
+
+ * gmime-utils.h: Fixed a spelling mistake in a comment ;-)
+
+2000-10-26 Charles Kerr <charles@superpimp.org>
+
+ * gmime-utils.h: made const the input ptrs for encode/decode
+ funcs.
+
+ * gmime-utils.c: Updated to reflect const changes.
+
+2000-10-26 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * test-mime.c: Also updated.
+
+ * gmime-parser.c (construct_headers): Updated to reflect name
+ changes.
+
+ * gmime-message.c: Updated to reflect name changes.
+
+ * gmime-message.h: Changed the name of the recipient type
+ #defines.
+
+2000-10-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * Makefile.am (SUBDIRS): Added "."
+
+ * configure.in: Create libgmime.spec
+
+2000-10-24 Charles Kerr <charles@superpimp.org>
+
+ * gmime-utils.c: added #include <stdlib.h> to pick up atoi.
+
+ * internet-address.c (internet_address_new): removed unused
+ variable `decoded'
+
+2000-10-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ Thanks to Charles Kerr of Pan fame for the following fixes.
+
+ * gmime-utils.c (encode_8bit_word): Oops, encode 'word' and not 'ptr'.
+
+ * gmime-part.c (g_mime_part_destroy): Free the content-id.
+
+2000-10-21 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime.h.in: Wrap definitions in #ifndef __GMIME_H__
+
+2000-10-18 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * TODO: Updated.
+
+ * test-*.c: Updated to reflect GMime API changes.
+
+ * gmime-part.c: #include "gmime-utils.h"
+
+ * gmime-parser.c (g_mime_parser_construct_message): Now takes a
+ boolean argument 'save_extra_headers' which tells the parser
+ whether it should add unknown headers to the arbitrary header
+ array or ignore them.
+ (construct_headers): Save the extra headers if desired.
+
+ * gmime-message.c (g_mime_message_add_arbitrary_header): Use the
+ new GMimeHeader structure.
+ (g_mime_message_new): Always initialize the arbitrary header array.
+ (g_mime_message_destroy): The arbitrary header array will never
+ be NULL (as it is now pre-initialized) so don't bother
+ checking.
+ (create_header): rfc2047 encode the arbitrary header values.
+
+2000-10-17 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * rfc/rfc*.txt: MIME specification RFCs
+
+ * README: Updated.
+
+ * TODO: Added a list of tasks that need to be done eventually.
+
+ * gmime-parser.c (get_mime_part): rfc2047 decode the
+ content-description before we set the value.
+
+ * gmime-part.c (g_mime_part_to_string): rfc2047 encode the
+ content-description before we write it to the string.
+
+2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-parser.c (construct_headers): rfc2047 decode some headers.
+
+ * internet-address.c (internet_address_to_string): Now takes an
+ argument to rfc2047 encode or not, when not rfc2047 encoding.
+ (internet_address_new_from_string): Rewrote
+
+ * gmime-message.c (create_header): rfc2047 encode addresses and
+ subject headers.
+
+2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-utils.c (g_mime_utils_quoted_encode_step): Fixed some
+ non-compliance issues like encoding all spaces as =20 even when
+ they shouldn't have been.
+
+2000-10-04 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * acconfig.h:
+ * config.h.in: #undef HAVE_ISBLANK
+
+ * configure.in: Check for the isblank() GNU extension function.
+
+ * gmime-parser.c (get_mime_part): Parse for the Content-Id. Use
+ isblank() instead of isspace() when looking to see if the content
+ header was wrapped. We want it to match only if the next char is
+ either a tab or a space.
+ (isblank): Define an isblank() macro if HAVE_ISBLANK isn't
+ defined.
+
+ * gmime-part.c (g_mime_part_set_content_id): New function to set
+ the Content-ID.
+ (g_mime_part_get_content_id): New function to get the Content-Id.
+ (g_mime_part_to_string): Print content id's if available.
+ (get_content_type): Eek! If there aren't any params, don't assign
+ 'string' an empty string! It's already been initialized with a
+ type!
+
+2000-10-04 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-utils.c (quoted_decode): New function to decode rfc2047's
+ version of the quoted-printable encoding.
+ (decode_8bit_word): Use quoted_decode()
+ (quoted_encode): New function to encode to rfc2047's version of
+ quoted-printable (removed from the internals of encode_8bit_word)
+ (encode_8bit_word): Use quoted_encode()
+
+2000-10-01 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * internet-address.c (internet_address_new_from_string): Fixed a
+ logic error that cut off the last char of the name (or address).
+
+ * gmime-parser.c (construct_headers): Optimized.
+
+ * gmime-part.c (get_content_type): If there are no params, don't
+ try to get any. Fixes a segfault.
+
+ * gmime-utils.[c,h]: New utilities functions for use with libgmime
+ (time and encoding/decoding routines)
+
+ * test-mime.c: test some of the routines in gmime-utils.c
+
+ * gmime.h.in: #include "gmime-utils.h"
+
+ * configure.in: Added checks for time zone stuff
+
+ * acconfig.h:
+ * config.h.in: Added some #undef's for timezone stuff
+
+ * Makefile.am: Added gmime-utils.[c,h]
+
+2000-09-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * HACKING: Updated
+
+ * gmime-param.c: Wrote Gtk-docs comments
+
+ * gmime-parser.c: Wrote Gtk-docs comments
+
+ * AUTHORS: Updated
+
+ * autogen.sh: Updated autogen.sh to look for gmime.h.in instead of
+ gmime.h
+
+2000-09-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime.h: Removed
+
+ * gmime.h.in: Replacement for gmime.h - modified to be dynamically
+ created at build-time.
+
+ * configure.in: Updated to generate gmime.h and also to ignore
+ doc/ until docs are written.
+
+ * Makefile.am: Modified to ignore doc/
+
+ * tests/*: MIME messages that break are likely to break MIME
+ parsers.
+
+2000-09-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (get_content_disposition): Put a space between
+ disposition parameters.
+ (get_content_type): New convenience function to dump the content
+ type and it's params to a string (for use internally).
+ (g_mime_part_to_string): Use get_content_type and add print for
+ content-description's.
+
+ * gmime-parser.c (get_mime_part): strip leading/trailing
+ whitespace from the disposition and convert param names to
+ lowercase. Also fixed Content-Transfer-Encoding.
+
+2000-09-23 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * gmime-part.c (g_mime_part_destroy): Erm, make sure to increment
+ to the next item in the list.
+
+ * gmime-message.c (recipients_destroy): Optimized a bit
+
+ * gmime-content-type.c (g_mime_content_type_new_from_string):
+ Change all parameter names to lowercase, this way we can look them
+ up without having to know which case the original name used (eg
+ boundary).
+
+ * test-mime.c: renamed from mime-test.c
+
+ * test-parser.c: a new test program that allows us to specify a
+ file to get our test email from.
+
+2000-09-22 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * configure.in: remember glib_cflags and glib_libs so we can dump
+ them into gmime-config later.
+
+ * gmime-config.in: use glib_cflags and glib_libs.
+
+ * gmime.h: add variables for major/minor/micro release
+
+ * Makefile.am: switch to GMIME_ instead of LIBGMIME_ stuff