2002-02-28 Not Zed <NotZed@Ximian.com>
* camel-mime-utils.c (header_fold): Use the FOLD_SIZE as a
recommended folding size, but add a new FOLD_MAX_SIZE (=998, the
smtp max line size) as the hard limit for any output.
svn path=/trunk/; revision=15866
2002-02-08 Not Zed <NotZed@Ximian.com>
* providers/local/camel-spool-summary.c
(camel_spool_summary_build_from): The day number has to be 2 chars
wide, space filled to work properly with pine, etc.
* providers/local/camel-spoold-store.[ch]: new type of provider
'spool directory', which lets you view external mbox dirs without
adding any extra cruft. Perhaps it should use . files to store
summaries? Still a bit experimental, there's a warning when you
select it in the account editor. Finished off most of #1185.
Can't rename or move folders.
* camel-mime-utils.c (header_decode_date): If the date is
100->1900 then we actually want to use it as the year in the tm
struct, not year+100. e.g. year 102 -> 2002, not 2102.
2002-02-07 Not Zed <NotZed@Ximian.com>
* providers/local/camel-spool-store.c (get_folder): Pass path into
spool_folder_new.
* providers/local/camel-spool-folder.c (camel_spool_folder_new):
(camel_spool_folder_construct): Take the full path to the folder
and use that as the file path, independent of the full_name we
use.
2002-02-07 Not Zed <NotZed@Ximian.com>
* providers/local/camel-local-provider.c: Added new type, spoold
provider, spoold: for local directories.
* providers/imap/camel-imap-store.c (get_one_folder_offline):
Create offline uri's in a compatible manner to online ones.
svn path=/trunk/; revision=15606
2002-01-31 Not Zed <NotZed@Ximian.com>
* camel-mime-utils.c (header_decode_domain): Oops, this was
converting foo@[blah] to foo@[ blah ], fixed.
svn path=/trunk/; revision=15535
2002-01-28 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_decode_status_code):
New function to decode an enhanced status code.
(smtp_set_exception): Sets an exception based on the
Enhanced-Status-Code.
(esmtp_get_authtypes): Don't diplicate the key in the hash since
the key and value are the same.
(smtp_rcpt): Include the failed recipient in the error message to
be more helpful to the user.
* camel-mime-utils.c (hex_decode): Make sure to allocate enough
for the NUL byte.
svn path=/trunk/; revision=15500
2002-01-21 Jeffrey Stedfast <fejj@ximian.com>
* camel-filter-driver.c (do_beep): As a temporary solution, just
printf ("\a"); to make a beep :-)
* providers/imap/camel-imap-command.c
(imap_command_strdup_vprintf): Encode the mailbox to UTF-7 here.
* providers/imap/camel-imap-utils.c (imap_parse_list_response):
Decode the mailbox name as we parse the list response.
(imap_mailbox_decode): It's only an illegal mailbox name if it
didn't switch back to US-ASCII mode.
svn path=/trunk/; revision=15421
2002-01-17 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-filter-basic.c (filter): Stop uudecoding once the
CAMEL_UUDECODE_STATE_END state bit gets set. Set the
CAMEL_UUDECODE_STATE_BEGIN state bit once we find the begin line.
(reset): No longer have uu_begin or uulen state variables, these
are now stuffed into a single state variable.
* camel-mime-utils.c (uudecode_step): No longer needs a uulen
argument and also keeps track of whether or not the end of the
encoded data has been found in 'state'.
(uuencode_step): Now stuffs uulen into state so that the uulen
argument is no longer needed.
(uuencode_close): Same.
svn path=/trunk/; revision=15349
2001-12-12 Jeffrey Stedfast <fejj@ximian.com>
* camel-folder-summary.c (content_info_load): Don't try setting a
content-type parameter if either the name or value is NULL.
* camel-mime-utils.c (header_set_param): NULL-protection.
svn path=/trunk/; revision=15248
2001-12-21 Jeffrey Stedfast <fejj@ximian.com>
* broken-date-parser.c (parse_broken_date): Completely
rewritten. It is now a load faster and a heck of a lot more
accurate, also now returns a time_t and sets the saveoffset
variable rather than returning a new char* buffer for the normal
camel date parser to re-parse. This saves a fair number of cpu
cycles :-)
* camel-mime-utils.c (header_decode_date): Cleanup the broken date
parsing code.
svn path=/trunk/; revision=15205
2001-12-04 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_content_type_simple): Protect against
either of the types being NULL.
2001-12-05 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-filter-basic.c (filter): If complete() allocates
len+2 bytes for the out buffer, so should this. See bug #16371 for
an example case.
2001-12-05 Jeffrey Stedfast <fejj@ximian.com>
* camel-sasl-digest-md5.c: iconv() returns a size_t, not an int.
* camel-pgp-context.c: The return value of iconv() is a size_t,
not an int.
* camel-mime-part-utils.c (convert_buffer): Always use size_t args
for iconv().
* camel-mime-filter-charset.c (complete): Always use size_t args
for iconv().
(filter): Same.
* camel-mime-utils.c (header_address_fold): Make headerlen a
size_t instead of an int.
(header_fold): Same.
(base64_encode_close): We should be returning a size_t and inlen
should also be a size_t.
(base64_encode_step): Same here.
(base64_decode_step): Here too.
(base64_encode_simple): And here...
(base64_decode_simple): Same.
(uuencode_close): We should also use size_t's here...
(uuencode_step): And here too.
(uudecode_step): And also here.
(quoted_encode_close): Same idea here.
(quoted_encode_step): Again here.
(quoted_decode_step): Here too.
(quoted_encode): Input length should be a size_t.
(rfc2047_decode_word): Same.
(g_string_append_len): Here too.
(append_8bit): "
(rfc2047_encode_word): "
(quote_word): "
(hex_decode): "
(rfc2184_decode): Use size_t's with iconv().
(header_decode_param): Same.
svn path=/trunk/; revision=14956
2001-11-19 Jeffrey Stedfast <fejj@ximian.com>
Updates for compliance with rfc2231
* camel-mime-utils.c (header_encode_param):
camel_mime_special_table[c] & IS_ESAFE should have been
!(camel_mime_special_table[c] & IS_ESAFE). Also added a few
comments for how to improve the code at some future date.
(header_decode_param): Now takes an argument rfc2184_part so our
caller can get this information as well.
(header_decode_param_list): Pass an rfc2184_part argument to
header_decode_param and also added a few comments on where to
improve on rfc2184/rfc2231 compliance.
(rfc2047_decode_word): Updated to respect the updated ABNF syntax
of rfc2047 encoded words, yay.
svn path=/trunk/; revision=14750
2001-10-30 <NotZed@Ximian.com>
* camel-mime-utils.c (header_decode_mailbox): w(x) out some warnings.
* providers/local/camel-local-summary.c
(camel_local_summary_load): Remove the warning about not loading
summary file - its a valid case for new folders.
svn path=/trunk/; revision=14411
2001-10-29 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-utils.c (header_decode_param): Minor fix - should
have been using a strNcmp when checking if it was an rfc2047
encoded word.
svn path=/trunk/; revision=14360
2001-10-29 <NotZed@Ximian.com>
* camel-mime-utils.c: Turn off w() -> warnings.
* providers/imap/camel-imap-store.c (rename_folder): Also rename
the message cache.
(rename_folder): Fix subscribed folders table with rename(s).
* providers/imap/camel-imap-folder.c (imap_rename): Implement,
rename the cache dir pointer.
* providers/imap/camel-imap-message-cache.c
(camel_imap_message_cache_set_path): New method to set the path
used by a message cache.
svn path=/trunk/; revision=14327
2001-10-25 <NotZed@Ximian.com>
* camel-search-private.c (utf8_get): Remove the stupid warning
that should never have been there in the first place.
* camel-sasl-digest-md5.c (digest_response): s/iconv/e_iconv/
* camel-pgp-context.c (pgp_verify): "
* camel-mime-utils.c (rfc2047_decode_word, rfc2047_decode_word,
append_8bit, rfc2047_encode_word, rfc2184_decode,
header_decode_param): "
* camel-mime-part-utils.c (convert_buffer, convert_buffer): "
* camel-mime-filter-charset.c (reset, complete, filter): "
svn path=/trunk/; revision=14113
* camel-mime-utils.c (mail_list_magic): Remove an extra * in one
of the regexps that glibc apparently doesn't mind but bsd does.
svn path=/trunk/; revision=13942
* camel-filter-search.c, camel-folder-search.c (check_header): Use
search_type_mlist for mailing list searches.
* camel.c (camel_init): call camel-mime-utils-init func.
* camel-mime-utils.c: Changed mail mail_list_magic to include a
domain part, also pre-compile all the patterns. They are all
backward compatible except List-Id: which now uses the
mail-address-like <list-name.host.name> part rather than the
plain-text part (which might've been blank anyway).
(camel_mime_utils_init): Initialisation function to setup any
static data required by camel-mime-utils at run-time. We now
setup the base64/charset class tables here, so it doesn't need to
be done statically.
(camel_mime_special_table, camel_mime_base64_rank): No longer
statically initialise these.
(main): Removed + the tests at the end of the file.
(header_raw_check_mailing_list): Dont compile regex's here,
already compiled in utils_init. Use the regex patterns to remove
leading <'s from addresses. Also, if there is a domain part
matched, add that after a '@' is added.
camel-search-private.c:
(camel_search_header_match): Added SEARCH_TYPE_MLIST for mlist
search types. It ignores the domain part if either (but not both)
of the values dont have it.
svn path=/trunk/; revision=13894
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