2001-10-16 <NotZed@Ximian.com>
* camel-mime-utils.c (header_address_decode): If no content, dont
try and decode further and spit meaningless warnings.
svn path=/trunk/; revision=13702
2001-10-11 <NotZed@Ximian.com>
* camel-charset-map.[ch]: Removed charset/locale charset lookup
and iconv_open/close functions, moved to gal. Fixed all callers.
svn path=/trunk/; revision=13602
2001-10-06 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_decode_text): Fix a slight error in
logic. Just because the last word was an encoded word doesn't mean
we ignore the lwsp padding, we only ignore it if the last word and
*this* word are encoded.
svn path=/trunk/; revision=13490
2001-10-06 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-filter-basic.c (filter): Implemented uuencoding and
decoding.
(complete): Implemented uuencoding and decoding.
* camel-mime-utils.c (uuencode_close): New function to flush the
uu encoder.
(uuencode_step): New function to uuencode a block of data.
svn path=/trunk/; revision=13476
2001-10-05 <NotZed@Ximian.com>
* camel-mime-utils.c (header_decode_mailbox): Try harder to get
broken names out of addresses. Unencoded ,'s in names will still
break it, but well what can you do eh?
(header_decode_mailbox): Always add .'s into address we've scanned
past a '.', even if we can't decode the next part. Fix for some
annoying bug #.
svn path=/trunk/; revision=13453
2001-10-02 <NotZed@Ximian.com>
* camel-sasl-digest-md5.c (digest_response): Change to
camel_charset_iconv_open/close.
* camel-pgp-context.c (pgp_verify): Change to
camel_charset_iconv_open/close.
* camel-mime-part-utils.c (convert_buffer): Change to
camel_charset_iconv_open().
* camel-mime-filter-charset.c
(camel_mime_filter_charset_new_convert, finalise): Change to
camel_charset_iconv_open, etc.
* camel-mime-utils.c: Use the camel_charset_iconv_open/close()
functions to open/close it.
* camel-charset-map.c (camel_charset_iconv_open): New function,
wrap iconv_open, so we can cache ic's.
(camel_charset_iconv_close): Likewise for close.
(camel_charset_map_init,shutdown): Init/free iconv cache.
svn path=/trunk/; revision=13361
2001-10-02 Jeffrey Stedfast <fejj@ximian.com>
* camel-charset-map.c (camel_charset_to_iconv): Revert my
x-unknown special-case hack - this may mask other problems.
* camel-mime-utils.c (rfc2047_decode_word): If the iconv
conversion fails, for whatever reason, retry using the user's
locale charset.
svn path=/trunk/; revision=13359
2001-09-24 <NotZed@Ximian.com>
* camel-filter-search.c (check_header): If the type is encoded,
get the fallback charset from the message content-type.
* camel-mime-part-utils.c (check_html_charset): Dont check for
charset==null before calling charset_to_iconv.
(simple_data_wrapper_construct_from_parser): "
* camel-mime-message.c (process_header): Try use content-type
charset param as the fallback charset.
* camel-charset-map.c (camel_charset_to_iconv): Handle name ==
NULL, return NULL.
* camel-folder-summary.c (camel_folder_summary_format_address):
(camel_folder_summary_format_string): Made private again, removed
#warning about it. Renamed to s/camel_folder//.
(summary_format_string): Take default charset param.
(camel_message_info_new_from_header, message_info_new): Decode
content-type field to get the charset parameter to use as the
default charset for decoding strings.
* camel-search-private.c (camel_search_header_match): Pass NULL as
the charset, the locale charset is always tried.
(camel_search_header_match): Supply a default_charset parameter to
be used with TYPE_ENCODED params.
* camel-mime-utils.c
(header_param): get rid of the g_strcasecmp crap.
(header_set_param): Same here.
(header_decode_param_list): And here.
(header_decode_text): Totally rewritten. 30% of its size. If the
word is not rfc2047 encoded, always try default_charset if
supplied, if that fails, try locale charset if it exists, if that
fails then assume latin1/7 bit ascii.
(append_8bit): Changed to return FALSE if we can't convert for
whatever reason, and dont append anything.
* camel-mime-part.h (struct _CamelMimePart): Move content_type and
headers out of the 'private' section.
* camel-mime-part.c (get_headers): Dont do any conversion on the
header.
(process_header): Get the content-type charset as the fallback
charset for decode_string.
(construct_from_parser): IF we have a content-type header, process
it before doing anything else, so we have access to a fallback
charset for invalid headers.
svn path=/trunk/; revision=13096
* camel-folder-summary.c (camel_folder_summary_header_load): New
function to just load the summary. Not much use yet, until unread
counts are stored in the summary (which now looks like too much
work!).
* camel-mime-utils.c (header_decode_mailbox): Crappy fix for
stupid mailers. If we get 'name b. name <foo>' then treat it as
'"name b. name" <foo>'. See 8147.
(header_decode_mailbox): Another fix for really broken mailers
that have things that look like addresses followed by <address>
bits.
(rfc2047_encode_word): Escape ??= to avoid some bizarre warning
about trigraphs.
(scan_dir): If we dont have the folder open, then scan the 'new'
and 'cur' folders for new and unread messages to count instead.
svn path=/trunk/; revision=13040
2001-09-19 <NotZed@Ximian.com>
* General cleanup of camel debug printfs.
* camel-lock.c (camel_lock_fcntl): Changed to return 'success' if
the error indicates file locking isn't supported on this
filesystem. Still return a warning just incase (if its the first
time). Might fix a lot of reported bugs.
* providers/local/camel-spool-store.c (get_folder_info): Dont
include the empty // host part in the uri. This 'breaks' the
service lookup.
svn path=/trunk/; revision=12973
2001-08-19 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-folder.c (pop3_generate_uids): Make
sure the generated UID is non-NULL before appending it to the
array of UIDs. How would this even happen? I have no clue...
svn path=/trunk/; revision=12225
2001-08-10 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_raw_check_mailing_list): regfree the
pattern before continue'ing. This was showing up quite a bit under
purify.
svn path=/trunk/; revision=11867
2001-07-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_decode_param): Fix the fix that fixes
broken mailer behavior. We want to make sure that the user's
locale charset is non-NULL before we pass it off to
iconv_open(). If it *is* NULL, we want to use iso-8859-1.
svn path=/trunk/; revision=11448
2001-07-26 Jeffrey Stedfast <fejj@ximian.com>
* camel-url.c (camel_url_free): Allow the url to be NULL just like
the libc free convention.
svn path=/trunk/; revision=11437
2001-07-24 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_decode_param): Handle broken mailers
that send unencoded 8bit header params. And there was much
rejoicing. Rah.
svn path=/trunk/; revision=11362
2001-07-20 Not Zed <NotZed@Ximian.com>
* camel-charset-map.c (camel_charset_get_iconv_friendly_name):
renamed to camel_charset_to_iconv() to make it just a little more
svn path=/trunk/; revision=11254
2001-07-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-filter-charset.c
(camel_mime_filter_charset_new_convert): Convert to the
iconv-friendly charset names.
* providers/imap/camel-imap-store.c (create_folder): Fixed a
compiler warning about returning without a value in a non-void
function. Blah.
* camel-mime-part.c (process_header): Pass the locale charset as
the default_charset to header_decode_string().
* camel-folder-summary.c (camel_folder_summary_format_string):
Pass the locale charset as the default_charset to
header_decode_string().
(content_info_new): Same.
* camel-mime-message.c (process_header): Pass the locale charset
as the default_charset to header_decode_string().
* camel-mime-utils.c (append_8bit): New helper function who's
purpose is similar to append_latin1() but for 8bit text that we
are assuming is not latin1.
(header_decode_text): Now takes a default_charset parameter and
calls append_8bit when appropriate.
(header_decode_string): Also takes a default_charset parameter
now.
(header_decode_mailbox): Pass NULL as the default_charset to
header_decode_string().
svn path=/trunk/; revision=11250
2001-07-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (rfc2047_decode_word): Remove my iso8859-1 ->
iso-8859-1 hack and use camel_charset_get_iconv_friendly_name()
instead.
(rfc2184_decode): Use camel_charset_get_iconv_friendly_name()
* camel.c (camel_init): Call camel_charset_map_init().
* camel-charset-map.c (camel_charset_map_init): New function to
initialize the charset-equivalent lookup table. To be called by
camel_init().
(camel_charset_get_iconv_friendly_name): New function to try and
convert a charset into something that iconv is more likely to
accept.
svn path=/trunk/; revision=11235
2001-07-13 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (rfc2047_decode_word): Added a hack to
convert charsets in the format iso8859-1 to iso-8859-1 because it
seems to be more iconv friendly. It has been reported that on some
systems, iconv doesn't know about iso8859-1 while it *does* know
about iso-8859-1. See bug #4530.
svn path=/trunk/; revision=11094
2001-07-12 Not Zed <NotZed@Ximian.com>
* camel-mime-part-utils.c (extract_metatag_charset): Removed.
(check_html_charset): Replaced with this.
(simple_data_wrapper_construct_from_parser): Call
check_html_charset if we dont have a charset on the content-type,
and we have text/html data.
(check_html_charset): We also need to do qp/base64 decoding
ourselves, sigh.
* camel-mime-utils.c (html_meta_param_list_decode): Removed. This
was very wrong, the rules for mail headers vastly different from
rules for decoding html elements.
(rfc2184_decode): Move the malloc inside the iconv_open worked,
otherwise we have a memleak.
* camel-mime-filter-html.c (camel_mime_filter_html_finalize, init,
run, reset): Changed to use camelhtmlparser, and fixed a tiny
memleak.
* camel-html-parser.c: Made the html indexer tokeniser re-usable.
ONLY TO BE USED INTERNAL TO CAMEL HOWEVER.
(tokenise_step): Slight fix to non-quoted values.
svn path=/trunk/; revision=11028
2001-07-11 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part-utils.c (extract_metatag_charset): New function
to extract a meta-tag charset value if it exists.
(simple_data_wrapper_construct_from_parser): Along the same lines
as the code I previously ripped out, but this time use the
mime-parser's seek ability to help us along. Currently I read up
to a 2k buffer size - this is probably overkill, 1k is probably
plenty.
* camel-mime-utils.c (html_meta_param_list_decode): When we get to
an `=', we must skip past it before trying to grab the param
value. duh.
svn path=/trunk/; revision=11021
2001-07-11 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part-utils.c
(simple_data_wrapper_construct_from_parser): Ripped out my code
since it was never being used since the mime parser is not using a
seekable stream (ever?) which pretty much means my code needs to
be done someplace else.
svn path=/trunk/; revision=11016
2001-07-10 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (html_meta_param_list_decode): New function
to parse an HTML meta-tag.
* camel-mime-part-utils.c
(simple_data_wrapper_construct_from_parser): If the Content-Type
did not contain a charset parameter and it's also a text/html
part, we have 1 last place to look - in the META html tags. *sigh*
* camel-mime-message.c (camel_mime_message_get_source):
s/gint/unsigned since that's what it should be.
svn path=/trunk/; revision=10976
2001-07-06 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_encode_param): Don't allow in to be
NULL, so instead of doing if (in == NULL) return;, make it a
g_return_val_if_fail and later we can make it an assert or
something.
svn path=/trunk/; revision=10868
2001-06-29 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c: Added Originator: header as a header to look
for when looking for the mailing list.
svn path=/trunk/; revision=10603
2001-06-28 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_decode_param_list): Fix a memory
leak. Also if the decoded value is NULL, that means it wasn't
encoded so we don't want to toss the old value.
(header_param_list_format_append): Correctly wrap long parameter
values according to rfc2184.
svn path=/trunk/; revision=10566
2001-06-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-internet-address.c
(camel_internet_address_encode_address): Use the new
header_address_fold.
* camel-mime-utils.c: Removed some old #if 0'd code of mine.
(rfc2047_encode_word): If enclen is 0, don't write an encoded word
token (=?iso-8859-7?Q??= would be an invalid token).
(header_address_fold): New function to wrap address headers -
header_fold() was force-wrapping rfc2047 encoded words which was
making the test suite fail. The *real* solution, however, is to
not create rfc2047 encoded words longer than 72 chars.
svn path=/trunk/; revision=10545
2001-06-21 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (word_types_compatable): New function that
decides if 2 word types are mergeable. An atom and a qstring are
mergeable; 2 qstrings are mergeable; and 2 encoded words are
mergeable.
(header_encode_phrase_merge_words): If 2 words are merged, the new
word type is the MAX of the combined types. This means that if we
merge a qstring and an atom, the resulting word type is a
qstring.
* camel-internet-address.c (internet_format):
s/g_string_sprintfa/g_string_append since this makes more sense in
this particular case.
(internet_encode): Same here.
svn path=/trunk/; revision=10377
2001-06-20 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_raw_check_mailing_list): If the first
char of the mailing-list name is '<', chop it off to make Ettore
happy. Fixes bug #2153.
svn path=/trunk/; revision=10347
2001-06-14 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c: Added Mailing-List header regex so that we
can do mlist magic on that header.
svn path=/trunk/; revision=10242
2001-05-28 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_set_param): Use g_strcasecmp()
because some systems don't have strcasecmp(). Also, when removing
a param, make sure to free the param->name too.
svn path=/trunk/; revision=10030
* tests/lib/messages.c (test_message_read_file): Fix an fd leak
* tests/lib/session.c, tests/lib/session.h: a CamelSession
subclass for the test programs.
* tests/lib/Makefile.am: include session.[ch]
* tests/folder/test*.c: Use a CamelTestSession from libcameltest
instead of cut+pasting everywhere.
* tests/misc/url.c (main): Update for a camel_url_new change at
some point.
* tests/*/.cvsignore: Add stuff.
* camel-mime-utils.c (rfc2047_encode_word): Fix a silly ==/!=
mixup.
svn path=/trunk/; revision=10023
2001-05-14 Jon Trowbridge <trow@ximian.com>
* camel-search-private.c (utf8_get): Replicate the semantics of
the libunicode utf8 functions by returning NULL in the arg
on invalid utf8.
* camel-pgp-context.c (pgp_verify): Check for valid utf8,
terminate loop if something looks wrong.
* camel-mime-utils.c (header_encode_phrase_get_words): Properly
check for invalid utf8.
(header_encode_string): Properly check for invalid utf8.
* camel-charset-map.c (camel_charset_step): Properly check for
invalid utf8.
2001-05-14 Jon Trowbridge <trow@ximian.com>
* e-html-utils.c (is_citation): Check for bad utf8.
svn path=/trunk/; revision=9798
* Makefile.am (INCLUDES): Remove UNICODE_CFLAGS (and some other
stuff that's redundant with EXTRA_GNOME_CFLAGS)
(libcamel_la_LIBADD): Replace UNICODE_LIBS with GAL_LIBS.
* camel-search-private.c:
* camel-pgp-context.c:
* camel-mime-utils.c: Use gunicode interfaces rather than
libunicode.
* camel-charset-map.c: Use gunicode rather than libunicode. (The
charmap-regen code still depends on libunicode though.)
* camel-mime-filter-charset.h:
* tests/message/test2.c (convert): Use iconv rather than
unicode_iconv.
* providers/smtp/Makefile.am (libcamelsmtp_la_LIBADD):
* providers/pop3/Makefile.am (libcamelpop3_la_LIBADD):
* providers/local/Makefile.am (libcamellocal_la_LIBADD): Remove
UNICODE_LIBS.
* camel.c (camel_init): Remove call to unicode_init.
* camel-mime-parser.c: Remove unused unicode.h include.
svn path=/trunk/; revision=9585
2001-04-15 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_raw_check_mailing_list): regex
doesn't set errno and regcomp returns 0 on success and any other
value for an error (so don't *just* check for -1).
svn path=/trunk/; revision=9333
2001-04-03 Jeffrey Stedfast <fejj@ximian.com>
* Makefile.am: Added tests/ back in
* camel-mime-utils.c (header_decode_text): Ignore whitespace
between encoded words (there were a few cases where it didn't
before).
(header_encode_string): Preserve whitespace between words that are
to be encoded by encoding them too.
(header_encode_phrase): Same here but with phrases.
svn path=/trunk/; revision=9158
2001-03-26 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_decode_text): When writing the last
token (if not rfc2047 encoded), don't use g_string_append_len, use
append_latin1.
svn path=/trunk/; revision=8954
2001-03-18 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_param_list_format_append): Quote the
param value if it contains whitespace as well.
svn path=/trunk/; revision=8804
* camel-mime-utils.c (header_fold): Fix a bug that could make this
walk off the end of a string. (The bug has been there since
December... maybe this will fix some unreproduceable crashes?)
svn path=/trunk/; revision=8619