2002-08-25 Jeffrey Stedfast * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * doc/*: Updated. 2002-08-03 Jeffrey Stedfast * 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 * 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 * 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 * 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 * 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 * gmime-message.c (message_remove_header): Fix April 3 2002 bug that kept message-remove-header from removing headers. 2002-07-29 Jeffrey Stedfast * 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 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 * remove strlib.[ch] * use g_strcasecmp instead of strcasecmp * use g_strncasecmp instead of strncasecmp * use g_stpcpy instead of stpcpy * added "#include " where needed 2002-07-29 Charles Kerr * 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 * 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 * 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 * 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 * gmime-filter-crlf.c (filter_filter): Fix to not add an extra \r for pre-canonicalised streams. 2002-07-19 Jeffrey Stedfast * 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 * 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 * 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 * 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 * gmime-iconv-utils.c (g_mime_iconv_strndup): Fix for nul-terminating some multibyte charsets.