diff options
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 9113 |
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 |