2003-03-21 Jeffrey Stedfast <fejj@ximian.com>
Camel part of the fix for Lewing's bug #39204. Second half of the
patch should also fix it so that text/plain parts that are
detected as being text/html are rendered as html (not that I agree
with this mind you, but corporate customers want this "feature").
* camel-mime-part-utils.c
(simple_data_wrapper_construct_from_parser): If the part is
text/html and doesn't have a charset and we are able to find a
charset in the meta tags of the html content, set the charset
param on the content-type.
(camel_mime_part_construct_content_from_parser): After setting the
content object on the mime part, re-set the content-type of the
content object back to the one from the parser (as it may contain
changes from the original - see changes made to the ct in
simple_data_wrapper_construct_from_parser for details).
svn path=/trunk/; revision=20463
2003-03-21 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-ssl.c (camel_certdb_nss_cert_get): continue
reading the cert file until we've read it all or get a non-EINTR
errno.
svn path=/trunk/; revision=20457
2003-03-20 Jeffrey Stedfast <fejj@ximian.com>
* camel-sasl.c: Plug in GSSAPI support.
* camel-sasl-gssapi.[c,h]: Various fixes to make it compile (fixed
type-o's mostly).
svn path=/trunk/; revision=20438
raw 8-bit Subject data.)
* camel-mime-utils.c (header_decode_mailbox): Take a charset arg
and pass it to header_decode_string.
(header_decode_address): Take a charset arg and pass it to
header_decode_mailbox.
(header_mailbox_decode): Likewise.
(header_address_decode): Take a charset arg and pass it to
header_decode_address.
* camel-folder-summary.c (summary_format_address): Take a charset
arg and pass to header_address_decode.
(message_info_new, camel_message_info_new_from_header): Pass
charset to summary_format_address
* camel-internet-address.c (internet_decode): Update for
header_address_decode change. (Unfortunately we don't have a
charset to pass here.)
* camel-mime-message.c (camel_mime_message_build_mbox_from): Move
this here from camel-mbox-summary since the same functionality is
needed by evolution-mail too (and update for header_address_decode
change)
* providers/local/camel-mbox-summary.c
(camel_mbox_summary_build_from): Moved to CamelMimeMessage
svn path=/trunk/; revision=20430
2003-03-17 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part.c (process_header): Removed unused variable left
over from my previous fix.
* providers/smtp/camel-smtp-transport.c (smtp_send_to): Don't pass
'has_8bit_parts' to smtp_data() anymore.
(smtp_data): No longer takes 'has_8bit_parts' argument. Ignore
whether or not the message has 8bit parts when deciding what the
required encoding type we need to enforce. Fixes bug #39744.
svn path=/trunk/; revision=20312
2003-03-13 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part.c (process_header): Use
header_contentid_decode() as this new function should be safer
than the hack that we had before.
* camel-mime-utils.c (header_contentid_decode): New function to
try and parse a content-id string in such a way as to work around
some of the known bugs in other MIME implementations. Try to be as
"safe" as we can - ie. don't allow for more than 1 @ (since the
mailer uses "@@@%d" as a fake content-id value for parts without
content-ids) and don't allow for invalid content-type chars.
svn path=/trunk/; revision=20295
2003-03-13 Jeffrey Stedfast <fejj@ximian.com>
* camel-folder.c (get_uids): Don't add bogus uids to the uid
array. Might fix bug #38868 (it's the only way I can figure that
camel_folder_get_message_info() could possibly return NULL for the
Outbox folder).
svn path=/trunk/; revision=20280
2003-03-12 Not Zed <NotZed@Ximian.com>
* camel-object.c (remove_bag): removed, it was double-freeing the
key.
(save_object): Just save the object in an array.
(camel_object_bag_destroy): first save the object bag's objects in
a list, then remove them one at a time from the bag since we can't
remove hash table entries while we're in a foreach (PITA glib
shit). For #39486.
(camel_object_bag_*): killed some warnings.
svn path=/trunk/; revision=20258
2003-03-09 Jeffrey Stedfast <fejj@ximian.com>
* camel-url-scanner.c (camel_url_addrspec_end): Doh! If inptr ==
pos + 1, then return FALSE (before it was checking for inptr ==
pos, but it will never be pos).
svn path=/trunk/; revision=20225
2003-03-07 Not Zed <NotZed@Ximian.com>
* camel-vee-folder.c (vee_search_by_expression): handle a null
return from search_by_expression, for bug #33786.
svn path=/trunk/; revision=20215
2003-03-06 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-utils.c (imap_next_word):
s/g_strncasecmp/strncasecmp/g
* camel-iconv.c: Updated to be an exact copy of e-iconv (except
names changed). We don't use this yet, but we may in the future.
* camel-url.c (camel_url_new_with_base): Here too.
* camel-sasl-kerberos4.c (krb4_challenge): Use camel_strdown()
here instead of g_strdown() since the latter has been deprecated.
* providers/imap/camel-imap-utils.c (imap_parse_body): Use
camel_strdown() since g_ascii_strdown() does not do what we
thought.
* providers/imap/camel-imap-store.c:
s/strstrcase/camel_strstrcase/g
* providers/imap/camel-imap-folder.c (do_append):
s/strstrcase/camel_strstrcase/
(handle_copyuid): Same.
* string-utils.c (camel_strdown): New function because the
g_ascii_strdown interface sucks.
(camel_strstrcase): Renamed from strstrcase.
svn path=/trunk/; revision=20213
2003-03-06 Jeffrey Stedfast <fejj@ximian.com>
* camel-text-index.c (camel_utf8_next): Same as below.
* camel-search-private.c (camel_utf8_getc): Updated since not all
platforms/compiles support __inline__.
svn path=/trunk/; revision=20192
2003-03-06 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part.c (camel_mime_part_get_encoding): Get rid of the
const return - it mismatches the prototype and we don't need it
anyway. Fixes bug #39173.
svn path=/trunk/; revision=20191
2003-03-06 Jeffrey Stedfast <fejj@ximian.com>
Fixes for bug #39168
* providers/local/camel-spool-summary.c: Get rid of the empty
private struct.
* providers/local/camel-mbox-summary.c: Get rid of the empty
private struct.
* camel-vee-store.c: Get rid of the empty private struct.
* camel-mime-filter-from.c: Get rid of the empty private struct.
2003-03-05 Jeffrey Stedfast <fejj@ximian.com>
* providers/sendmail/camel-sendmail-transport.c
(sendmail_send_to): Add a CRLF filter to the output stream to
convert any CRLF sequences into plain old line-feeds to work
around a bug in some local transport programs.
svn path=/trunk/; revision=20187
2003-03-04 Jeffrey Stedfast <fejj@ximian.com>
* camel-object.h: s/class/klass in one place so that the header is
c++-safe.
svn path=/trunk/; revision=20140
2003-03-03 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-openssl.c (camel_tcp_stream_ssl_new): Updated
to use the new API from a fe commits ago for the NSS stream. This
is just to make it compile, but does not update the behaviour to
act like the NSS stream. Note that people shouldn't be using
OpenSSL anyway.
(camel_tcp_stream_ssl_new_raw): Same.
* camel-process.[c,h]: New source file containing convenience
functions for process creation/termination mainly for use with
Pipe filters but should be usable for anything we want.
* camel-io.[c,h]: New source files implementing read/write system
calls with proper error checking and cancellation
(ie. StreamFs::read/write and CamelTcpStreamRaw::read/write). No
sense duplicating the same code over and over. Now I can use this
same code easily in other i/o code (such as Pipe filters and gpg
code?).
svn path=/trunk/; revision=20132
2003-03-03 Not Zed <NotZed@Ximian.com>
* camel-store.c (camel_store_unsubscribe_folder): Do similar
folder != NULL checking as for delete_folder before passing a NULL
to object_bag_remove.
svn path=/trunk/; revision=20121
2003-02-28 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (connect_to_server): Same
as IMAP and POP.
* providers/imap/camel-imap-store.c (connect_to_server): Same as
the POP3 code.
* providers/pop3/camel-pop3-store.c (connect_to_server): Pass in
appropriate flags for camel_tcp_stream_ssl_new*() functions.
* camel-tcp-stream-ssl.c (enable_ssl): Not all ssl/tls streams
will want to allow each of SSLv2, SSLv3 and TLSv1 so use flags to
decide which to enable/disable.
(camel_tcp_stream_ssl_new): Now takes a flags argument to mask out
which SSL/TLS versions the stream should be compatable with.
(camel_tcp_stream_ssl_new_raw): Same.
svn path=/trunk/; revision=20111
2003-02-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-stream-filter.c: Add a 'flushed' state variable to the
private struct.
(do_read): Set p->flushed to TRUE after we call
camel_mime_filter_complete() on all the filters.
(do_reset): Set p->flushed to FALSE.
(do_eos): Make sure the filters have been flushed before returning
that the stream is at EOS.
* camel-mime-filter-canon.c (complete): Don't add a eol -
otherwise we will fail to verify some mutt signatures that do not
have a blank line before the boundary line (and note that the last
\n before the boundary really belongs to the boundary anyway) so
#if 0 this code out for now.
svn path=/trunk/; revision=20096
2003-02-26 Jeffrey Stedfast <fejj@ximian.com>
* camel-multipart-signed.c: Updated to use g_alloca instead of
alloca so that we can skip all the #ifdef checks and skip checking
for alloca in configure.in and all that foo.
svn path=/trunk/; revision=20081
2003-02-26 Jeffrey Stedfast <fejj@ximian.com>
* camel-store.c (camel_store_delete_folder): Make sure the folder
is non-NULL before trying to remove it from the store's
object-bag.
svn path=/trunk/; revision=20067
2003-02-25 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part-utils.c
(simple_data_wrapper_construct_from_parser): canonicalise the
charset name (if it is an iso charset) so that our strncasecmp to
see if it is an iso-8859-# charset will be guarenteed to work on
all systems.
(canon_charset_name): New function to return the canonical iso
charset name.
(simple_data_wrapper_construct_from_parser): If the charset is
NULL *or* the charset == "us-ascii" then check that it is 7bit
clean to decide if it is rawtext (we did not check the case where
charset was "us-ascii" before).
svn path=/trunk/; revision=20057
2003-02-25 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-message.c: Same as the ones below.
* camel-mime-part.c: Reverted back to pre-camel-iconv
* camel-filter-search.c: Same as below.
* camel-folder-summary.c: Reverted back to pre-camel-iconv
* camel.c (camel_init): Reverted to pre-camel-iconv
* camel-charset-map.c (camel_charset_locale_name): Removed (part
of the revert).
(camel_charset_canonical_name): Same.
* camel-mime-filter-charset.c: Revert back to using e_iconv from GAL.
* camel-mime-part-utils.c: Revert back to using e_iconv from GAL.
* camel-mime-utils.c: Revert back to using e_iconv from GAL.
* camel-sasl-digest-md5.c: Revert back to using e-iconv from GAL.
svn path=/trunk/; revision=20056
2003-02-24 Jeffrey Stedfast <fejj@ximian.com>
* camel-iconv.c: Make bucket->refcount 31 bits and bucket->used 1
bit instead of having each use their own 32bit int.
svn path=/trunk/; revision=20035
2003-02-24 Jeffrey Stedfast <fejj@ximian.com>
* camel-iconv.c (iconv_cache_bucket_expire): Use g_iconv_close()
here, missed this before.
(camel_iconv): Might as well call g_iconv here even though it just
calls iconv directly.
svn path=/trunk/; revision=20034
2003-02-21 Jeffrey Stedfast <fejj@ximian.com>
* camel-iconv.c (camel_iconv_charset_name): New function...back
from the depths of hell from whence it came originally. Turns out
that g_iconv_open() is lame and can't handle all the stuff we used
to handle in e_iconv_charset_name().
(camel_iconv_open): Use camel_iconv_charset_name() on the to/from
charsets rather than camel_charset_canonical_name(). Now maybe
g_iconv_open will work for charsets such as "ks_c_5601-1987".
* providers/pop3/camel-pop3-store.c (pop3_connect): Reget the
capabilities after a successful authentication.
* providers/pop3/camel-pop3-engine.c (get_capabilities): If we are
in the TRANSACTION state and CAPA did not list UIDL as a supported
command, try checking for it the hard way.
svn path=/trunk/; revision=20033
2003-02-23 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_data): Do it the
same way we just made the sendmail code do it.
* providers/sendmail/camel-sendmail-transport.c
(sendmail_send_to): My last change but in a better way.
svn path=/trunk/; revision=20023
2003-02-22 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_data): Remove all
Bcc headers before sending to the smtp server.
* providers/sendmail/camel-sendmail-transport.c
(sendmail_send_to): Remove all Bcc headers before sending to
sendmail.
svn path=/trunk/; revision=20000
2003-02-20 Jeffrey Stedfast <fejj@ximian.com>
* camel.c (camel_init): Call camel_iconv_init().
(camel_shutdown): Call camel_iconv_shutdown().
* camel-sasl-digest-md5.c (digest_response): Updated to use
camel-iconv and the new camel-charset-map functions.
* camel-mime-utils.c: Updated to use camel-iconv and the new
camel-charset-map functions.
* camel-mime-part-utils.c (check_html_charset): Use
camel_charset_canonical_name() instead of e_iconv_charset_name()
which is longer available.
(convert_buffer): Use camel-iconv.
(simple_data_wrapper_construct_from_parser): Since
camel_charset_iso_to_windows() returns the charset in it's
canonical format, no need to re-canonicalise it.
* camel-mime-part.c (process_header): Use
camel_charset_canonical_name() instead of e_iconv_charset_name()
which is longer available.
* camel-mime-message.c (process_header): Use
camel_charset_canonical_name() instead of e_iconv_charset_name()
which is longer available.
* camel-mime-filter-charset.c: Use camel-iconv.
* camel-folder-summary.c (message_info_new): Use
camel_charset_canonical_name() instead of e_iconv_charset_name()
which is longer available.
(content_info_new): Use camel_charset_locale_name().
(camel_message_info_new_from_header): Same as message_info_new().
* camel-search-private.c: Use g_alloca() instead of alloca().
* camel-filter-search.c (check_header): Use
camel_charset_canonical_name() instead of e_iconv_charset_name()
which is longer available.
* camel-charset-map.c (camel_charset_locale_name): New function,
replaces e_iconv_locale_charset().
(camel_charset_canonical_name): New function, similar to
e_iconv_charset_name() but instead of returning the iconv-friendly
name, it returns the canonical name. (g_iconv will do the
iconv-friendly name conversions for us).
svn path=/trunk/; revision=19977
2003-02-20 Jeffrey Stedfast <fejj@ximian.com>
* camel-filter-search.c (run_command): Redirect program's stdout
and stderr to /dev/null
* camel-filter-driver.c (pipe_to_system): Redirect the program's
stderr to /dev/null
(pipe_to_system): Write the pipe to a mem stream and use the mem
stream in the parser. Also, when setting an exception get the
errno from the parser so we can give more info about the error to
the user.
svn path=/trunk/; revision=19974
2003-02-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-filter-driver.c (pipe_message): New filter action that
pipes the message source to the user-program and reads back the
modified message and replaces driver->priv->message with the new
message object.
(do_copy): Check p->modified to make sure the message hasn't been
modified by the pipe-message action - if it has been modified,
default to the slower camel_folder_append_message() way of
copying.
(do_move): Same.
(pipe_to_system): Set p->modified to TRUE if the user-program gave
us back a message stream and we were able to parse it.
(camel_filter_driver_filter_message): If the message has been
modified, always use camel_folder_append_message() when appending
it to the default folder.
svn path=/trunk/; revision=19951
2003-02-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-filter-driver.c (pipe_message): New filter action that
pipes the message source to the user-program and reads back the
modified message and replaces driver->priv->message with the new
message object.
svn path=/trunk/; revision=19950