aboutsummaryrefslogtreecommitdiffstats
path: root/camel/ChangeLog.pre-1-4
diff options
context:
space:
mode:
Diffstat (limited to 'camel/ChangeLog.pre-1-4')
-rw-r--r--camel/ChangeLog.pre-1-422083
1 files changed, 22083 insertions, 0 deletions
diff --git a/camel/ChangeLog.pre-1-4 b/camel/ChangeLog.pre-1-4
new file mode 100644
index 0000000000..7ea58c89d4
--- /dev/null
+++ b/camel/ChangeLog.pre-1-4
@@ -0,0 +1,22083 @@
+2003-06-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * broken-date-parser.c (d): Turn off debugging.
+
+ * providers/pop3/camel-pop3-engine.c (get_capabilities): Move the
+ code that prepends the 'password' authtype to the auth list so
+ that we don't add it again when regetting the capabilities.
+
+2003-05-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (run_only_once): Turned off a debugging
+ printf.
+
+2003-05-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ This should finish fixing all variations of bug #42854, which,
+ funnily enough specified "copying" as the scenario for reproducing
+ this bug, but somehow I found/fixed it only for expunging for some
+ reason? I can't even guess as to how this happened. Oh well,
+ expunging needed fixing either way.
+
+ * providers/imap/camel-imap-folder.c (imap_transfer_online): Sort
+ the uids here too (just like I had fixed for expunge a week or so
+ ago).
+ (imap_transfer_resyncing): Sort them here too.
+ (imap_search_by_uids): Sort here too, even though I don't think it
+ is necessary. Can't hurt.
+ (imap_expunge_uids_offline): Might as well sort here too.
+
+2003-05-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-object.c (camel_object_bag_destroy): Lets try this
+ again. We don't actually want to free the key here, because
+ camel_object_bag_remove() does that for us. This should fix bug
+ #43406 properly.
+
+2003-05-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-object.c (camel_object_bag_destroy): Create a second
+ GPtrArray for the keys. We don't want to use bag->free_key() on
+ the object. Fixes bug #43406.
+
+2003-05-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.c (camel_folder_summary_load): Only display
+ a warning if errno != EINVAL (EINVAL means there was a version
+ mismatch, so we don't really need to warn here since we are
+ supposed to be able to handle this situation).
+ (perform_content_info_load): Turn off debugging message.
+ (summary_assign_uid): Turn off uid-clash warning.
+ (camel_folder_summary_decode_token): Turn off debug messages.
+ (summary_header_load): Turn off version-mismatch warning.
+
+2003-05-16 Jeremy Katz <katzj@redhat.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): Ensure cmdbuf
+ is initialized to avoid compiler warning.
+
+ * providers/local/camel-mbox-summary.c (summary_header_load): Cast
+ folder_size to uint32 to fix warning.
+ (camel_mbox_summary_sync_mbox): Update for new API.
+
+ * providers/imap/camel-imap-utils.c (parse_params):
+ imap_parse_nstring expects size_t, not int
+ (imap_body_decode): Likewise.
+
+ * camel-stream-filter.c (do_read): presize needs to be size_t
+ instead of int.
+ (do_write): Likewise.
+
+ * camel-seekable-substream.c (stream_read): Return ssize_t instead
+ of int to match prototypes.
+ (stream_write): Likewise.
+
+ * camel-mime-part.c (construct_from_parser): len needs to be
+ size_t instead of int.
+
+ * camel-mime-parser.c (folder_scan_step): datalength needs to be a
+ size_t* instead of an int* to make dependent APIs safe.
+ (camel_mime_parser_step): Likewise.
+ (folder_scan_content): Likewise.
+ * camel-mime-parser.h: Likewise.
+
+ * camel-mime-message.c (camel_mime_message_class_init): Use glib
+ macro for pointer/int conversions.
+ (construct_from_parser): Update for new API.
+
+ * camel-folder-summary.c
+ (camel_folder_summary_info_new_from_parser): Update len to be
+ size_t for new API.
+ (summary_build_content_info): Likewise.
+ * camel-http-stream.c (http_get_headers): Likewise.
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): Likewise.
+ * camel-multipart-signed.c (signed_construct_from_parser): Likewise.
+ * camel-multipart.c (construct_from_parser): Likewise.
+
+ * camel-folder-search.c (match_words_index): Use glib macros for
+ pointer/int conversions.
+ * camel-html-parser.c (tokenise_setup): Likewise.
+ (convert_entity): Likewise.
+ * camel-block-file.c (block_hash_func): Likewise.
+ (camel_block_file_get_block): Likewise.
+ (camel_block_file_get_block): Likewise.
+ (camel_block_file_detach_block): Likewise.
+ * camel-session.c (session_thread_msg_new): Likewise.
+ (session_thread_msg_free): Likewise.
+ (session_thread_wait): Likewise.
+ * camel-text-index.c (text_index_compress_nosync): Likewise.
+ (text_index_compress_nosync): Likewise.
+ (camel_text_index_validate): Likewise.
+ * camel-vee-folder.c (vee_folder_remove_folder): Likewise.
+ (unmatched_check_uid): Likewise.
+ (folder_added_uid): Likewise.
+ (vee_folder_build_folder): Likewise.
+ (folder_changed_add_uid): Likewise.
+ (folder_changed_remove_uid): Likewise.
+ * providers/imap/camel-imap-search.c (imap_body_contains): Likewise.
+ * providers/pop3/camel-pop3-folder.c (cmd_list): Likewise.
+ (cmd_uidl): Likewise.
+
+ * camel-data-cache.c (data_cache_init): Cast to CamelCopyFunc.
+ Fixes a warning.
+
+2003-05-15 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-utils.c (header_decode_word): Simplistic quick-fix
+ for #42710. Add a charset argument. If the data is 8 bit, try to
+ decode into the passed in charset (i.e. the message header?), at
+ worst, fall back to latin1, similarly to header_decode_text.
+ Fixed all callers to pass in a charset if available, or NULL.
+
+2003-05-14 Not Zed <NotZed@Ximian.com>
+
+ ** See bug #42540
+
+ * camel-service.c (camel_gethostbyname): pre-initialise the error
+ return to invalid, so if we cancel, we definetly get a bad result.
+ Also, for a valid return against result, not herr.
+ (camel_gethostbyaddr): Likewise.
+
+2003-05-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-local-folder.c (local_delete): Only delete
+ the index if it is non-NULL. Fixes bug #42763.
+
+2003-05-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Added
+ a note to the comment block for this function noting that uids
+ MUST be in sorted order.
+
+ * providers/imap/camel-imap-folder.c (imap_expunge_uids_online):
+ Sort the uids before splitting them into UID set chunks. The code
+ that splits the uid array into sets expects the uids to be in
+ sorted order. Fixes bug #42854.
+
+ * providers/imap/camel-imap-command.c (imap_command_start):
+ Re-enable camel_verbose_debug logging.
+
+2003-05-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): If
+ host->h_name is NULL or an empty string, default back to using the
+ IP address rather than the hostname in the EHLO command.
+
+2003-05-13 Ettore Perazzoli <ettore@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (d): Disable debugging.
+
+ * providers/imap/camel-imap-command.c (d): Disable debugging.
+
+ * providers/imap/camel-imap-search.c (d): Disable debugging.
+
+2003-05-02 Dan Winship <danw@ximian.com>
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): Don't call
+ g_utf8_validate on an empty message. Fixes a warning.
+
+2003-05-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ Workaround for POS mailers like the one in bug #42045.
+
+ * camel-mime-utils.c (header_decode_date): Make sure the numeric
+ timezone is between -1200 and 1200, otherwise it is invalid.
+
+ * broken-date-parser.c (get_tzone): Make sure the numeric timezone
+ is between -1200 and 1200, otherwise it is invalid.
+
+2003-04-29 Dan Winship <danw@ximian.com>
+
+ * Makefile.am (camel_lock_helper_SOURCES): Remove camel-lock.c
+ from here because it upsets automake 1.6 for some reason
+ (camel_lock_helper_LDADD): Add camel-lock.o here
+
+2003-04-29 Jeremy Katz <katzj@redhat.com>
+
+ * providers/imap/camel-imap-folder.c (parse_fetch_response):
+ body_len needs to be a size_t instead of int
+
+2003-04-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c: Disable debugging printfs.
+
+ * providers/imap/camel-imap-store.c (imap_connect_online): #if 0
+ out some code that parsed the namespaces since the results aren't
+ used and they generate debugging output.
+
+2003-04-23 Not Zed <NotZed@Ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): only free the
+ host if it was set. removes a run-time warning.
+
+ * camel-session.c (get_service): oops, the service owns the url
+ after we construct it.
+
+2003-04-22 Not Zed <NotZed@Ximian.com>
+
+ ** Should fix #41629, #41448, et al.
+
+ * tests/folder/test10.c: a new torture test for object bag
+ creation/unreffing.
+
+ * camel-url.c (camel_url_copy): new function to copy a url.
+
+ * camel-object.c (camel_object_bag_new): add arguments for key
+ copy and key free functions. Fixed all callers.
+ (camel_object_bag_destroy): fix a memleak, free the bag key.
+ (camel_object_bag_get, camel_object_bag_reserve)
+ (camel_object_bag_abort, save_bag, save_object): Make the key a
+ void type, rather than char *.
+ (camel_object_bag_add): As above, and also copy the key.
+ (camel_object_bag_remove_unlocked): free the key using
+ bag->free_key.
+
+ * camel-session.c (register_provider)
+ (camel_session_destroy_provider, get_service): Changed to use an
+ object bag instead of a hash table for the service 'cache'.
+ (service_cache_remove): Removed, no longer required.
+
+2003-04-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_ctx_parse_status): Don't set seen_eof1
+ here anymore once we get a trust metric.
+ (gpg_ctx_new): Init seen_eof1 to TRUE here.
+ (gpg_ctx_set_ostream): Change seen_eof1 to FALSE here this way we
+ only ever have to set this if we are expecting output.
+ (gpg_ctx_parse_status): Don't set seen_eof1 for importing either.
+ (gpg_ctx_op_step): Only FD_SET() those fd's that we have not yet
+ finished reading.
+
+2003-04-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-url-scanner.c (camel_url_web_end): Urls are unlikely to
+ end with punctuation or closing braces, so strip any of those off
+ the end of the url. Fixes bug #41461.
+
+ * tests/mime-filter/data/html.1.out: Removed a trailing \n at the
+ end of the file, this is incorrect (since out input file does not
+ contain one).
+
+ * camel-mime-filter-tohtml.c (html_convert): Only output a <br> if
+ we found an eoln in the input. Along the same lines, don't write a
+ '\n' to the output buffer unless we've encountered that eoln in
+ the input. Fixes bug #41407.
+
+2003-04-17 Not Zed <NotZed@Ximian.com>
+
+ ** for #40989
+
+ * camel-text-index.c (text_index_delete): delete the block
+ file/key file directly, not just its files.
+
+ * providers/local/camel-local-folder.c (local_delete): implement,
+ just delete the index file if it exists.
+ camel-store-delete-folder will delete other data (maybe it all
+ should be done here).
+
+ * camel-block-file.c (camel_key_file_finalise): keep lock around
+ decrementing key file use count.
+ (camel_key_file_delete): new function to delete the key file (&
+ close it off).
+ (key_file_use): if we've been deleted, always fail.
+ (camel_block_file_finalise): only close the file if its a valid
+ fd.
+ (block_file_use): if we've been deleted, always fail.
+ (camel_block_file_delete): delete the block file & close.
+ (struct _CamelBlockFilePrivate): fix the !ENABLE_THREADS case to
+ still compile this.
+
+ ** for #41163
+
+ * camel-multipart-signed.c (parse_content): Dont assume adding 1
+ to line length will go to the next line. e.g. for dos lines that
+ end in \r\n. Fix for #41163.
+ (parse_boundary): util function to help above.
+
+2003-04-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_verify): The gpg child process exiting
+ does not necessarily mean that we've ready everything that we can
+ from its pipes, so don't use gpg_ctx_op_exited() as a loop-exit
+ condition. If for some reason the gpg child process does exit (due
+ to an error), gpg_ctx_op_step() will eventually fail (as soon as
+ it has finished reading any data in the pipes) and cause the loop
+ to be terminated anyway. This fixes truncation of the gpg --verify
+ stderr output that Evolution displays as the "validity report"
+ (for lack of a better description).
+ (gpg_ctx_op_step): Removed some debugging printf's
+ (gpg_ctx_get_diagnostics): Use a bitfield to decide if we've
+ already flushed the diagnostics stream, much simpler (plus we have
+ plenty of bits to spare so might as well use them).
+ (gpg_ctx_new): Fixed another logic bug which determined whether or
+ not we should convert the gpg output from the locale charset into
+ UTF-8.
+
+2003-04-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c: Turn off debugging if
+ CAMEL_VERBOSE_DEBUG isn't set.
+
+2003-04-10 Not Zed <NotZed@Ximian.com>
+
+ * tests/mime-filter/data: filter data test cases.
+
+ * tests/mime-filter/test-tohtml.c: New test for html filter.
+
+ ** See bug #40969
+
+ * camel-mime-filter-tohtml.c (html_convert): Change the logic
+ slightly, scan a whole line within the main loop.
+
+2003-04-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_ctx_get_utf8_diagnostics): Removed. I
+ just realised that we ALWAYS want to get gpg's stderr in UTF-8, so
+ the better solution (plus less code duplication) is to just have
+ the diagnostics buffer be a CamelStreamMem with a charset filter.
+ (gpg_ctx_new): Setup a filter stream to convert our gpg stderr
+ diagnostics into UTF-8 if needed.
+ (gpg_ctx_free): Unref the diagnostcis stream.
+ (gpg_ctx_parse_status): Flush the diagnostics stream if we are
+ going to use the data in an exception.
+ (gpg_ctx_op_step): Use camel_stream_write() to append to the
+ diagnostics stream rather than appending the buffer to a
+ GByteArray like we used to do.
+ (gpg_ctx_op_step): Flush the diagnostics stream here too.
+ (gpg_verify): Use a const char *diagnostics string here, forcing a
+ slight rearrangement of calls - use the const char *dignostics
+ before we gpg_ctx_free, otherwise we'll be passing free'd memory
+ off to the cipher_validity.
+ (gpg_ctx_get_diagnostics): Do the work here to flush the
+ diagnostics stream and nul-terminate the buffer. Also return const
+ now, instead of strdupping. No need for that.
+ (gpg_ctx_parse_status): Convert the user hint to UTF-8.
+
+2003-04-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_ctx_get_utf8_diagnostics): Changed my
+ mind a bit on how I wanted this to work. Instead of aborting on an
+ illegal sequence, do like we do with camel-mime-filter-charset and
+ just skip over invalid sequences. Also, in the noop failure case,
+ close the iconv_t so we don't leak it.
+
+2003-04-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_body_decode): Save the
+ content size in a temp variable until after we've successfully
+ parsed all of the body_type_1part expr. Also fixed a type-o in the
+ body_type_mpart case that caused the parser to fail.
+ (imap_parse_body): On failure to parse the body, as we iterate
+ through the child nodes, set their children/parent/next nodes to
+ NULL so that content_info_free() won't double-free any of the
+ other nodes we have already free'd (or are about to free).
+
+ * camel-gpg-context.c (gpg_ctx_get_utf8_diagnostics): New function
+ to get the UTF-8 version of the diagnostics (if the locale isn't
+ already UTF-8 safe).
+ (gpg_verify): Use the utf-8 diagnostics here. Also fixed a memleak
+ in the exception case.
+
+ * camel-mime-filter-charset.c
+ (camel_mime_filter_charset_new_convert): NULL-protect the to/from
+ charsets in the g_warning call.
+
+2003-04-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes for bug #40778. Probably others as well.
+
+ * providers/imap/camel-imap-utils.c (parse_params): Return 0 on
+ success, or -1 on fail. The other small utility functions should
+ probably do the same, but I was too lazy to fix them. Setting
+ inptr to NULL is just lame.
+ (imap_body_decode): New function to correctly parse a BODY
+ response.
+ (imap_parse_body): Rewritten to use the above function.
+
+2003-04-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): Make sure
+ host->h_name is not an empty string too? Apparently for one user
+ his resolved hostname is "". Go figure. Probably a broken system,
+ but easy enough to work around.
+
+ * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): If
+ store->engine->line is NULL, use _("Unknown error") as the error
+ string instead.
+
+2003-04-08 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-summary.c (camel_folder_summary_load): use
+ g_strerror, and use errno directly rather than ferrno().
+ (summary_header_load): set errno when we get a version mismatch.
+
+2003-04-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c: Disable debug printf's
+
+2003-03-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-gssapi.c (gssapi_challenge): If we are using the
+ heimdal krb5 implementation, don't free outbuf ever. Seems to
+ segfault if we do.
+
+2003-03-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-enriched.c (enriched_to_html): Use strncasecmp
+ for matching the nofill and /nofill tags. Also fixed to handle
+ enriched tags that require <param> tags.
+
+2003-03-28 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-store.c (get_folder): remove unused
+ var.
+
+ * providers/imap/camel-imap-utils.c (imap_parse_list_response):
+ moved an unused var to the #if 0'd out block.
+
+ * providers/imap/camel-imap-store.c
+ (parse_list_response_as_folder_info): remove unused vars.
+
+ * camel-index-control.c (main): deifne camel_init() before using
+ it.
+
+ * camel-vee-store.c (vee_get_folder): removed unused var.
+
+ * camel-stream-mem.c (stream_write): warning -> fixme.
+
+ * camel-stream-filter.c (_CamelStreamFilterPrivate): Add a ; to
+ the end of the struct definition.
+
+ * camel-store.c (camel_store_delete_folder): remove unused var.
+ (camel_store_rename_folder): "
+ (camel_store_unsubscribe_folder): "
+
+ * camel-mime-part.c (write_to_stream): Changed warning into a
+ TODO.
+ (construct_from_parser): removed warning, the code was fixed.
+
+ * camel-mime-message.c (construct_from_parser): Remove the
+ warning, the code was fixed.
+
+ * camel-mime-filter-enriched.c (camel_mime_filter_enriched_new):
+ Remove unused var.
+
+ * camel-medium.c (camel_medium_get_header): Removed warning, and
+ changed docs to reflect it.
+
+ * camel-gpg-context.c (gpg_ctx_parse_status): handle MODE_EXPORT
+ as a noop (warning).
+
+ * camel-folder.c (get_message_user_tag): changed a warning into a
+ fixme (its not that important).
+ (camel_folder_get_message_user_tag): "
+
+ * camel-data-cache.c (data_cache_finalise): removed unused vars.
+ (data_cache_expire): "
+
+2003-03-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-gssapi.c (gssapi_challenge): Get rid of debug
+ printf's that are no longer needed. In the case of errors, don't
+ release the outbuf gss_buffer_t since it shouldn't be set. Also
+ g_free (str) when we are done with it.
+
+ * camel-mime-utils.c (header_encode_phrase_merge_words): When we
+ remove a node from the list, make sure to g_list_free_1().
+ (header_encode_phrase_merge_words): Don't use
+ CAMEL_FOLD_PREENCODED as the upper-bound for merged-word length if
+ the merged-word will not be an rfc2047 encoded word. Instead, use
+ CAMEL_FOLD_SIZE-8 (which is the value we use in other places for
+ determining upper-bound lengths). Solves bug #38659.
+
+2003-03-27 Dan Winship <danw@ximian.com>
+
+ * camel-url.c (append_url_encoded): Like camel_url_encode, but
+ works directly on an existing GString.
+ (camel_url_to_string, output_param): Use it.
+ (camel_url_encode): Likewise. Remove "escape_unsafe" arg since the
+ "unsafe" chars are the ones that should *always* be escaped, and
+ the places we were passing FALSE were wrong.
+ (camel_url_decode): replace with a new version
+
+ * camel-file-utils.c (camel_file_util_safe_filename): Remove extra
+ arg to camel_url_encode.
+
+ * tests/misc/url.c (main): Add tests of basic URL parsing and
+ unparsing
+
+2003-03-28 Not Zed <NotZed@Ximian.com>
+
+ *
+ camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser):
+ Do a more thorough check for html marked as text/plain. Check
+ that the text starts with <html or <!doctype. More complete fix
+ for #16817.
+
+2003-03-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-gssapi.c (camel_sasl_gssapi_finalize): Pass in the
+ addresses of the second args to the delete/release functions.
+
+2003-03-27 Not Zed <NotZed@Ximian.com>
+
+ * camel-object.c (camel_object_bag_list): Ignore whether or not
+ the bag is currently reserved. We'll miss the new potential
+ object, but only 1. Should address #40103.
+
+2003-03-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-service.c (camel_gethostbyaddr): Don't use setv when we
+ don't need the stdarg interface.
+ (camel_gethostbyname): Same.
+
+2003-03-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-search.c (search_user_tag): This expression can
+ never return an array. We must always return a string value.
+
+2003-03-24 Timo Sirainen <tss@iki.fi>
+
+ * camel-imap-command.c (imap_read_untagged) Integer overflow fix.
+ If server sent a huge literal length, only a few bytes of memory
+ was allocated to it, but server could write as much data there as
+ it wanted.
+
+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).
+
+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.
+
+2003-03-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-gssapi.c: #include <com_err.h> instead of
+ #include <et/com_err.h>
+
+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).
+
+2003-03-20 Dan Winship <danw@ximian.com>
+
+ Handle raw 8-bit From data "correctly". (The same way we handle
+ 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
+
+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.
+
+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.
+
+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).
+
+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.
+
+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).
+
+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.
+
+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.
+
+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__.
+
+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.
+
+2003-03-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes for bug #39170
+
+ * camel-store-summary.c (camel_store_info_set_string): Remove
+ return keyword.
+
+ * camel-session.c (camel_session_thread_msg_free): Remove return
+ keyword.
+ (camel_session_thread_wait): Same.
+
+ * camel-index.c (camel_index_cursor_reset): Remove return keyword.
+
+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.
+
+2003-03-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-object.h: s/class/klass in one place so that the header is
+ c++-safe.
+
+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?).
+
+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.
+
+2003-02-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-http-stream.c (http_connect): Here too.
+
+ * 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.
+
+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.
+
+2003-02-27 Not Zed <NotZed@Ximian.com>
+
+ * camel-multipart-signed.c: Undo jeff's changes.
+
+ * providers/local/camel-spool-store.c (scan_dir): Fix a paste-o in
+ the object_bag_get key.
+
+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.
+
+ * 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.
+
+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).
+
+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.
+
+2003-02-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-charset-map.c (camel_charset_canonical_name): g_alloca
+ (strlen (charset) + 1) so we don't overflow the buffer.
+
+ * providers/pop3/camel-pop3-stream.c (stream_write): Don't write
+ the passwd, fixes "bug" #38601.
+
+ * camel-iconv.c: Make bucket->refcount 31 bits and bucket->used 1
+ bit instead of having each use their own 32bit int.
+ (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.
+
+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.
+
+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.
+
+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.
+
+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).
+
+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.
+
+2003-02-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (stream_connect): Fixed a type-o in the
+ ENABLE_IPv6 ifdef section.
+
+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.
+
+2003-02-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-search.c: Added a (get-size ) function to fix bug
+ #38073.
+ (search_get_size): Implemented.
+
+2003-02-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-url-scanner.c (url_scanner_table_init): Mark chars with
+ the high-bit set as CTRL chars.
+ (camel_url_web_end): If the char before the start of the url is an
+ open-brace, watch out for the matching close-brace.
+ (camel_url_file_end): Same.
+
+2003-02-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-smime-context.c (smime_get_password): Same as the gpg and
+ pkcs7 contexts.
+
+ * camel-sasl-popb4smtp.c (popb4smtp_challenge): Updated for
+ camel_session_get_password().
+
+ * camel-pkcs7-context.c (get_password): Same as the gpg code.
+
+ * camel-gpg-context.c (gpg_ctx_parse_status): Updated for
+ camel_session_get_password().
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): No need to
+ set USER_CANCEL exception here as it is done by
+ camel_session_get_password(). Also updated for the new
+ get_password() API change.
+
+ * providers/imap/camel-imap-store.c (imap_auth_loop): Updated for
+ camel_session_get_password() changes. We don't need to play the
+ "bad passwd" game here too, do we? Bah, probably should but I
+ don't feel like it for now. Maybe when we rewrite the IMAP
+ provider.
+
+ * camel-session.c (camel_session_get_password): Now takes a
+ 'reprompt' argument that will force user-input to be given even if
+ we have the passwd cached.
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Instead of
+ uncaching the passwd after we receive a -ERR from the POP server,
+ set 'reprompt' to TRUE to force user-input for the next password
+ prompt (ie, make sure the front-end knows not to just return the
+ cached value). The front-end can then decide to fill-in the
+ user-input field with the last passwd that the user supplied.
+ (pop3_try_authenticate): Now takes a reprompt argument which we
+ pass into camel_session_get_password().
+
+2003-02-05 Dan Winship <danw@ximian.com>
+
+ * Makefile.am (libcamelincludedir): Define in terms of
+ privincludedir.
+ (camellibexecdir): Define in terms of privlibexecdir
+ (libcamel_la_LDFLAGS): Remove -rpath. (automake will add that)
+
+ * providers/imap/Makefile.am (libcamelimapincludedir): Define in
+ terms of privincludedir.
+ (INCLUDES): Remove -I$(includedir)
+ * providers/local/Makefile.am: Likewise
+ * providers/nntp/Makefile.am: Likewise
+ * providers/pop3/Makefile.am: Likewise
+ * providers/sendmail/Makefile.am: Likewise
+ * providers/smtp/Makefile.am: Likewise
+
+2003-02-04 Not Zed <NotZed@Ximian.com>
+
+ * camel-object.c (camel_object_bag_new): Init bag->owner to 0.
+
+2003-01-31 Not Zed <NotZed@Ximian.com>
+
+ * camel-object.c (camel_object_bag_*): Changed to use a posix
+ semaphore instead of a condition variable + flag to reserve the
+ object bag because e_mutex_cond is broken.
+
+2003-02-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_parse_body): Use
+ g_ascii_strdown() instead of g_strdown, since g_strdown is
+ deprecated.
+ (imap_parse_body): Same.
+
+ * providers/imap/camel-imap-folder.c (decode_internaldate): Use
+ strncasecmp() here too.
+ (parse_fetch_response): And here.
+ (camel_imap_folder_selected): Here too.
+
+ * providers/imap/camel-imap-utils.c (imap_namespace_decode): Use
+ strncasecmp() instead of g_strncasecmp() because the latter is
+ deprecated.
+
+ * providers/imap/camel-imap-store.c (imap_get_capability): Again here.
+ (hash_folder_name): Here too.
+ (compare_folder_name): And here.
+ (get_folder_online): Again.
+ (get_folder_offline): And again.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
+ Same as below again.
+
+ * providers/imap/camel-imap-command.c (camel_imap_response_free):
+ Same as below.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Use
+ strcasecmp() because g_strcasecmp() is deprecated.
+
+ * camel-url.c (camel_url_new_with_base): Use g_ascii_strdown()
+ instead of g_strdown, since g_strdown is deprecated.
+
+2003-01-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-gssapi.c (gssapi_challenge): Pass in some default
+ flags to gss_init_sec_context() (these default flags are defined
+ as a MUST in rfc1964).
+
+2003-01-22 Hans Petter Jansson <hpj@ximan.com>
+
+ * Makefile.am: $(libexec) -> $(libexecdir)
+
+2003-01-22 Ettore Perazzoli <ettore@ximian.com>
+
+ * providers/imap/Makefile.am (libcamelimapincludedir): Update to
+ the new $(BASE_VERSION)-versioned path.
+ * providers/smtp/Makefile.am (libcamelsmtpincludedir): Likewise.
+ * providers/sendmail/Makefile.am (libcamelsendmailincludedir):
+ Likewise.
+ * providers/pop3/Makefile.am (libcamelpop3includedir): Likewise.
+ * providers/nntp/Makefile.am (libcamelnntpincludedir): Likewise.
+ * providers/local/Makefile.am (libcamellocalincludedir): Likewise.
+
+ * camel-lock-client.c (camel_lock_helper_init): Use
+ CAMEL_LIBEXECDIR instead of CAMEL_SBINDIR to find
+ camel-lock-helper.
+
+ * Makefile.am: Install camel-lock-helper and camel-index-control
+ in $(libexec)/evolution/$(BASE_VERSION)/camel. Install
+ libcamel.la in $privlibdir.
+ (install-exec-hook): Update for the new location of
+ camel-lock-helper.
+ (libcamelincludedir): Version using $(BASE_VERSION).
+ (INCLUDES): Define CAMEL_LIBEXECDIR.
+
+2003-01-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-canon.c (complete): Set the backbuflen to 0 so
+ that calling us again won't re-flush the same data.
+
+2003-01-17 Larry Ewing <lewing@ximian.com>
+
+ * camel-mime-filter-enriched.c (enriched_to_html): only grow the
+ buffer when we are out of space.
+
+2003-01-14 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-parser.c (folder_scan_step): If we have no
+ content-type header, set it to text/plain explcitly, rather than
+ NULL, because some code doesn't handle NULL.
+
+2003-01-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-gssapi.[c,h]: New source files implementing the
+ GSSAPI SASL mechanism.
+
+2003-01-13 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-filter-tohtml.c: fix header include order.
+
+ * camel-object.c (camel_object_bag_reserve): Add an assert to
+ check we're not trying to reserve the bag more than once in a
+ given thread.
+ (camel_object_bag_list): If we have reserved the bag, dont try and
+ cond wait. Fixes a deadlock.
+
+ * camel-mime-filter-tohtml.c (writeln): Read the characters as
+ utf8, rather than as 8 bit bytes. Remove the PRESERVE_8BIT as it
+ has no meaning. Also change the default logic slightly so that 8
+ bit or greater characters are properly converted to entities.
+
+ * camel-utf8.c (camel_utf8_getc_limit): new function, gets a utf8
+ char, bounded by an end pointer.
+
+2003-01-07 Dan Winship <danw@ximian.com>
+
+ * camel-provider.h (CamelProvider): add a "translation_domain"
+ field. (NULL for all providers in the camel source tree itself).
+
+ * camel-session.c (register_provider): Translate provider strings
+ in the correct domain
+
+2003-01-06 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.c (store_sync): init local exception before doing
+ anything. fixes a crash.
+
+2003-01-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_send_to): Instead of
+ checking recipients != NULL, check that camel_address_length
+ (recipients) != 0 since it is illegal for recipients to be NULL
+ (camel_transport_send_to already checks this).
+
+2002-12-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c: Replace calls to
+ g_string_sprintfa() with g_string_append_printf() since the former
+ seems to have been deprecated.
+
+ * providers/imap/camel-imap-search.c: Same.
+
+ * providers/imap/camel-imap-folder.c: Here too.
+
+ * providers/local/camel-mbox-summary.c: And here.
+
+ * providers/local/camel-local-summary.c: Replace
+ g_string_sprintf() with g_string_printf().
+
+ * camel-data-cache.c (data_cache_expire): Replace
+ g_string_sprintf() with g_string_printf().
+
+ * camel-url.c: Replace calls to g_string_sprintfa() with
+ g_string_append_printf() since the former seems to have been
+ deprecated.
+
+ * camel-service.c: Same.
+
+ * camel-mime-utils.c: Here too.
+
+2002-12-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): Detect text/html
+ parts that were marked as text/plain and re-tag them as text/html
+ parts. Note: currently just checks if the first non-lwsp char is a
+ '<' - but we might need to be smarter about this? *sigh* Stupid
+ Windows mailers.
+
+ * camel-mime-filter-tohtml.c (camel_text_to_html): New convenience
+ function to replace calls to e_text_to_html() in the
+ mailer/composer etc.
+
+ * camel.h: #include some headers we had forgotten to add
+ previously, also added camel-mime-filter-enriched.h.
+
+ * camel-mime-filter-enriched.[c,h]: New stream filter to convert
+ text/enriched and text/richtext into HTML.
+
+2002-12-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-multipart-signed.c (camel_multipart_signed_verify): Don't
+ apply the CANON_STRIP filter here, since we are verifying whatever
+ raw data we received (all we want to do is convert o the canonical
+ CRLF format).
+
+2002-12-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-tohtml.c (html_convert): Use camel-url-scanner
+ instead of regex.
+
+2002-12-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-url-scanner.c (camel_url_addrspec_end): Fixed to not be
+ fooled in the case where the address is followed immediately by a
+ period.
+ (camel_url_web_end): Made more robust.
+ (camel_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>
+
+ * camel-url-scanner.c: New code to scan for patterns (used only
+ for url pattern matching atm, but we may find other uses for this
+ and thus rename it? I dunno). Uses ETrie.
+
+2002-12-07 Not Zed <NotZed@Ximian.com>
+
+ * camel-data-cache.c (data_cache_init): Use a bag instead of a
+ hashtable to track the cache streams.
+ (data_cache_finalise): Same.
+ (free_busy): No longer needed.
+ (data_cache_expire): use bag instead of hashtable.
+ (stream_finalised): No longer required.
+ (camel_data_cache_add): objectbagise
+ (camel_data_cache_get): "
+ (camel_data_cache_remove): "
+ (data_cache_path): Set the now expired date before running expiry,
+ so it plays better with multiple threads. Still a couple of
+ harmless races.
+
+2002-12-06 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-store.c (scan_dir): folders ->
+ object bag.
+ (get_folder_info_mbox): folders -> object bag.
+
+ * providers/local/camel-mh-store.c (folder_info_new): folders ->
+ object bag.
+
+ * providers/local/camel-maildir-store.c (scan_dir): folders ->
+ object bag.
+
+ * providers/local/camel-local-store.c (rename_folder): folders ->
+ object bag.
+
+ * camel-private.h (CamelStorePrivate): Remove 'cache' lock,
+ handled by the objectbag.
+
+ * providers/imap/camel-imap-store.c (copy_folder): Removed.
+ (imap_store_refresh_folders): folders -> object bag.
+ (get_folder_counts): folders -> object bag.
+
+ * camel-vee-store.c (vee_get_folder): changes for folders
+ objectbag.
+ (vee_get_folder_info): Change to use folders objectbag. Also,
+ dont refresh the base folder if we're in FAST mode.
+ (build_info): Removed, no longer needed.
+ (vee_rename_folder): Fixed for folders objectbag.
+
+ * camel-store.c (camel_store_init): init the folders objectbag.
+ (camel_store_finalize): Destroy the folders object bag.
+ (folder_matches):
+ (folder_finalize): Removed, now handled implicitly by the
+ objectbag.
+ (camel_store_get_folder): object bag changes.
+ (camel_store_delete_folder): "
+ (get_subfolders): Removed, now handled without a callback.
+ (camel_store_rename_folder): Changed to use object bag of folders.
+ (trash_add_folder): Removed.
+ (init_trash): use folders object bag.
+ (copy_folder_cache):
+ (sync_folder): Removed, no longer needed. Weird arsed code anyway.
+ (store_sync): Use folder object bag instead of hashtable.
+ (camel_store_unsubscribe_folder): "
+ (camel_store_init): remove cache_lock init, no longer used.
+ (camel_store_finalize): Same for cleanup.
+
+2002-12-05 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.h (struct _CamelStore): change folders from a
+ hashtable into a CamelObjectBag.
+
+ * camel-object.c (camel_object_ref): Use type_lock instead of
+ class lock for ref counting.
+ (camel_object_unref): Use type_lock instead of class lock for
+ unref.
+ (camel_object_unref): If the object is 'bagged', then also look
+ hooks, and remove it from any bags.
+ (camel_object_bag_new):
+ (camel_object_bag_destroy):
+ (camel_object_bag_add):
+ (camel_object_bag_get):
+ (camel_object_bag_remove_unlocked):
+ (camel_object_bag_list):
+ (camel_object_bag_abort):
+ (camel_object_bag_remove): New functions to implement a utility
+ object which can manage a 'bag' of weakly ref'd children in an
+ atomic & threadsafe way.
+
+2002-12-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store-summary.c
+ (camel_imap_store_summary_add_from_full): Properly handle the case
+ where the namespace is "". Fixes bug #34975
+
+2002-12-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * broken-date-parser.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).
+ (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-11-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (stream_read): Use the new
+ camel_operation_cancel_prfd() function to get the cancellation fd
+ so we can poll on it for cancellation stuff.
+ (stream_write): Same.
+
+2002-11-22 Not Zed <NotZed@Ximian.com>
+
+ * camel-operation.c (camel_operation_cancel_prfd): Implement, gets
+ a nspr pr filedesc to poll/wait on
+ (struct _CamelOperation): include a pr filedesc.
+
+2002-11-21 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store-summary.c
+ (camel_imap_store_summary_namespace_find_path): If we have a
+ namespace of "", then always match any path.
+ (camel_imap_store_summary_namespace_find_full): Same, for full
+ names. Should address #33309 & friends.
+
+2002-11-19 Radek Doulik <rodo@ximian.com>
+
+ * camel-mime-filter-tohtml.c (html_convert): added
+ CAMEL_MIME_FILTER_TOHTML_PRESERVE_8BIT flag
+
+2002-11-18 Rodney Dawes <dobey@ximian.com>
+
+ * tests/*/Makefile.am: Removed $(GNOME_LIBDIR) and $(GNOMEUI_LIBS)
+
+2002-11-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect_online): If the
+ namespace is at/below INBOX, check for the INBOX explicitly (since
+ it obviously won't show up in a LSUB INBOX.*). If either INBOX is
+ not returned in the response or if the folder flags contain
+ \NoSelect, subscribe to INBOX and then try LSUB again.
+
+2002-11-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-tohtml.c (html_convert): Rewritten. Much much
+ much cleaner implementation now, though uses malloc/free more
+ often than I'd like.
+
+2002-11-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (get_message_simple): Use
+ g_strerror when setting an exception string (we need it to be in
+ UTF-8).
+
+ * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Use
+ g_strerror when setting an exception string (we need it to be in
+ UTF-8).
+
+ * providers/pop3/camel-pop3-folder.c (pop3_refresh_info): Use
+ g_strerror when setting an exception string (we need it to be in
+ UTF-8).
+ (pop3_get_message): Same.
+
+ * providers/local/camel-spool-summary.c (spool_summary_sync_full):
+ Use g_strerror when setting an exception string (we need it to be
+ in UTF-8).
+ (spool_summary_check): Here too.
+
+ * providers/local/camel-spool-store.c (construct): Use g_strerror
+ when setting an exception string (we need it to be in UTF-8).
+ (get_folder): Same.
+ (scan_dir): Here too.
+
+ * providers/local/camel-spool-folder.c (spool_lock): Use
+ g_strerror when setting an exception string (we need it to be in
+ UTF-8).
+
+ * providers/local/camel-mh-summary.c (mh_summary_check): Use
+ g_strerror when setting an exception string (we need it to be in
+ UTF-8).
+
+ * providers/local/camel-mh-store.c (delete_folder): Use g_strerror
+ when setting an exception string (we need it to be in UTF-8).
+
+ * providers/local/camel-mbox-summary.c (summary_update): Use
+ g_strerror when setting an exception string (we need it to be in
+ UTF-8).
+ (mbox_summary_sync_full): Here too.
+ (mbox_summary_sync_quick): Same.
+ (mbox_summary_sync): Also here.
+ (camel_mbox_summary_sync_mbox): Again here.
+
+ * providers/local/camel-mbox-folder.c (mbox_lock): Use g_strerror
+ when setting an exception string (we need it to be in UTF-8).
+ (mbox_append_message): Same.
+ (mbox_get_message): Here too.
+
+ * providers/local/camel-maildir-summary.c (maildir_summary_load):
+ Use g_strerror when setting an exception string (we need it to be
+ in UTF-8).
+ (maildir_summary_check): Same.
+
+ * providers/local/camel-maildir-store.c (get_folder): Use
+ g_strerror when setting an exception string (we need it to be in
+ UTF-8).
+ (delete_folder): Same.
+ (delete_folder): Here too.
+
+ * providers/local/camel-local-summary.c (local_summary_sync): Use
+ g_strerror when setting an exception string (we need it to be in
+ UTF-8).
+
+ * providers/local/camel-local-store.c (get_folder): Use g_strerror
+ when setting an exception string (we need it to be in UTF-8).
+ (create_folder): Same.
+ (xrename): Here too.
+ (rename_folder): And here.
+ (delete_folder): Also here.
+
+ * camel-provider.c (camel_provider_init): For debugging printfs,
+ we want to use normal strerror (we want locale charset, not
+ UTF-8).
+
+ * camel-movemail.c (camel_movemail): Use g_strerror when setting
+ an exception string (we need it to be in UTF-8).
+ (movemail_external): Same.
+ (camel_movemail_copy_file): Here too.
+ (camel_movemail_solaris): Also here.
+
+ * camel-mime-utils.c (rfc2047_decode_word): For debugging printfs,
+ we want to use normal strerror (we want locale charset, not
+ UTF-8).
+ (header_encode_param): Same.
+
+ * camel-mime-part-utils.c (convert_buffer): For debugging printfs,
+ we want to use normal strerror (we want locale charset, not
+ UTF-8).
+
+ * camel-lock-client.c (camel_lock_helper_init): Use g_strerror
+ when setting an exception string (we need it to be in UTF-8).
+
+ * camel-data-cache.c (camel_data_cache_remove): Use g_strerror
+ when setting an exception string (we need it to be in UTF-8).
+
+ * camel-tcp-stream-raw.c (flaky_tcp_write): For debugging printfs,
+ we want to use normal strerror (we want locale charset, not
+ UTF-8).
+ (flaky_tcp_read): Same.
+
+ * camel-gpg-context.c (gpg_ctx_op_step): For debugging printfs, we
+ want to use normal strerror (we want locale charset, not UTF-8).
+
+ * camel-service.c (camel_gethostbyname): Use g_strerror when
+ setting an exception string (we need it to be in UTF-8).
+
+ * camel-lock.c (camel_lock_dot): Use g_strerror when setting an
+ exception string (we need it to be in UTF-8).
+ (camel_lock_fcntl): Same.
+
+2002-11-07 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-part.c (camel_mime_part_set_content_type): constify
+ the content_type.
+
+2002-11-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-i18n.h: Added.
+
+ * camel-object.h: #include camel-i18n.h instead of gnome-i18n.h
+
+ * camel-lock.c: Same.
+
+2002-11-07 Rodrigo Moya <rodrigo@ximian.com>
+
+ * camel-object.h: removed gnome-defs.h, it does not exist.
+
+2002-11-05 Not Zed <NotZed@Ximian.com>
+
+ * Makefile.am (camel_lock_helper_LDADD): Created temporary link
+ list, we need to link with something for gettext.
+
+ * camel.h: Remove gstring-util.h and hash-table-utils.h.
+
+ * camel-text-index.c:
+ (text_index_normalise): Changed for g_utf8_strdown api change.
+
+ * camel-search-private.c:
+ * camel-mime-utils.c:
+ * camel-mime-part-utils.c:
+ * camel-html-parser.c:
+ * camel-charset-map.c: Include glib/gunicode.h from glib instead
+ of gal.
+
+ * camel-filter-driver.c: Remove include of gtk/gtk.h, should never
+ have been there.
+
+2002-11-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (g_string_append_len): Removed. Glib2 has
+ this function.
+
+ * providers/local/camel-local-store.c (delete_folder): Use
+ g_path_get_basename instead of g_strdup (g_basename (filename)).
+
+ * camel-uid-cache.c (camel_uid_cache_new): Use g_path_get_dirname
+ since g_dirname has been deprecated.
+
+2002-10-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (camel_gpg_context_class_init): Set the
+ virtual method pointers to the import/export methods.
+ (camel_gpg_context_init): Set the key_protocol string.
+ (gpg_hash_to_id): Handle 2 more hash types.
+ (gpg_id_to_hash): Same.
+ (gpg_ctx_op_step): Slight fixes to support import/export.
+ (gpg_ctx_parse_status): Fix to hack around the fact that importing
+ keys doesn't write to stdout.
+ (gpg_import_keys): Implemented.
+ (gpg_export_keys): Implemented.
+
+ * camel-cipher-context.c (camel_cipher_context_class_init): Hook
+ up default virtual methods for import/export.
+ (camel_cipher_import_keys): Implemented.
+ (camel_cipher_export_keys): Implemented.
+
+2002-10-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Removed hash-table-utils.[c,h] from the build.
+
+ * hash-table-utils.[c,h]: Removed.
+
+ * string-util.c: Imported g_strcase[hash,equal] into here so we
+ can remove hash-table-utils.[c,h].
+
+ * camel-medium.c: Removed #include "hash-table-utils.h"
+
+ * camel-mime-message.c: Same here.
+
+ * camel-mime-part.c: And here.
+
+ * camel-session.c: Here too.
+
+ * providers/imap/camel-imap-store-summary.c: #include
+ string-utils.h instead of hash-table-utils.h
+
+ * camel-charset-map.c: Same.
+
+ * camel-folder-summary.c: Here too.
+
+ * camel-provider.c: Again here.
+
+ * camel-store-summary.c: And again...
+
+2002-10-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ Remove a ton of useless snot.
+
+ * Makefile.am: Remove gstring-util.[c,h] from the build.
+
+ * gstring-util.[c,h]: Removed.
+
+ * string-utils.c (string_equal_for_glist): Removed.
+ (string_split): Removed.
+ (string_trim): Removed.
+ (string_prefix): Removed.
+ (string_unquote): Removed.
+ (strip): Removed.
+
+ * hash-table-utils.c (g_hash_table_generic_free): Removed.
+
+ g_str[n]casecmp functions are deprecated in glib2.
+
+ * string-utils.c (strstrcase): Use strncasecmp instead of
+ g_strncasecmp.
+
+ * hash-table-utils.c (g_strcase_equal): Use strcasecmp
+ instead of g_strcasecmp.
+
+ * camel-smime-utils.c (camel_smime_is_smime_v3_signed): Same.
+ (camel_smime_is_smime_v3_encrypted): Here too.
+
+ * camel-sasl-digest-md5.c (decode_data_type): And here.
+ (parse_server_challenge): Again here.
+
+ * camel-pgp-mime.c (camel_pgp_mime_is_rfc2015_signed): Same.
+ (camel_pgp_mime_is_rfc2015_encrypted): Same
+
+ * camel-mime-part-utils.c (check_html_charset): Here too.
+
+ * camel-folder-summary.c (camel_system_flag): Same.
+
+2002-10-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_ctx_parse_status): Don't prematurely
+ set gpg->complete to TRUE. Let gpg_ctx_op_step () set it to TRUE
+ when gpg closes the status-fd instead.
+
+2002-10-24 Not Zed <NotZed@Ximian.com>
+
+ ** For bug #31647 and bug #31456.
+
+ * camel-store-summary.c (store_info_string): for STORE_INFO_NAME,
+ skip the leading /.
+
+ * providers/imap/camel-imap-store.c
+ (parse_list_response_as_folder_info): Remove jeff's last patch,
+ and use the store summary to create the name and path of the
+ folderinfo so it manages namespace issues.
+ (get_folder_info_online): Just pass @top directly to
+ build_folder_info always, since namespace is mapped to 1 tree
+ level.
+ (imap_build_folder_info): Remove jeff's last patch, dont strip
+ leading /'s, they shouldn't exist.
+ (imap_connect_online): Remove adding the INBOX here, we add it
+ later.
+ (get_subscribed_folders): Make sure INBOX is always in the list.
+ some imap servers dont seem to let you subscribe to it(?), so
+ always have it act as subscribed.
+
+ * camel-store.c (camel_folder_info_build): back out the last 2
+ patches from Jeff (for #31456) to get the original behaviour.
+ (camel_folder_info_build): When creating a fake
+ parent, dont strip the namespace from the full_name. malloc keys
+ in hash since we dont have them anymore.
+ (free_name): Helper to free names.
+
+ * providers/imap/camel-imap-store-summary.c
+ (camel_imap_store_summary_namespace_new): Canonicalise the
+ namespace (strip trailing dir_sep), and change the path to remove
+ any /'s.
+ (camel_imap_store_summary_namespace_find_path):
+ (camel_imap_store_summary_namespace_find_full): new, find
+ namespace by path/full name.
+ (camel_imap_store_summary_full_from_path): Changed to a simple
+ wrapper around path_to_full, after checking namespace.
+ (camel_imap_store_summary_add_from_full): map the namespace if
+ present.
+ (camel_imap_store_summary_path_to_full): If namespace exists,
+ unmap it.
+
+2002-10-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder):
+ Canonicalise the source_uri to not have a path. Fixes bug #32268.
+
+2002-10-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ Possible fix for bug #32270
+
+ * providers/pop3/camel-pop3-store.c (try_sasl): If we get an I/O
+ error, we should not be setting the CANT_AUTH exception but should
+ instead be setting the SYSTEM exception. Also check for EINTR
+ which signifies a USER_CANCEL exception.
+ (pop3_try_authenticate): If the auth mechanism isn't supported,
+ don't set the CANT_AUTH exception since then we will loop and try
+ again with the same data which will just cause an infinite loop.
+ (pop3_connect): Simplified a bit.
+
+2002-10-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (camel_certdb_nss_cert_set): If
+ ~/.camel_certs doesn't exist, create it.
+
+2002-10-15 Not Zed <NotZed@Ximian.com>
+
+ * camel-tcp-stream-ssl.c (cert_fingerprint): helper, build
+ fingerprint.
+ (camel_certdb_nss_cert_get): Helper for nss certs. Lookup cert.
+ As well as fingerprint, the whole raw cert is checked for
+ validity.
+ (camel_certdb_nss_cert_add): Add an nss cert to a certdb, also
+ saves the cert by fingerprint in ~/.camel_certs/.
+ (ssl_bad_cert): Changed to use above functions to simplify logic.
+ (ssl_bad_cert): Also added non-compiled code which mimics what
+ mozilla does, but it doesn't work right :-/
+ (camel_certdb_nss_cert_set): Save the raw cert associated with a
+ cert.
+
+ * camel-certdb.c (certdb_cert_free): Free the raw cert data if
+ set.
+
+2002-10-14 Not Zed <NotZed@Ximian.com>
+
+ * camel-file-utils.c (camel_file_util_encode_string): Encode a
+ length of 0 as 1, not 0, to match the decode code.
+
+2002-10-03 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (filter_filter): Do the filtering ourselves.
+ This is so a problem like a missing uid (which can happen
+ legitemitely) doesn't prematurely abort filtering. Stop on all
+ other errors. See #31667.
+
+2002-10-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (camel_gpg_context_new): No longer takes a
+ path argument.
+ (camel_gpg_context_fianlise): No need to free ctx->path.
+ (gpg_ctx_new): No longer takes a path argument either.
+ (gpg_ctx_free): No need to free ctx->path, it's no longer used.
+ (gpg_ctx_op_start): Don't stat the path anymore and change the
+ first arg to execvp to "gpg" so that we use the shell's
+ environment to find gpg.
+ (gpg_sign): Updated.
+ (gpg_verify): Updated.
+ (gpg_encrypt): Updated.
+ (gpg_decrypt): Updated.
+ (gpg_ctx_get_argv): Removed some debug printfs.
+
+2002-10-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_id_to_hash): If the hash id is NULL,
+ return CAMEL_CIPHER_HASH_DEFAULT. Fixes bug #32229.
+
+2002-10-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-command.c (imap_read_response): If the
+ response from the IMAP server is "No", don't set the
+ SERVICE_UNAVAILABLE exception, this makes error reporting in the
+ UI for deleting IMAP folders that cannot be deleted inaccurate
+ (ie, it reports "Cannot delete in offline mode" which is not the
+ problem).
+
+2002-10-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes bug #31752
+
+ * providers/smtp/camel-smtp-transport.c (connect_to_server): Don't
+ forget to send another EHLO command to the server once we toggle
+ into STARTTLS mode.
+ (smtp_helo): Reset any flags set using the EHLO response and also
+ any authtypes.
+
+2002-10-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes bug #31681
+
+ * camel-mime-utils.c: Fix all mailing list regex patterns to allow
+ any number of spaces *or* tabs as pre-padding for the header
+ values.
+
+2002-10-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part.c (write_to_stream): Use the content-object's
+ rawtext flag to decide if it needs to be filtered through the
+ charset filter instead of using the mime part's rawtext flag since
+ this will never be set. Partial fix for bug #31655.
+
+2002-10-03 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (folder_changed): Dont get the filter driver
+ inside the change_lock. Its not necessary, and can cause deadlock
+ with the way the mailer gets the filter driver via g_mainloop.
+ Should fix #31572.
+
+2002-10-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-charset-map.c (camel_charset_iso_to_windows): Map us-ascii
+ to windows-1252 also.
+
+2002-10-02 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-folder.c (get_matching): Set *set to
+ NULL if we dont get any matches.
+ (imap_sync_online): If we get no matches, skip any work, also
+ reorder some code to make it easier to skip. See #31031.
+
+ * providers/imap/camel-imap-store.c
+ (imap_check_folder_still_extant): Default to "TRUE", if the list
+ command failed, it probably means a server problem, assume the
+ worst. This makes imap_refresh_info not clear the exception and
+ crash. Fixes crash of #31000.
+
+2002-10-01 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_refresh_info): Make
+ sure we pass the exception to imap_folder_selected(), otherwise
+ failures can be lost. See bug #31000.
+
+2002-10-01 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (thaw): Add an assertion that the frozen count>0.
+ (freeze): Same for >= 0.
+
+ * camel-vee-folder.c (camel_vee_folder_remove_folder): Use the
+ unmatched freeze_count when thawing folders removed from
+ unmatched, rather than the folder's freeze_count. Might be
+ related to #27391.
+
+2002-10-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (decode_internaldate): Use
+ strtol when decoding the timezone (since it can be negative) and
+ don't forget to increment inptr to the start of the time (ie,
+ don't leave inptr pointing to the year when decoding the
+ hour:min:sec).
+
+2002-09-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes bug #31456.
+
+ * providers/imap/camel-imap-store.c (imap_connect_online): Don't
+ LSUB "" "*", instead get both an LSUB containing the subfolders of
+ the namespace and an LSUB of INBOX (assuming namespace was
+ non-empty). This fix really has nothing to do with bug #31456 but
+ is what should have been done in the first place.
+ (parse_list_response_as_folder_info): Simplify a tad and strip
+ extra leading /'s from fi->path.
+ (imap_build_folder_info): Strip extra leading /'s from fi->path.
+
+ * camel-store.c (camel_folder_info_build): Don't strip the
+ namespace from the fi->full_name when hashing or creating fake
+ parent folder-infos. Fixes a bug I found while trying to reproduce
+ bug #31456.
+ (camel_folder_info_build_path): Strip off extra leading dir_sep
+ chars from the path.
+
+2002-09-30 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): Remove
+ debug content_info_dump, could cause a crash, and not really
+ needed anymore.
+
+ * camel-folder-summary.c (camel_content_info_dump): Check ci->type
+ != NULL before dereferencing it. Should fix crash #31331.
+
+2002-09-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (decode_internaldate): New
+ function to decode the INTERNALDATE response from an IMAP server
+ so we don't have to use my broken-date-parser routines.
+
+2002-09-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (connect_to_server):
+ NULL-check the streams before unreffing them in the case of a
+ failure during ssl negotiations.
+
+ * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_enable_ssl): Check
+ SSL_ResetHandshake() for errors. Also force a handshake after
+ we've reset the handshake state on the socket.
+
+2002-09-27 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Use
+ the summary's last uid as the one to fetch from, ignoring the
+ cache. Use strtoul instead of atoi as well.
+
+ * providers/imap/camel-imap-store.c (get_folder_counts): If we
+ have the folder open, and the unread count has changed, refresh
+ it. Should fix #30399 enough. Also in non-check-all mode, if we
+ have the folder open, use it anyway.
+
+2002-09-26 Not Zed <NotZed@Ximian.com>
+
+ * tests/folder/test2.c (main): Treat spool as a local folder, so
+ the ref checks work right.
+
+ * providers/local/camel-spool-store.c (get_folder): Implement
+ FOLDER_CREATE flag.
+ (scan_dir): Dont free name on exception, its alloca'd.
+ (scan_dir): If we start scanning from a file, just add that
+ directly.
+ (scan_dir): Allow empty files to also show up in folder list, as
+ well as files starting with "From ".
+ (get_folder): Use creat() instead of open() to create file.
+
+ * providers/local/camel-spool-folder.c (camel_spool_folder_new):
+ Check folder != NULL before writing to it.
+
+ * providers/local/camel-local-store.c (create_folder): Handle a
+ parent of NULL for creating top-level dirs. Part of #31186.
+
+ * providers/imap/camel-imap-store.c
+ (parse_list_response_as_folder_info): Store the folder flags in
+ the store summary.
+ (get_one_folder_offline): Set the noselect url parameter if this
+ is a noselect folder, from the stored summary flags. #30877.
+
+2002-09-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-charset.c (complete): Handle EILSEQ by eating
+ bytes in the input buffer until conversion is successful. The old
+ behaviour aborted when it got EILSEQ and just dumped the raw data.
+ (filter): Same. Fixes bug #30873.
+
+2002-09-24 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-utils.c (mail_list_magic[]): Changed the Mailing-List
+ rule to get the complete domain (* in wrong spot). #31087.
+
+ * camel-text-index.c (text_index_compress_nosync): If we have no
+ data written to a key, dont add it, or its partition header.
+
+2002-09-23 Not Zed <NotZed@Ximian.com>
+
+ * camel-block-file.c (sync_nolock): Mark root block dirty if we're
+ going to sync it.
+ (camel_key_file_finalise): de-count the active list if we close
+ it.
+
+ * camel-text-index.c (text_index_delete): Implement.
+ (text_index_compress_nosync): Use index_delete when we're finished
+ with the old one, so it is properly deactivated.
+
+ * camel-index.c (camel_index_delete): Remove api call. Mark index
+ deleted in new state variable.
+ (camel_index_*): Wrap all calls in check for deleted state.
+
+2002-09-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder.c (transfer_message_to): If the original message is
+ deleted, reset the deleted flag when we're done. Fixes bug #30876.
+
+ * providers/imap/camel-imap-folder.c (add_message_from_data):
+ Decode the INTERNALDATE if we've got one.
+ (imap_update_summary): Instead of requesting a list of specific
+ headers, request HEADER.FIELDS.NOT (RECEIVED) to reduce bandwidth
+ usage even more.
+ (parse_fetch_response): Change slightly to allow HEADER.FIELDS or
+ HEADER.FIELDS.NOT so that we can make changes in
+ imap_update_summary and not need to keep changing this function to
+ match. Also parse an INTERNALDATE response.
+
+2002-09-22 Dan Winship <danw@ximian.com>
+
+ * camel-mime-parser.c (folder_scan_drop_step): fix non-ANSI switch
+ statement.
+
+ * camel-service.c (service_getv): Likewise.
+
+ * providers/imap/camel-imap-store.c (imap_getv): Likewise.
+
+ * providers/pop3/camel-pop3-folder.c (cmd_builduid): Likewise.
+
+2002-09-20 Not Zed <NotZed@Ximian.com>
+
+ * tests/misc/split.c: New regression test for word
+ splitting/search input parsing code.
+
+ * tests/folder/test9.c (main): Fix for filter_driver api change.
+
+ * camel-search-private.c (camel_search_words_split): Handle "'s
+ and \'s to escape characters. For fat, lazy, slobs who dont like
+ anything changing.
+
+2002-09-19 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-search.c (camel_filter_search_match): Take new
+ session arg. Update callers.
+ (symbols[]): changed get-source to header-source
+ (header_source): Changed from get_source. Now a boolean, returns
+ true if source matches one of the arguments. Uses the provider
+ url comparison directly for accurate checking. Makes 'filter on
+ source' work.
+
+ * camel-filter-driver.c (camel_filter_driver_new): Take new arg,
+ session.
+ (camel_filter_driver_finalise): Free session.
+
+2002-09-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (parse_fetch_response): Don't
+ increment the response pointer when deciding what type of header
+ response we got, this screws up the string that we strdup into the
+ part_spec string later. Also, instead of using the entire blob of
+ HEADER.FIELDS that we get in the response, shorten it to just
+ HEADER.FIELDS to use as the part_spec key.
+
+2002-09-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (CAMEL_MESSAGE_INFO_HEADERS):
+ Include MIME-VERSION and CONTENT-TYPE.
+
+2002-09-18 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-command.c
+ (camel_imap_command_response): If we get an ALERT, pass it to the
+ user. An rfc2060 MUST, and bug #22496.
+
+2002-09-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (parse_fetch_response):
+ Handle when the response is from a HEADER.FIELDS (if so, we don't
+ want to cache the result).
+ (imap_update_summary): Request specific headers when building the
+ CamelMessageInfo's rather than fetching the full headers.
+
+2002-09-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part.c (process_header): If header_msgid_decode fails
+ for the content-id field, just grab whatever is between the <>'s
+ (yes, this means that the content-id is invalid - but what can ya
+ do?). Addresses bug #21027.
+
+2002-09-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (header_encode_string): Revert a patch that I
+ had not meant to commit that was aimed at fixing bug #29234.
+
+2002-09-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store-summary.c (camel_store_summary_load): Same as
+ below. Also save errno before closing the file so our caller can
+ figure out why we failed.
+ (camel_store_summary_save): Same here, but also flush the output
+ stream to disk.
+
+ * camel-folder-summary.c (camel_folder_summary_load): s/fclose(in)
+ == -1/fclose(in) != 0/ since fclose doesn't necessarily return -1
+ on fail, all we really know is that it returns 0 on success and
+ non-zero on fail.
+
+ * camel-certdb.c (camel_certdb_save): fsync() the stream after we
+ fflush it.
+
+ * camel-folder-summary.c (perform_content_info_save): Do proper
+ error checking and return -1 on fail.
+ (camel_folder_summary_save): Check the return of
+ perform_content_info_save and a few other output calls within the
+ message_info_save loop. If any of them fail, save errno, close the
+ file, and return -1. If we finish the loop without fail, fflush
+ the stream and then fsync (fflush only flushes user-space buffers,
+ you still need to fsync afterward to flush the data to disk). If
+ either fail, treat it as an exception by saving errno, closing the
+ stream, and returning -1. I suspect that this also fixes bug
+ #30150 because the old code would fclose if fflush or fclose
+ failed in the check after the loop (man fclose(3) states that any
+ further calls using the stream (even another call to fclose) will
+ have undefined behaviour no matter what the first fclose call
+ returned).
+
+ * providers/local/camel-local-summary.c
+ (camel_local_summary_init): Don't malloc a private struct of 0
+ size.
+
+ * providers/imap/camel-imap-folder.c
+ (camel_imap_folder_fetch_data): Clear the exception even if we
+ failed to get the message (part) from the imap-message-cache if we
+ are online and able to try fetching it from the IMAP server.
+
+2002-09-10 Not Zed <NotZed@Ximian.com>
+
+ * camel-data-cache.c (data_cache_expire): Remove the hash table
+ entry using the right path. Related to #29731.
+ (camel_data_cache_remove): "
+
+2002-09-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes bug #4224
+
+ * providers/imap/camel-imap-folder.c
+ (camel_imap_folder_fetch_data): Pass ex into
+ camel_imap_message_cache_get().
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_get): Now takes an exception and sets it
+ on fail.
+ (camel_imap_message_cache_copy): Updated to properly handle
+ cache_get error conditions.
+
+2002-09-04 Dan Winship <danw@ximian.com>
+
+ * camel-mime-utils.c (header_decode_date): Use e_mktime_utc.
+
+ * camel-mime-message.c (camel_mime_message_set_date): Use
+ e_localtime_with_offset.
+
+ * broken-date-parser.c (decode_broken_date): Use e_mktime_utc.
+
+2002-09-04 Not Zed <NotZed@Ximian.com>
+
+ * tests/folder/test4.c (main): clear nonfatal stuff.
+
+ * tests/folder/test6.c (main): check inbox and 'another folder'
+ because some servers do different things w/ inbox.
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_get): Dont try to open the directory
+ instead of an empty "" uid.
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): we dont
+ want to g_return_if_fail, we need to set an exception and always
+ handle the case.
+ (get_message_simple): Set an exception if we get a construct
+ failure.
+ (imap_refresh_info): if we're refreshing inbox, force a reselect.
+ this is required for at least cyrus. CHECK doesnt work either :(
+
+ * tests/lib/folders.c (test_folder_basic): for non-local stores,
+ the folder will have an extra ref for selection, take this into
+ account when checking ref leaks.
+ (test_folder_message_ops): Dont try to delete folder with messages
+ in it, it works generally with imap. also, change params so we
+ can test different mailbox types.
+ (test_folder_message_ops): disconnect remote services before
+ finishing off. doesn't need to stricly but makes ref count
+ checking more accurate.
+ (test_folder_message_ops): removed explicit remote sync, imap does
+ it itself now ...
+
+ * providers/imap/camel-imap-store.c:
+ (camel_imap_store_finalize): call service_disconnect, so it isn't
+ called later in the finalise chain, to properly cleanup on exit.
+
+ * camel-mime-parser.c (folder_scan_content): If we fake the from
+ eof file boundary, also make sure we say we matched nothing. Also
+ make the end case a little more robust to make sure we expired all
+ hope of finding a sub-boundary.
+
+ * providers/imap/camel-imap-store.c,
+ providers/imap/camel-imap-folder.c: Lots of changes, too numerous
+ to list. Changed to use camel-imap-store-summary to cache list
+ requests. Changed to use a canonicalised url path with / instead
+ of per-store directory separator. Indirects folder name so
+ invalid folder names can still be accessed. Summary now stored in
+ a new expandable format in .ev-store-summary.
+
+2002-08-29 Not Zed <NotZed@Ximian.com>
+
+ * tests/folder/test3.c: Change the case sensitive search of
+ subject to expect case insensitive results, as the behaviour has
+ changed.
+ (main): Made the search content before sync nonfatal. its
+ something that needs to be fixed but not practical concern in
+ evolution.
+
+ * camel-block-file.c (block_file_validate_root): Only spit out the
+ invalid root warnings if the file isn't empty.
+
+ * camel-text-index.c (text_index_compress_nosync): Swap the path
+ as well when we compress.
+
+ * camel-mime-parser.c (folder_scan_content): Treat the end of file
+ as a boundary if we're scanning From lines, and drop the last \n.
+ (folder_scan_init_with_fd): Dont pre-read from the fd, and init eof.
+ (folder_scan_init_with_stream): Similar.
+ (folder_read): Handle eof, and set eof on 0 read.
+ (folder_seek): Dont pre-read after a seek, and reset eof flag.
+ (camel_mime_parser_init_with_fd): Fix doco, no pre-read occurs
+ anymore.
+ (camel_mime_parser_init_with_stream): Same.
+
+ * providers/local/camel-mbox-summary.c
+ (camel_mbox_summary_sync_mbox): Add a \n to end of content of each
+ message, not at start.
+
+ * providers/local/camel-mbox-folder.c (mbox_append_message):
+ Instead of appending "\nFrom " to a mailbox, start with "From ",
+ and append a \n after the message always. For better mutt/elm
+ compatability. Also, unlock after we've stat'd.
+ (mbox_append_message): Set the message's from_pos exactly as the
+ mbox size.
+
+2002-08-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-openssl.c (stream_setsockopt): Fixed `set' to
+ hold the correct value when setting the flags.
+
+ * camel-tcp-stream-raw.c (stream_setsockopt): Fixed `set' to hold
+ the correct value when setting the flags.
+
+ * camel-mime-filter-tohtml.c (is_protocol): Match file: urls too.
+
+2002-08-28 Not Zed <NotZed@Ximian.com>
+
+ * tests/folder/test8.c (test_add_message): Change message number
+ to use hex, so its properly unique.
+ (worker): Same here.
+
+ * tests/misc/utf7.c: some utf7/utf8 tests.
+
+ * providers/imap/camel-imap-utils.c (imap_mailbox_encode): Changed
+ to use camel_utf8_utf7 code.
+ (imap_mailbox_decode): As above, using camel_utf8_utf7. 'UTF-7'
+ isn't a widely support iconv() codeset, and besides the new code
+ is simpler.
+
+ * camel-utf8.[ch]: robust utilities for working with utf8 and utf7.
+
+2002-08-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-thread.c (camel_folder_thread_messages_new): Now
+ takes a third argument to specify whether or not to group messages
+ by subject when threading. It seems some people don't want this
+ feature (see bug #22791 for details).
+ (thread_summary): If thread_by_subject is enabled, group
+ un-threaded messages by subject otherwise don't bother.
+
+2002-08-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-command.c
+ (camel_imap_response_free_without_processing): If the response is
+ NULL, just return. (now works the same way as imap_response_free
+ which allowed a NULL response argument). Fixes bug #25491.
+
+2002-08-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c:
+
+ * providers/imap/camel-imap-folder.c:
+
+ * providers/imap/camel-imap-command.c: Lock the
+ CamelService->priv->connect_lock instead of using our own
+ command_lock. This fixes bug #28177.
+
+2002-08-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): If we fail to
+ send the EHLO/HELO command successfully, set transport->connected
+ to FALSE when we close the tcp connection. Also updated to work on
+ an IPv6 network.
+ (smtp_connect): transport->authtypes can be NULL, so NULL-protect
+ the call to g_hash_table_size() - this should fix a warning that
+ was reported on the evolution@ximian.com mailing list.
+ (smtp_set_exception): If the status message is multi-line, add a
+ \n between lines.
+ (connect_to_server): If we are going to ignore the EHLO/HELO error
+ as if it were non-fatal, then we should clear the exception.
+
+2002-08-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_noop): If current_folder
+ is not NULL and the summary for that folder is dirty, sync the
+ flags rather than sending a NOOP.
+
+ * providers/imap/camel-imap-utils.c (imap_parse_list_response):
+ Workaround for Courier imap's brokeness when LSUBing the INBOX
+ folder when it isn't subscribed to. Fixes bug #28929.
+
+2002-08-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (connect_to_server): If
+ imap_get_capability() fails, after unlocking the command_lock,
+ disconnect the service.
+
+2002-08-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-session.c (get_service): Don't register the noop timeout
+ here anymore, we're gonna handle all this in the mailer now.
+ (camel_session_register_timeout): Removed.
+ (camel_session_remove_timeout): Removed.
+
+2002-08-28 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (construct): Load store
+ summary if it exists.
+ (can_work_offline): Just see if we have any folders to say whether
+ we can work offline or not. Should probably always just return
+ true.
+
+2002-08-27 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store-summary.[ch]: New files to
+ handle offline definition of folders, etc.
+
+ * camel-url.h: Define CamelURL to be struct _CamelURL rather than
+ anonymous struct.
+
+ * camel-store-summary.[ch]: a few api tweaks. Also, the summary
+ header is versioned separately at each level, so that version
+ upgrades can be handled separately. Renamed FolderInfo ->
+ StoreInfo to avoid namespace with current FolderInfo code. This
+ should be reversed when the FolderInfo code is rationalised to
+ this new base.
+
+2002-08-23 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): domt
+ encode folder name.
+
+ * providers/imap/camel-imap-folder.c (do_copy): dont encode folder
+ name.
+ (do_append): dont encode folder name.
+
+ * providers/imap/camel-imap-store.c (get_folder_status): don
+ encode folder name in imap request.
+ (get_folder_online): here too for creating folder.
+ (rename_folder): Assume the incoming 'new name' is a utf8 path,
+ whereas the 'old name' is as from get folder info (raw).
+ (create_folder): Dont encode parent_name, assume its the raw
+ thing.
+
+2002-08-22 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_online): Select
+ based on unconverted name.
+ (imap_build_folder_info): New function to create a folderinfo
+ properly based on raw name.
+ (subscribe_folder): Use above helper.
+ (imap_folder_effectively_unsubscribed): Same here.
+ (imap_forget_folder): Same here.
+ (get_one_folder_offline): "
+
+2002-08-21 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c
+ (parse_list_response_as_folder_info): Setup path properly, as
+ decoded path with / separator. Setup full_name as non-decoded raw
+ name. Keep url as decoded path but with server separator
+ ... (ick).
+ (create_folder): Dont call build_path anymore, get_folders() does
+ it for us.
+ (subscribe_folder): Build the path ourself.
+ (imap_folder_effectively_unsubscribed): Same here.
+ (get_subscribed_folders): list using %S not %F, we're using the
+ raw server provided name directly.
+ (subscribe_folder): As above, for SUBSCRIBE.
+ (unsubscribe_folder): Same here.
+ (delete_folder): Same.
+ (rename_folder_info): Same here for source name.
+ (rename_folder): And here?
+ (get_folders_online): Amd here.
+
+ * providers/imap/camel-imap-utils.c:
+ (imap_parse_list_response): Dont decode the mailbox.
+
+ * camel-utf8.[ch]: some new utf8 & utf7 utilities.
+
+ * providers/imap/camel-imap-utils.c (imap_mailbox_encode):
+ (imap_mailbox_decode): use camel_utf7/8* functions instead.
+ : Add config.h and alloca.h headers.
+
+2002-08-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_noop): Override the
+ default noop implementation.
+
+ * camel-store.c (camel_store_noop): New virtual method to ping a
+ store.
+
+ * camel-session.c (get_service): Register a timeout that calls
+ camel_store_noop() every 10 minutes.
+
+2002-08-19 Peter Williams <peterw@ximian.com>
+
+ Plug some large leaks in the indexing code.
+
+ * camel-mime-filter-index.c (camel_mime_filter_index_set_index): Unref
+ the old index if necessary.
+
+ * camel-text-index.c (camel_text_index_get_type): Give it the correct
+ parent type so that finalize handlers chain.
+ (camel_text_index_name_get_type): Here too.
+ (camel_text_index_cursor_get_type): Here too.
+ (camel_text_index_key_cursor_get_type): Here too.
+
+2002-08-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folders): Don't let the
+ minimum recursive depth be negative.
+ (get_folders): Pass flags & CAMEL_FOLDER_INFO_SUBSCRIBED as the
+ `lsub' argument to get_folders_online() otherwise we'll end up
+ doing a LIST when we really wanted to do an LSUB.
+
+ * camel-session.c: Set CAMEL_URL_NEED_PATH for the vFolder
+ provider.
+
+2002-08-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c: Changed the STOREINFO_VERSION
+ - should fix bug #28571, but if it doesn't - oh well, I don't
+ care. I'm considering it fixed no matter what.
+
+ * camel-gpg-context.c (gpg_sign): If the diagnostics are empty,
+ just explain that gpg failed to execute.
+ (gpg_encrypt): Same.
+ (gpg_decrypt): And here too.
+
+ * tests/lib/camel-test.c (camel_test_init): Updated to pass the
+ needed arguments to camel_init() and to init gthreads before camel
+ (since camel expectes it to be initialised already).
+
+ * tests/lib/session.c: #include <config.h> needed for
+ ENABLE_THREADS so that sizeof (CamelSessionClass) gives the
+ correct size.
+
+ * tests/*: Updated to work with camel API changes.
+
+2002-08-16 Dan Winship <danw@ximian.com>
+
+ * camel-session.c (get_service): If the passed-in URL contains a
+ path, but the service doesn't allow paths, then the path part must
+ be a folder name, and we should ignore it here. #29010
+
+2002-08-16 Chris Toshok <toshok@ximian.com>
+
+ * camel-arg.h: remove the outer parens from the expansion of
+ camel_argv_{start,end} since at least on freebsd va_end is
+ #defined to be nothing, so (va_end(..)) causes a syntax error.
+
+2002-08-16 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folders): Fix the logic
+ check for working out if we add inbox or not, we do it if we
+ listed the namespace.
+
+2002-08-15 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.h (CamelFolderInfo): added a flags field, defined
+ some flags, currently only used by imap. This and below is first
+ step to getting incremental folder tree loading.
+
+ * providers/imap/camel-imap-store.c (get_subscribed_folders): If
+ the subscribed list is empty, always add inbox.
+ (imap_connect_offline): If the 'storeinfo' namespace isn't the
+ same as our own (if its set), then ignore it, assume we changed
+ settings. Otherwise you can't change the namespace ...
+ (get_folders): allow the env variable CAMEL_IMAP_MAX_DEPTH to
+ override the default maximum recursion depth if 10 levels.
+ (camel_imap_store_readline): Dont depend the log debug on d(x)
+ being defined.
+ (get_folder_info_online): changed to use new functions/names.
+
+2002-08-14 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_subscribed_folders):
+ Removed the by_hand sillyness. Return an array instead.
+ (get_folders): New method to get folders recursively without
+ having to use '*'. Uses '%', and stops if it gets too deep
+ (current max of 10).
+ (get_folder_counts): New method to fill out unread counts on
+ folderinfo tree.
+ (get_subscribed_folders): Fix some failure logic.
+
+ * providers/imap/camel-imap-utils.[ch]: Changed IMAP_LIST_FLAGS to
+ use the new CamelFolderInfoFlags directly.
+
+2002-08-09 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (get_temp_uid): New function,
+ generate a UID that has better chances of being unique.
+ (imap_append_offline): Use it here.
+ (imap_transfer_offline): And here.
+
+2002-08-09 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-store.c
+ (get_folder_info_online): Tweak how we build the tree based on whether
+ a full tree or a subtree is being requested. Fixes subscribe dialog
+ on UW servers.
+ (get_one_folder_offline): Don't add folders that we're not subscribed
+ to; fixes UW folders that weren't being marked as NoSelect because
+ the storeinfo doesn't record that information.
+
+2002-08-09 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_rename): When renaming our
+ cache, add the "/folders" to the path.
+
+2002-08-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_init): Set
+ some default permanent_flags. This is the other cause of bug
+ #28038.
+ (imap_refresh_info): After calling camel_imap_command() with a
+ NULL format value (this is a shortcut to change the current_folder
+ by SELECTing it), call camel_imap_folder_selected(). This may have
+ been why permanent_flags never got set on the folder even after
+ going online in bug #28038.
+ (imap_update_summary): Same here. Also NULL-guard
+ camel_imap_response_free().
+
+2002-08-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (header_encode_param): Oops - outbuf pointed
+ to alloca'd memory but we were g_free'ing it after using
+ it. Instead use g_malloc for this outbuf buffer since it may be
+ kinda large. Also don't depend on a single byte to nul-terminate
+ the outbuf buffer so as to be safe with charsets such as UCS2 and
+ UCS4, instead keep a pointer to the end of the buffer.
+
+ * providers/imap/camel-imap-folder.c (parse_fetch_response): Only
+ add the stream to the gdatalist if it is non-NULL.
+
+2002-08-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/sendmail/camel-sendmail-transport.c
+ (sendmail_send_to): If writing to the sendmail pipe fails, wait
+ for the sendmail process to exit before returning. Fixes bug
+ #19636.
+
+2002-08-06 Not Zed <NotZed@Ximian.com>
+
+ * providers/pop3/camel-pop3-folder.c (cmd_list): Add messageinfo
+ to id table, and store array index in messageinfo too.
+ (fi_to_index): Removed, use index member of messageinfo, fixed
+ callers.
+ (cmd_builduid): Parse the headers of the data, and ignore any
+ status or x-status headers.
+ (uid_to_fi): Removed, use the hashtable instead.
+ (id_to_fi): Same.
+ (cmd_uidl): Add messageinfo to uid table.
+ (pop3_refresh_info): Setup hash tables, and fill out uid table for
+ nonuid capable servers.
+ (pop3_finalize): Destroy hash tables. Only free resources if the
+ uids table is not null (if finalised before we ran refresh info).
+ (id_to_fi): Removed. Use id hash table instead, fixed caller.
+
+2002-08-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel.c (camel_init): Always set a g_atexit handler to
+ flush/save the camel-certdb.
+
+ * providers/imap/camel-imap-store.c (get_folder_info_online): If
+ we are asking for the toplevel folders, use the IMAP store's
+ namespace as the toplevel folder rather than an empty
+ string. Fixes bug #28574.
+ (imap_forget_folder): Rearrange the code so that name can never be
+ used uninitialised.
+
+ * providers/imap/camel-imap-utils.c (imap_namespace_concat):
+ Removed.
+
+2002-08-05 Dan Winship <danw@ximian.com>
+
+ * camel-folder-summary.h (CamelMessageFlags): Add
+ CAMEL_MESSAGE_ANSWERED_ALL, for folders that can distinguish a
+ reply-to-sender from a reply-to-all. (eg, Exchange)
+
+ * providers/local/camel-local-folder.c (local_init): Add
+ ANSWERED_ALL to permanent_flags too.
+
+2002-08-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes bug #26237.
+
+ * providers/imap/camel-imap-command.c
+ (imap_command_strdup_vprintf): Don't prepend any namespace shit in
+ the %F case.
+
+ * providers/imap/camel-imap-utils.c (imap_parse_list_response):
+ Don't strip off the namespace.
+
+2002-08-01 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (create_folder): If the folder
+ name contains the directory separator, reject it.
+
+2002-08-02 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_check): Clear
+ the summary after building the 'removed uid' list.
+
+ * camel-folder-summary.c (message_info_load): revert jeff's patch
+ below, and do it slightly differently, and stop the auto-reformatting
+ bullshit.
+
+2002-08-02 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-summary.c (message_info_new): If
+ we get a duplicate, just re-use the old info.
+ (remove_summary): Add any removed to a change list.
+ (maildir_summary_check): If we find new ones in 'cur' track them
+ in the change list. Removed FIXME about it. For #18348.
+
+2002-08-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.c (message_info_load): Do more error
+ checking to prevent crashing if we fail to read a string for
+ example.
+
+2002-07-29 Peter Williams <peterw@ximian.com>
+
+ Fix bug #28238
+
+ * providers/imap/camel-imap-store.c (imap_forget_folder): New
+ function, breaking out the code in delete_folder() to handle when
+ a folder is removed.
+ (imap_folder_effectively_unsubscribed): New function, breaking out
+ the code in unsubscribe_folder() to handle when a folder is
+ unsubscribed.
+ (imap_check_folder_still_extant): New function, check whether a
+ folder exists by LIST'ing it.
+ (imap_store_refresh_folders): Add code here to check if the folder
+ still exists if we're unable to refresh its info. If so, pretend
+ that it was unsubscribed (to get the mailer to remove it from
+ the tree) and delete its cache. If somehow this goofs up, the
+ worst that can happen is that we must redownload the headers.
+ (get_folder_status): If we can't get the status, behave as above.
+ (delete_folder): Call imap_forget_folder() where the bulk of this
+ code has gone.
+ (unsubscribe_folder): Call imap_folder_effectively_unsubscribed()
+ where the bulk of this code has gone.
+
+2002-07-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (parse_fetch_response):
+ Disable my fix to not cache headers as it means that each time we
+ load the message, we've got to re-fecth the headers.
+
+ * camel-mime-filter-tohtml.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>
+
+ * camel-tcp-stream.c (camel_tcp_address_new): Update the comment.
+
+ * camel-tcp-stream-raw.c (socket_connect): If building with IPv6
+ support and the address is an IPv6 address, connect using a
+ sockaddr_in6 otherwise use the standard IPv4 sockaddr_in
+ structure.
+ (stream_get_local_address): Fix to work with IPv6 addresses.
+ (stream_get_remote_address): Same.
+
+ * camel-tcp-stream-openssl.c (socket_connect): Same as above.
+ (stream_get_local_address): Fix to work with IPv6 addresses.
+ (stream_get_remote_address): Same.
+
+ * camel-tcp-stream-ssl.c (stream_connect): If building with IPv6
+ support and the address is an IPv6 address, initialise the
+ PRNetAddr accordingly.
+ (stream_get_local_address): Fix to work with IPv6 addresses.
+ (stream_get_remote_address): Same.
+
+2002-07-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-openssl.c (ssl_verify): X509_digest() needs a
+ pointer to an int len. Also fixed some other compiler errors.
+
+ * camel-certdb.h: #include <stdio.h>
+
+2002-07-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-certdb.c: New source file implementing a very basic
+ certificate database. This is mostly just here because the Mozilla
+ NSS certdb seems to not be working for everyone's Evolution
+ install (works fine for me and Ettore but not many other people).
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): If we have this
+ certificate in our own CamelCertDB, then get the trust value from
+ that and only prompt the user if the trust is unknown.
+
+ * camel-tcp-stream-openssl.c (ssl_verify): Same.
+
+ * camel.c (camel_init): Create our default certdb.
+
+2002-07-30 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_transfer_offline): Use
+ the same command-counter mojo that the append code uses in case
+ the use tries to copy the same message to the folder repeatedly.
+
+2002-07-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (unset_flag): New filter action to unset a
+ system flag. The exact opposite of set_flag.
+
+2002-07-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-local-store.c (get_folder): If the path
+ exists and is a directory, return non-NULL. Missed this before
+ which is how we could return NULL even on success. Oops.
+
+2002-07-26 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-summary.c
+ (camel_imap_summary_add_offline_uncached): The flags'n'tags
+ copy was unnecessary. Removed it.
+
+2002-07-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ If we're gonna do an elite hack, lets do it right.
+
+ * providers/local/camel-local-store.c (get_folder): On success,
+ return non-NULL so that our caller doesn't have to depend on 'ex'
+ being non-NULL in order to work correctly.
+
+ * providers/local/camel-mbox-store.c (get_folder): Don't bother
+ checking if an exception was set, just use the return value of
+ camel-local-store's get_folder.
+
+ * providers/local/camel-maildir-store.c (get_folder): Same as the
+ mbox change.
+
+ * providers/local/camel-mh-store.c (get_folder): Here too.
+
+2002-07-25 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-summary.h
+ (camel_imap_summary_add_offline_uncached): Prototype.
+
+ * providers/imap/camel-imap-summary.c
+ (camel_imap_summary_add_offline_uncached): New function to add an
+ uncached message to the summary while offline.
+
+ * providers/imap/camel-imap-store.c (imap_connect_online): Only
+ refresh the folders if the disco diary is empty (ie, we're not
+ resyncing.)
+
+ * providers/imap/camel-imap-folder.c (imap_transfer_offline): Emit
+ an event for the source if deleting its originals. Also, if we
+ can't load the message, still process it, using the new imap
+ summary function.
+
+2002-07-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c: Remove "possibly
+ non-fatal" exception strings, all exceptions are fatal unless
+ their caller decides otherwise.
+ (connect_to_server): If smtp_helo() fails due to us getting
+ disconnected, treat the exception as fatal.
+ (smtp_connect): Abort if smtp_helo() fails and we got
+ disconnected.
+ (smtp_send_to): If smtp_mail() fails, abort the send operation.
+ (smtp_set_exception): If respbuf was NULL, then we got
+ disconnected and so update our state accordingly.
+ (smtp_disconnect): Only send a QUIT if we are still in the
+ connected state (or, at least think we are).
+
+2002-07-24 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c
+ (imap_expunge_uids_resyncing): It would help to mark the UIDs as
+ deleted before we try to expunge them
+ (in the case when no other UIDs were marked deleted this didn't
+ happen.) Also fix an FMR.
+ (imap_expunge_uids_offline): Trigger a folder_changed event with
+ our own changeinfo because camel_imap_response_free won't be able
+ to do that for us.
+
+2002-07-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (do_shell): Renamed from
+ shell_exec(). Also, we now want to pass argc/argv on to the
+ CamelFilterDriverShellFunc.
+ (camel_filter_driver_set_shell_func): Renamed a bit.
+
+ * camel-filter-search.c (pipe_message): Renamed from shell_exec().
+
+2002-07-25 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-summary.c (camel_folder_summary_save): When writing
+ the summary, use TRUNC flag, duh. Also, write to a temp file
+ first, and rename when closed successfully, and check ferror() and
+ fclose() against 0 rather than -1.
+
+ * providers/local/camel-mbox-summary.c (summary_update): Decrement
+ i if we remove the summary item so we dont skip every 2nd one.
+
+ * camel-mime-utils.c (header_decode_mailbox): Use
+ rfc2047_decode_word explicitly incase we just found an encoded
+ word. Stops us re-decoding the string twice, which fixes memory
+ corruption in #26330 when the HUGE string is used later.
+
+2002-07-24 Not Zed <NotZed@Ximian.com>
+
+ * camel-partition-table.c (camel_key_table_next): Didn't unlock if
+ we exited on an empty key list.
+
+ * providers/imap/camel-imap-folder.c (imap_expunge_uids_online):
+ Sync before doing an expunge if we dont have uidplus. See #25766.
+ (imap_expunge_uids_resyncing): Same here.
+
+ * providers/imap/camel-imap-store.c (get_folder_info_online):
+ Duplicated the very much hack in imap_store_refresh_folders() to
+ avoid a deadlock in #27959. A decent fix has to wait for a
+ rewrite.
+ (get_folder_online): Move folders to a subdirectory of
+ storage_path, rather than in it. Bye bye everyones settings. See
+ 24947.
+ (get_folder_offline): And here too.
+ (delete_folder): And here too.
+ (rename_folder): and here too.
+ (get_folder_info_offline): And here too. I love code reuse.
+
+2002-07-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream.c: #include <string.h> for memcpy.
+
+2002-07-22 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (vee_set_message_user_tag): Oops, forgot to
+ implement this. Fixes #24604.
+
+2002-07-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-crlf.c (filter): Only add a \r if the
+ character before the \n wasn't already a \r - this covers for when
+ people add DOS files as attachments. Fixes bug #28056.
+
+2002-07-19 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-part-utils.c (convert_buffer): Changed to use a
+ different length calculator.
+
+2002-07-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-lock.c: Add the appropriate #include for the _() macro.
+
+2002-07-17 Not Zed <NotZed@Ximian.com>
+
+ * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Got
+ rid of the stupid "tryagain" semantics, which didn't work.
+ (pop3_connect): Fixed here to only retry under proper conditions.
+
+2002-07-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-canon.c (filter): When CRLF encoding, "empty"
+ (after stripping trailing whitespace characters) lines need to end
+ in CRLF also, not just lines with data in them.
+
+2002-07-16 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_sync_online): Clean
+ up some improper usage of CamelExceptions (looking at
+ camel_exception_is_set when ex = NULL).
+
+ * providers/imap/camel-imap-store.c (get_folder_online): Here too.
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_new): Nothing sets the exception so
+ don't bother to check it at the end of this function. Prevents
+ a warning about checking a NULL exception's value.
+
+2002-07-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): Make the
+ standard AUTH format take priority over the AUTH= priority, since
+ sometimes servers only list a subset of the supported authtypes in
+ the AUTH= response while they list all authtypes in the standard
+ AUTH response. Fixes "bug" #27841.
+
+2002-07-15 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): If we're
+ not online and the message isn't in our cache, give up.
+
+2002-07-15 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-search.c (get_label): Removed.
+ (get_score): Removed. Labels & scores are stored in tags, we
+ already have a function to get tags.
+ (user_tag): Fail if we dont get valid arguments, it must be a
+ string type.
+ (system_flag): Same here.
+
+2002-07-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (header_msgid_generate): Try to get the FQDN
+ from the results of gethostname(). If that fails, then fall back
+ to the results gotten from gethostname() or if that fails just use
+ "localhost.localdomain". Addresses bug #17416.
+ (header_decode_param): Protect against a NULL value.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Get rid of
+ the constant 'required' variable, just use the value when calling
+ set_best_encoding.
+
+ * providers/local/camel-local-provider.c: Changed the mbox and
+ spool provider descriptions to try and be more clear. I'm not sure
+ I like the mention of Evolution in the mbox provider description,
+ but there was no other way to make it clear that it MOVED mail out
+ of the mbox folder into a folder managed by Evolution without
+ mentioning Evolution. *sigh* Anyways, to me "retrieve" means move,
+ but apparently this isn't clear to the weak minded.
+
+2002-07-15 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_rescan): >= is not
+ appropriate here because the sequences are 1-based; so seq =
+ summary_len is valid. Hopefully addresses 15646, because this
+ caused the last message in a folder to be reloaded, replacing its
+ CamelMessageInfo, and the tree view was using the old
+ CamelMessageInfo.
+
+2002-07-13 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-summary.c
+ (camel_folder_summary_info_new_from_message): Only assign a uid if
+ indexing is enabled. This stops us always assigning a uid in the
+ imap folder and disco folder?
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Also
+ check the uid is set at all, another bit of a fix for #15667.
+
+2002-07-09 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Check
+ for existing messages of the same uid before doing anything. If
+ it exists, do nothing (perhaps it should merge?). A dirty hack for
+ #15667.
+
+2002-07-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-multipart-encrypted.c (camel_multipart_encrypted_decrypt):
+ On error, do not unref the parts gotten using
+ camel_multipart_get_part() since that function does not ref the
+ parts. Also don't forget to reset the decrypted stream before
+ trying to parse it ;-)
+
+2002-07-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-multipart.c (camel_multipart_class_init): Updated to not
+ use camel_type_get_global_classfuncs() since this is just a cast
+ macro now.
+
+ * providers/imap/camel-imap-folder.c (get_content): Handle
+ multipart/encrypted parts too.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Handle
+ multipart/encrypted types too.
+
+2002-07-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Don't let any
+ parts have a binary encoding.
+
+2002-07-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes bug #27672
+
+ * camel-mime-filter-bestenc.c: Conditionally #include <config.h>
+
+ * camel-mime-filter-linewrap.c: Same here... although we could
+ probably just get rid of this filter? We don't seem to use it
+ anywhere since we try to QP/Base64 encode any text parts with long
+ lines. Besides, we couldn't use this filter for SMTP anyway since
+ we can't risk possibly linewrapping a binary mime part. I dunno,
+ maybe this could be useful in the composer though? *shrug*
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Always call
+ camel_mime_message_set_best_encoding() even if the server allows
+ 8BITMIME and even if we don't have any 8bit parts because we may
+ have parts with long lines (>998 octets) which also need to be
+ encoded.
+
+ * camel-mime-message.c (check_8bit): Don't forget to check for the
+ binary encoding here as well.
+
+2002-07-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (parse_fetch_response): If we
+ are fetching HEADERs, don't cache the stream - instead just create
+ a mem-stream and return that. This reduces a significant amount of
+ overhead due to disk i/o.
+
+ * camel-multipart-encrypted.c (camel_multipart_encrypted_decrypt):
+ Don't forget to set an appropriate exception before returning
+ NULL.
+
+2002-07-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (get_message_cb): Make sure message is
+ non-NULL before setting the source on it.
+
+ * camel-gpg-context.c: Renamed stdin to stdin_fd, stdout to
+ stdout_fd, and stderr to stderr_fd in struct _GpgCtx since
+ Solaris' stdin/stdout/etderr variables seem to be macros and are
+ thus breaking the compilation.
+
+2002-07-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/nntp/camel-nntp-provider.c: Set the IS_SOURCE provider
+ flag.
+
+ * providers/pop3/camel-pop3-store.c: Change all exceptions to
+ report which POP server failed (and tried to make a few of the
+ exceptions a bit more clear).
+
+2002-07-03 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (vee_sync): If we get an exception from the
+ child sync, update the exception string so we know where it really
+ was.
+
+ * camel-vee-store.c (change_folder): Util to emit created/deleted
+ events.
+ (vee_get_folder): If the folder has path elements, and its parents
+ dont exist, create dummy no-select nodes. This is for bug #4246.
+ (vee_delete_folder): Use change_folder() to save code.
+
+ * providers/local/camel-mbox-folder.c (mbox_set_message_flags):
+ Only set xevchange if we're storing status headers in pine format,
+ so we dont do a full sync every time any flag changes.
+
+2002-06-27 Not Zed <NotZed@Ximian.com>
+
+ * camel-object.c (camel_object_hook_event): Take a void object arg.
+ (camel_object_remove_event): "
+ (camel_object_unhook_event): "
+ (camel_object_trigger_event): ", also, execute events in the same
+ order they were added, i.e. reverse hook-list order.
+
+2002-06-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_ctx_get_argv): Don't use
+ --no-auto-key-retrieve, this option has apparently been deprecated
+ in gpg 1.0.7.
+
+2002-06-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-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): In the case of a NODATA response from gpg,
+ try to use the diagnostics that gpg may have written to its
+ stderr.
+ (gpg_verify): Check that the gpg process has not exited.
+ (gpg_ctx_op_wait): Make sure we haven't already exited (as by
+ gpg_ctx_op_is_exited()) and if we have, retrieve the exit status
+ from the gpg context.
+
+2002-06-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.[c,h]: Removed.
+
+ * camel-pgp-mime.c (pgp_mime_part_sign_restore_part): Removed.
+ (pgp_mime_part_sign_prepare_part): Removed.
+ (camel_pgp_mime_part_sign): Removed.
+ (camel_pgp_mime_part_verify): Removed.
+ (camel_pgp_mime_part_encrypt): Removed.
+ (camel_pgp_mime_part_decrypt): Removed.
+ (camel_pgp_mime_is_rfc2015_signed): Documented.
+ (camel_pgp_mime_is_rfc2015_encrypted): Same.
+
+2002-06-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-multipart-encrypted.c (camel_multipart_encrypted_encrypt):
+ Oops, this needs to take a userid argument.
+
+ * camel-gpg-context.c (gpg_clearsign): Removed (never did anything
+ anyway).
+
+ * camel-pgp-context.c (pgp_clearsign): Removed.
+
+ * camel-cipher-context.c (camel_cipher_clearsign): Removed unused
+ method.
+
+ * camel-multipart-encrypted.[c,h]: New class implementing the
+ multipart/encrypted content type. Contains methods for encrypting
+ and decrypting a multipart/encrypted MIME object.
+
+ * camel-gpg-context.c (gpg_ctx_parse_status): Check for NODATA
+ too.
+
+2002-06-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-local-provider.c: Remove the #include for
+ camel-spoold-store.h
+
+2002-06-26 Not Zed <NotZed@Ximian.com>
+
+ * camel-gpg-context.c: Include <sys/time.h> for struct timeval.
+
+ * providers/local/camel-local-provider.c
+ (camel_provider_module_init): Removed spoold provider. The spool
+ provider does it now.
+ (): Spoold doesn't exist anymore, remove its header.
+
+2002-06-25 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-folder.c (camel_spool_folder_new):
+ Support a new xstatus option - folders update/honour the
+ Status/X-Status headers in addition to X-Evolution.
+
+ * providers/local/camel-local-summary.c
+ (camel_local_summary_write_headers): If supplied with an
+ additional status or xstatus arg, write a Status header and/or
+ X-Status. Also fix the case of properly terminating the headers
+ if an xev line isn't supplied.
+
+ * providers/local/Makefile.am (libcamellocalinclude_HEADERS,SOURCES):
+ Removed spoold-store.[ch].
+
+ * providers/local/camel-local-provider.c
+ (camel_provider_module_init): For the spoold type, just use the
+ spool store instead.
+
+ * providers/local/camel-spool-store.h: Added a type field, so the
+ 1 store can implement different types without having to subclass.
+
+ * providers/local/camel-spool-store.c
+ (camel_spool_store_get_toplevel_dir): Removed, inherits from local
+ store now.
+ (construct): If we're pointing to a file, treat it as mbox mode,
+ otherwise treat it as 'elm' mode.
+ (get_folder): Only test for INBOX in mbox mode.
+ (get_folder_info_elm):
+ (get_folder_info_mbox): Two alternatives for getting folder info,
+ depending on the type of folder we're looking at.
+ (get_folder_info_mbox): Make the url include the protocol.
+ (scan_dir): "
+
+ * providers/local/camel-spoold-store.c
+ (camel_spoold_store_get_toplevel_dir): Removed, inherits from
+ local store now.
+
+ * camel-folder.c (get_message_user_tag): Dont use a
+ g_return_if_fail for info==NULL. This is not an error.
+ (set_message_user_tag): And same here.
+ (set_message_user_flag): Sigh, and here.
+ (get_message_user_flag): And here.
+ (set_message_flags): and here ...
+ (get_message_flags): Dum de dum, de done at last.
+
+ * providers/local/camel-mbox-folder.c (mbox_get_message): Check
+ for new messages whenever we retrieve one. In the common
+ no-update case, this is a single stat.
+ (mbox_get_message): If we need to rescan, then force a full rescan
+ to make sure it does the right thing.
+ (mbox_get_message): Cleanup the exception handling a bit, if we do
+ get an error, propagate any folder changes anyway as well.
+ (mbox_set_message_user_flag): Argh more of these stupid g_returns
+ taht shouldn't be.
+ (mbox_set_message_user_tag): Here too.
+ (mbox_set_message_flags): If the read flag is being changed, mark
+ it as an xevchange (i.e. Status line change).
+
+ * providers/local/camel-mbox-summary.c (summary_rebuild): Merged
+ into summary_update.
+ (summary_update): Changed to allow it to update existing lists of
+ messages without clearing out the summary.
+ (mbox_summary_check): Dont clear the summary, just re-scan.
+ (message_info_new): Attempt to support the 'Status: RO' elm/pine
+ thing.
+ (camel_mbox_summary_encode_status):
+ (camel_mbox_summary_decode_status): Util functions for
+ creating/parsing the Status line.
+ (camel_mbox_summary_sync_mbox): Write out the status line if we're
+ going to try support it.
+ (camel_mbox_summary_xstatus): Implement option to control
+ read/write of (x-)status.
+ (message_info_new): Do x-status stuff based on run-time option.
+ (camel_mbox_summary_sync_mbox): "
+ (mbox_summary_add): If x-status enabled, then always add
+ status/x-status headers to message.
+
+ * camel-folder-summary.c (summary_assign_uid): If the messageinfo
+ is already in the summary, AND is the same messageinfo, dont do
+ anything, return a value to indicate this.
+ (camel_folder_summary_add): Do nothing if this info already in the
+ summary, so we can perform updates.
+
+2002-06-24 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-summary.c
+ (camel_local_summary_check_force): New method to force the next
+ summary check to be a full check, set if a mismatch occurs.
+
+ * camel-folder-summary.c (camel_folder_summary_load): If we have
+ no summary path set, dont do any i/o, rather than abort.
+ (camel_folder_summary_save): "
+ (camel_folder_summary_header_load): "
+
+ * providers/local/camel-spool-store.h: Inherit from camel mbox
+ store, even if we override almost everything.
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): If the base path points to a file,
+ use that as the folder path as well.
+
+ * providers/local/camel-spool-folder.h: Inherit from
+ camel-mbox-folder.
+
+ * providers/local/camel-spool-summary.c (spool_summary_sync_full):
+ Use camel_mbox_summary_sync_mbox to do most of the work.
+
+ * providers/local/camel-spool-summary.[ch]: Make spool-summary
+ inherit from mbox summary rather than foldersummary.
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync): Make
+ sync_full/quick virtual methods.
+ (camel_mbox_summary_sync_mbox): The full sync method put into a
+ simple function that sync's from fd to fd.
+ (mbox_summary_sync_full): Use summary_sync_mbox to do the real
+ work.
+ (mbox_summary_check): Create removed events if the folder gets
+ cleared. Also, dont clear the summary before a rebuild, try to
+ merge.
+
+2002-06-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c: #include <sys/time.h>
+
+2002-06-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_hash_str): Return the option as
+ --digest-algo=<micalg>
+ (gpg_ctx_parse_status): Decode more status information and keep
+ track of trust and such.
+ (gpg_ctx_op_complete): Make sure we aren't waiting for gpg to
+ write data to stdout (such as encrypted/decrypted data or a
+ signature).
+ (gpg_encrypt): Remove the fejj@stampede.org hard-coded value
+ (which had only meant to be for testing).
+
+2002-06-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_ctx_get_argv): Use --command-fd rather
+ than --passphrase-fd since what we really want is an interactive
+ mode (besides, --passphrase-fd requires a passphrase to be sent
+ before --status-fd will send a NEED_PASSPHRASE status message).
+ (gpg_ctx_parse_status): When we encounter a BAD_PASSPHRASE, tell
+ the session to uncache it.
+ (camel_gpg_context_set_always_trust): Implemented.
+
+2002-06-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_ctx_parse_status): Check for ERRSIG
+ also.
+ (gpg_ctx_op_step): Don't try writing a passphrase unless our
+ operation requires it.
+
+2002-06-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.c (gpg_encrypt): Return -1 on error.
+ (gpg_decrypt): Same.
+ (gpg_sign): Again here.
+ (gpg_ctx_op_step): Only attenmpt to read from the status-fd if we
+ are not already 'complete'.
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_encrypt): Flush the
+ filtered stream.
+
+2002-06-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-gpg-context.[c,h]: New source files implementing the
+ CamelCipherContext class for gnupg.
+
+ * camel-pgp-context.c (camel_pgp_context_new): Return a
+ CamelCipherContext.
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_decrypt): Take a
+ CamelCipherContext argument rather than a CamelPgpContext since we
+ now have a CamelGpgContext also.
+ (camel_pgp_mime_part_encrypt): Same.
+ (camel_pgp_mime_part_verify): Same.
+ (camel_pgp_mime_part_sign): Same.
+
+2002-06-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-digest-folder.c: Updated to support searching as well as
+ making it use CamelDigestSummary.
+
+ * camel-digest-summary.[c,h]: New class to handle the summary for
+ CamelDigestFolder.
+
+ * camel-tcp-stream-ssl.c (set_errno): PR_IO_TIMEOUT_ERROR should
+ map to ETIMEDOUT and not EAGAIN.
+ (stream_connect): Reset the PR_Poll() timeout back to 2 minutes as
+ this wasn't the problem afterall.
+
+2002-06-19 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-parser.c (folder_scan_drop_step): Drop back to
+ initial state if we came from eof state.
+
+2002-06-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (stream_connect): Set the poll timeout to
+ be PR_INTERVAL_MIN, this one shouldn't need to be 2 minutes (plus
+ it blocks my connection at home for far too long).
+
+ * providers/imap/camel-imap-folder.c (imap_refresh_info): Make
+ sure we hold the command_lock before accessing current_folder.
+ (imap_append_online): Same.
+ (imap_transfer_online): Same.
+
+ * providers/imap/camel-imap-store.c (delete_folder): We need to
+ hold the command_lock before we can set the current_folder to
+ NULL.
+ (rename_folder): Same.
+ (get_folder_info_online): We need to make sure we hold the
+ command_lock in order to use current_folder.
+ (everywhere): Same.
+
+2002-06-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): Don't
+ bother trying to authenticate (and thus don't throw up an error
+ dialog) unless the server is an ESMTP server and supports
+ authentication.
+
+ * camel-sasl-plain.c: Change the user-friendly name to PLAIN, this
+ is what it should be. Not "Password" because user's immediately
+ think that they need authentication when they see "Password" even
+ if they don't need it at all.
+
+2002-06-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-vee-folder.c (camel_vee_folder_add_folder): Update the
+ freeze state of the new source folder.
+ (camel_vee_folder_remove_folder): Undo any freeze state that we
+ have imposed on this source folder.
+
+2002-06-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-vee-folder.c (vee_freeze): Freeze source folders.
+ (vee_thaw): Thaw all source folders. Fixes bug #24317.
+
+ * providers/imap/camel-imap-folder.c (imap_sync_online): Unlock
+ the command_lock after each UID STORE command so that other
+ (probably more important) threads can send their requests.
+
+ * camel-arg.c:
+ * camel-disco-diary.c:
+ * camel-index-control.c:
+ * camel-mime-part.c:
+ * camel-pgp-mime.c:
+ * camel-store.c:
+ * camel-tcp-stream-ssl.c:
+ * camel-text-index.c: Fixed compiler warnings.
+
+ * camel-multipart-signed.c: Updated to use ctx->sign_protocol
+ rather than ctx->protocol.
+
+ * camel-cipher-context.h: Add an ecnryption protocol member.
+
+ * camel-pgp-context.c (camel_pgp_context_init): Set the encryption
+ protocol.
+
+2002-06-11 Not Zed <NotZed@Ximian.com>
+
+ * camel-vtrash-folder.c (camel_vtrash_folder_class_init): Our
+ parent class is camel_vee_folder, not camel_folder, fix setting of
+ parent folder (unused anyway, but removes a run-time warning).
+
+2002-06-07 Not Zed <NotZed@Ximian.com>
+
+ * camel-pgp-context.c (camel_pgp_context_init): Duh! The protocol
+ is application/pgp-signature. TODO: need to have a signed and an
+ encrypted protocol specified separately.
+
+2002-06-06 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-thread.c (thread_summary): Do the work here.
+ (camel_folder_thread_messages_remove): Implement. Remove some
+ uid's from the tree. Disalbe from build, for now.
+ (remove_uid_node_rec): Actually do the work.
+ (camel_folder_thread_messages_add): Implement. Add some summary
+ items to the tree. Disable from build though.
+ (camel_folder_thread_messages_apply): Make a thread tree built
+ using camel_folder_thread_new() map to a new set of uids,
+ preserving some order. Meant primarily to manage deleted + added
+ uids in a user-friendly manner.
+
+2002-06-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-multipart-signed.c (camel_multipart_signed_verify): Use
+ CAMEL_EXCEPTION_SYSTEM rather than '1' for clarity.
+
+2002-06-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (stream_connect): Up the timeout on the
+ connect code to 2 minutes.
+
+2002-06-05 Dan Winship <danw@ximian.com>
+
+ * camel-mime-utils.c (header_decode_mailbox): Parse
+ "From: Dan Winship <danw>" (with no domain) in the way the sender
+ meant it, even though it's completely wrong.
+
+2002-06-04 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-provider.c: Remove the
+ CONF_DEFAULT_PATH entry, as this is handled by the url config
+ stuff. This made it basically impossible to configure any local
+ folder from the gui.
+
+ * providers/local/camel-local-folder.c (local_refresh_info): Force
+ a refresh. Should work for all local folders to force them to
+ refresh.
+
+ * providers/local/camel-maildir-folder.c (maildir_refresh_info):
+ Removed, moved into camel-local-folder.
+
+ * providers/local/camel-mh-summary.c (mh_summary_next_uid_string):
+ Once we assign or get a uid, tell the summary of this, so the next
+ uid we get will be higher than any previously.
+
+ * camel-object.c (camel_object_ref, camel_object_unref): I got
+ sick of casting, these now take void * like they should, and
+ perform their own run-time type checking.
+
+ * providers/local/camel-mh-store.c (recursive_scan): Changed to
+ use stat, not lstat (*shrug* maybe someone wants to softlink their
+ maildir tree?).
+ (inode_hash):
+ (inode_equal):
+ (inode_free): Copied from camel-maildir store (should put into
+ camel-local-store or utils?).
+ (recursive_scan): Changed to check for re-visiting inodes. Also,
+ it builds the tree itself, rather than using folder_info_build.
+ (add_folder): Changed to folder_info_new.
+ (recursive_scan): Properly honour the recursive flag. Also,
+ lookup unread count from folder.
+ (folder_info_new): Init unread message count to -1, since we dont
+ know yet.
+ (folder_info_new): Take the name as an argument, and perform the
+ merging here.
+ (folders_update): Util func to add/remove folders from .folders
+ file. I'm assuming its sorted.
+ (get_folder): Add the folder to .folders if we created a new one,
+ and if it exists.
+ (delete_folder): Remove from .folders, etc.
+ (folders_scan): If we have a .folders file, read and use that
+ instead.
+ (recursive_scan): Handle scanning from a particular directory
+ properly.
+ (rename_folder): Implement so we can track any changes to the
+ .folders file if its turned on.
+
+ ** Applied patch below from Greg Hudson.
+
+2002-05-10 Greg Hudson <ghudson@mit.edu>
+
+ * camel-mh-store.c (get_inbox, get_folder_info, recursive_scan,
+ add_folder): Implement support for MH stores.
+
+ * camel-mh-summary.c (mh_summary_check, sort_uid_cmp): Sort MH
+ messages by message number (uid), like we sort maildir messages by
+ date.
+
+ * camel-local-provider.c (mh_provider): Turn on source and store
+ flags.
+
+2002-06-03 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (camel_vee_folder_add_folder):
+ (folder_changed_change):
+ (folder_changed_remove_uid):
+ (folder_changed_add_uid):
+ (vee_folder_build_folder): Check that any unmatched operation is
+ not concerning any vfolder. Other vfolders should never be part of any
+ unmatched handling. For #24615, and others probably.
+
+2002-06-02 Not Zed <NotZed@Ximian.com>
+
+ * camel-sasl.c (camel_sasl_new):
+ (camel_sasl_finalize): setup/free the mech string.
+
+ * camel-sasl.h: Added 'mech' mechanism string.
+
+2002-06-01 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_getv): Implement. Only
+ the object_description arg.
+ (camel_imap_folder_get_type): Init parent_class holder.
+
+ * providers/local/camel-local-folder.c (local_getv): Implement,
+ object_description arg.
+
+ * camel-folder.c (folder_getv): Implement, add a bunch of args you
+ can get -> camel_folder_get_unread_count etc will be going RSN i
+ hope.
+ (camel_folder_finalize): Free cached description string.
+
+ * camel-object.c (cobject_getv): Implement
+ CAMEL_OBJECT_ARG_DESCRIPTION, just return the classname of the
+ object.
+ (camel_object_getv):
+ (camel_object_get):
+ (camel_object_setv):
+ (camel_object_set): Take object = void *, to simplify usage.
+ (camel_object_setv): Removed unecessary locals.
+ (camel_object_getv): Same.
+ (camel_object_free): New method, free an arg, upto implementations
+ whether args are static/const or not.
+ (cobject_free): Implement a dummy do nothing free.
+
+2002-05-31 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (camel_vee_folder_get_location): new function
+ to get the real location (folder) (and uid) of a vfolder object.
+ Using the folderinfo, since we already have it, maybe it should
+ use the uid.
+
+2002-05-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (get_content): When the part
+ is a multipart/signed, make sure to free the part_spec before
+ returning (the other types already did this properly).
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_get): Free the path buffer when we're
+ done with it.
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Free
+ the final tagged response buffer.
+
+ * providers/imap/camel-imap-command.c (imap_read_untagged): If we
+ fail to read a literal, free the temporary string buffer.
+
+ * providers/imap/camel-imap-folder.c (imap_rescan): Revert my fix
+ from the other day since camel_imap_command_response() doesn't
+ guarentee that resp will be set to NULL on error.
+
+ * camel-data-cache.c (camel_data_cache_get): If we fail to be able
+ to create a stream to insert into the cache, then free the 'real'
+ path.
+
+2002-05-30 Not Zed <NotZed@Ximian.com>
+
+ * camel-cipher-context.h: Added a protocol field for users to use.
+
+ * camel-stream-filter.c (do_read): Sigh, the pre-size is READ_PAD
+ not READ_SIZE. Big difference.
+ (READ_PAD): Bumped upto 128 from 64, so we can fit a typical line
+ in full.
+
+ * providers/imap/camel-imap-folder.c (get_content): Changed to
+ load multipart/signed as an opaque block into the right kind of
+ object.
+
+ * camel-multipart.h (struct _CamelMultipart): Removed the boundary
+ field. It wans't actually used anywhere.
+
+ * camel-seekable-substream.c
+ (camel_seekable_substream_new_with_seekable_stream_and_bounds):
+ Shortened this stupidly long name to just :new(), its the only way
+ its ever used. Fixed all callers.
+
+ * camel-multipart-signed.[ch]: new wrapper for multipart/signed
+ types. We need to treat the entire content as a blob of data for
+ transport purposes. This also cleans up a lot of the sign/verify
+ handling.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Just call
+ camel_multipart_construct_from_parser for multipart parts, also
+ use a multipart_signed for multipart/signed types.
+
+ * camel-multipart.c (camel_multipart_construct_from_parser): New
+ virtual function for multiparts to buld themselves.
+ (construct_from_parser): Implement for normal multiparts.
+ (toplevel): Got rid of a warning, it'll never be an abstract
+ class.
+
+ * camel-pgp-context.c (pgp_hash_to_id):
+ (pgp_id_to_hash): Implement.
+ (camel_pgp_context_init): Init the pgp protocol specifier.
+
+ * camel-cipher-context.c (camel_cipher_id_to_hash):
+ (camel_cipher_hash_to_id): Util virtual methods to handle the
+ cipher id string.
+
+ * camel-mime-filter-canon.[ch]: A new filter, end/start of line
+ canonicalisation filter. Can escape "From " and strip trailing
+ whitespace, and canonicalise the end of line to crlf or to lf.
+
+2002-05-29 Not Zed <NotZed@Ximian.com>
+
+ * camel-multipart.h (struct _CamelMultipart): Removed the
+ 'parent', nothing used it, anywhere. Cleaned up some formatting
+ slightly.
+
+2002-05-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_readline):
+ On error, don't leak the GByteArray buffer.
+
+ * providers/imap/camel-imap-folder.c (imap_rescan): Free the
+ response before checking for errors. I'm not sure this'll actually
+ fix the memory leak here, but it might? Certainly can't hurt.
+
+ * camel-block-file.c (camel_block_file_finalise): Destroy the
+ blocks hash table.
+
+2002-05-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (connect_to_server): Only free
+ the LOGOUT response if it is non-NULL.
+
+2002-05-28 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-folder.c (maildir_refresh_info):
+ Implement. Run a summary check to update for any newly arrived
+ messages.
+
+ * providers/local/camel-maildir-store.c (scan_dir): If we have a
+ folder, execute a refresh_info on it, to suck in any new stuff.
+
+2002-05-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_log): Use the
+ CamelMessageInfo rather than the CamelMimeMessage because the
+ message may not have been loaded (thus NULL).
+
+2002-05-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (connect_to_server): On
+ connection failure, unref the tcp stream.
+
+ * providers/pop3/camel-pop3-store.c (connect_to_server): On
+ connection failure, unref the tcp stream.
+
+ * providers/imap/camel-imap-store.c (connect_to_server): On
+ connection failure, unref the tcp stream.
+
+ * providers/nntp/camel-nntp-store.c (nntp_store_query_auth_types):
+ Our parent class is no longer CamelRemoteStore.
+ (nntp_store_init): Same.
+ (camel_nntp_store_get_type): Here too.
+ (nntp_connect): Rewritten to try to connect via SSL. Also remove
+ code using CamelRemoteStore.
+ (camel_nntp_command): Don't call camel_remote_store_connected().
+
+2002-05-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (content_info_get_part_spec):
+ Helps if we allocate enough space here. Also, start smoking the
+ same purple flavoured IMAP crack when counting parts (parts don't
+ count if their parent part is a message/* part with a parent
+ part). Fixes bug #25260.
+
+2002-05-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-command.c (imap_read_untagged): Use
+ the new readline function.
+
+ * providers/imap/camel-imap-store.c (connect_to_server): Use the
+ new camel_imap_store_readline() function which doesn't suck quite
+ as bad as the original camel_remote_store_recv_line() function.
+ (camel_imap_store_readline): New function to replace
+ camel_remote_store_recv_line(). This function is at least safe
+ with embedded nul chars. Not that any of our callers use it
+ *sigh*.
+
+2002-05-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (connect_to_server): Added
+ some NULL protection fixes.
+
+2002-05-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-remote-store.c: Removed from the build. Glory glory
+ hallelujah.
+
+ * camel-disco-store.c: Updated to inherit from
+ CamelStore rather than CamelRemoteStore.
+
+ * providers/imap/camel-imap-command.c (imap_command_start): Don't
+ use the camel-remote-store shit to send a string. Just use
+ camel_stream_printf for chrissakes.
+
+ * providers/imap/camel-imap-store.c: Updated to not depend on
+ CamelRemoteStore and to handle STARTTLS.
+ (imap_disconnect_online): Unref the streams.
+ (imap_keepalive): Removed.
+ (camel_imap_store_connected): New function to replace
+ camel_remote_store_connected().
+ (camel_imap_store_finalize): Unref the streams.
+ (camel_imap_store_recv_line): New function to replace
+ camel_remote_store_recv_line().
+ (imap_get_capability): Renamed from connect_to_server
+ (connect_to_server): New function to try and connect to the
+ server.
+ (connect_to_server_wrapper): New wrapper function around
+ connect_to_server that takes the ssl modes into consideration.
+ (query_auth_types): Don't bother calling our parent's
+ implementation of query_auth_types() since CamelDiscoStore doesn't
+ have any anyway.
+ (imap_get_name): New method to implement CamelService::get_name
+
+2002-05-18 Not Zed <NotZed@Ximian.com>
+
+ * camel-search-private.c (camel_utf8_getc): If we get an invalid
+ start char, just ignore it and goto the next character.
+
+2002-05-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_offline): Don't
+ call some retarded function to simply set an exception.
+
+ * camel-filter-search.c (get_label): New e-sexp callback function
+ to get a user_tag label value.
+
+2002-05-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c
+ (imap_parse_namespace_response): New function to parse a NAMESPACE
+ response properly.
+ (imap_namespaces_destroy): New function to destroy the returned
+ structure from the above function.
+
+2002-05-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-service.c (service_setv): Only reconnect if we are already
+ connected, if we are in a disconnected state then no need to
+ reconnect.
+
+ * providers/imap/camel-imap-folder.c (get_content): If the
+ part_spec is an empty string for a leaft part, use "1" since we
+ don't actually want to get the raw message headers too.
+
+2002-05-15 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (refresh_folder_info): removed.
+ (imap_store_refresh_folders): Copy the folders first, then refresh
+ them, outside of the cache_lock, which could cause deadlocks
+ because of a workaround for crappo exchange.
+ (imap_disconnect_online): Dont pass an exception to LOGOUT
+ command. The required response 'BYE' always sets an exception
+ when we call LOGOUT. This also interfered with a lot of other
+ processing causing partial failures and messed up offline/online
+ state.
+
+ * camel-disco-folder.c (disco_prepare_for_offline): Do progress
+ reporting.
+
+2002-05-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ Fixes bug #24136.
+
+ * providers/imap/camel-imap-folder.c (content_info_get_part_spec):
+ New function to take a CamelMessageContentInfo and generate a
+ part-specification string.
+ (get_content): Stop passing around part_spec strings and use
+ content_info_get_part_spec instead.
+
+ * camel-folder-summary.c (camel_content_info_dump): Made this into
+ a public debugging function.
+
+ * providers/imap/camel-imap-utils.c (imap_parse_body): Make sure
+ to set the parent of any message/rfc822 subparts.
+
+2002-05-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): Previous
+ fix reverted.
+
+2002-05-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_class_init):
+ Overload the setv/getv CamelObject virtual methods.
+ (imap_setv): Implemented.
+ (imap_getv): Implemented.
+
+2002-05-13 Dan Winship <danw@ximian.com>
+
+ * camel-folder.c (camel_folder_append_message): Add a "char
+ **appended_uid" argument, for the caller to optionally pass in a
+ variable to receive the UID of the appended message (if the
+ provider knows it).
+ (camel_folder_transfer_messages_to): Likewise, add "GPtrArray
+ **transferred_uids"
+ (transfer_messages_to): Update default implementation to handle
+ transferred_uids.
+
+ * camel-disco-folder.c (disco_append_message,
+ disco_transfer_messages_to): Update for API changes.
+
+ * camel-disco-diary.c (camel_disco_diary_replay): Update the
+ diary's temporary uid->real uid map when replaying appends and
+ transfers.
+
+ * providers/imap/camel-imap-folder.c (imap_append_offline,
+ imap_append_online, imap_transfer_offline): Pass back the new
+ UIDs, when requested and available.
+ (imap_append_resyncing): Pass back the new UIDs when requested and
+ available. Remove the diary uidmap managing code since
+ CamelDiscoDiary can handle that itself now.
+ (imap_transfer_online, imap_transfer_resyncing): Update for new
+ APIs, but don't actually pass back the new UIDs yet. (It's tricky
+ since the COPYUID response may not be in the same order as the
+ input uids.)
+
+ * providers/local/camel-maildir-folder.c (maildir_append_message):
+ Pass back the new UID if requested.
+
+ * providers/local/camel-mbox-folder.c (mbox_append_message):
+ Likewise.
+
+ * providers/local/camel-mh-folder.c (mh_append_message): Likewise.
+
+ * providers/local/camel-spool-folder.c (spool_append_message):
+ Likewise.
+
+ * camel-digest-folder.c (digest_append_message,
+ digest_transfer_messages_to): Update for API changes.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message,
+ do_copy, do_move): Update for API changes.
+
+ * camel-vee-folder.c (vee_append_message,
+ vee_transfer_messages_to): Likewise.
+
+ * camel-vtrash-folder.c (vtrash_append_message,
+ vtrash_transfer_messages_to): Likewise.
+
+2002-05-13 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-thread.c
+ (camel_folder_thread_messages_new_summary):
+ (camel_folder_thread_messages_new): Since the fix for #3357 uses
+ 'order=0' to indicate tree structure nodes, make sure we dont
+ actually set order=0 for valid messages, otherwise we silently
+ lose duplicates of the first message (i==0). Fixes #19920.
+
+2002-05-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): Fetch the
+ BODYSTRUCTURE rather than BODY since BODY seems to be lacking some
+ of the data we need. This fixes bug #24136.
+
+ * camel-transport.c (camel_transport_get_type): Might help if we
+ called camel_transport_class_init.
+
+2002-05-10 Dan Winship <danw@ximian.com>
+
+ * camel-folder.c (camel_folder_transfer_messages_to): Replace
+ copy_messages_to and move_messages_to with a single function that
+ just takes a "delete_originals" flag. Also, use the vtrash
+ implementation if *either* folder is a vtrash.
+ (transfer_messages_to): Make this use camel_operation_progress
+ (previously move_messages_to did but copy_messages_to didn't), and
+ freeze/thaw the folder(s) if doing multiple messages.
+
+ * camel-vtrash-folder.c (vtrash_transfer_messages_to): Update for
+ move/copy merge. Move the "move messages into vtrash" code here
+ from mail-ops.c. Now all of the vtrash move/copy special casing is
+ in camel instead of half of it being here and half in mail/. (This
+ should also make it so that "Move to Trash" will work in filter
+ rules.)
+
+ * camel-vee-folder.c (vee_transfer_messages_to): Make this just
+ return an exception, since it will only be called when trying to
+ move/copy messages from one vfolder to another.
+ (vee_append_message): Add this too so we get a nicer error message
+ than the default "unimplemented" one in camel-folder.c.
+
+ * camel-digest-folder.c: Replace copy_messages_to and
+ move_messages_to with transfer_messages_to.
+
+ * camel-disco-folder.c: Likewise
+
+ * camel-disco-diary.c (camel_disco_diary_log,
+ camel_disco_diary_replay): replace MOVE/COPY with TRANSFER.
+
+ * providers/imap/camel-imap-folder.c (imap_transfer_offline,
+ imap_transfer_online, imap_transfer_resyncing): Update for
+ changes. (This ends up being a bit more complicated than it was
+ before for now, but later disconnected operation changes should
+ resimplify it.)
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message,
+ do_copy, do_move): Use transfer_messages_to instead of copy.
+
+2002-05-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-search.c (shell_exec): New filter function to pipe
+ a message to another program.
+ (run_command): Fixed some bugs to make this work.
+
+2002-05-09 Not Zed <NotZed@Ximian.com>
+
+ * camel-service.c (camel_service_disconnect): Instead of testing
+ for SERVICE_CONNECTED, we need to also handle SERVICE_CONNECTING
+ too, as it will often have setup some details before it failed.
+ Make it !DISCONNECTED (and !DISCONNECTING for recursive calls,
+ which happen). Fixes #23782, and maybe also #21604 and many other
+ random crashes.
+
+2002-05-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-digest-store.c (digest_setv): Implemented.
+ (digest_getv): Implemented.
+
+ * camel-disco-store.c (disco_setv): Implemented.
+ (disco_getv): Implemented.
+
+ * camel-remote-store.c (remote_store_setv): Implemented.
+ (remote_store_getv): Implemented.
+
+ * camel-transport.c (camel_transport_class_init): Implemented.
+ (transport_setv): Implemented.
+ (transport_getv): Implemented.
+
+ * camel-store.c (store_setv): Implemented.
+ (store_getv): Implemented.
+
+ * camel-service.c (service_setv): Implemented.
+ (service_getv): Implemented.
+
+ * providers/pop3/camel-pop3-store.c (pop3_try_authenticate):
+ camel_pop3_engine_iterate doesn't return the state, it returns -1
+ on fail, 0 when finished processing request or >0 if more ops are
+ in the queue, so don't check status against CAMEL_POP3_STATE_OK,
+ instead check pcp->state against that.
+
+2002-05-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-object.h: s/class/klass for arguments so that c++
+ developers don't complain later.
+
+2002-05-07 Dan Winship <danw@ximian.com>
+
+ * camel-object.c (camel_object_class_cast): Fix a crash in a
+ g_warning.
+
+2002-05-07 Not Zed <NotZed@Ximian.com>
+
+ * camel-remote-store.c (remote_send_string): Check for LOGIN xxxx
+ as well if debug is on, so we dont print passwords to evolution
+ logs.
+
+ * providers/imap/camel-imap-utils.c (imap_is_atom_char): This was
+ really broken. 1. isprint() is locale dependent, and 2. it looked
+ up an 8 bit value in a 7 bit table without truncating it. I've
+ removed the isprint() stuff and just put it directly into the
+ special table, which i've expanded to the right size too.
+
+ * providers/imap/*: Applied patch from Preston Elder
+ <prez@magick.tm> to make camel only use literals if it needs to
+ for simple strings. Changed slightly to use imap_is_atom() and
+ more consistent formatting.
+ * providers/imap/camel-imap-utils.c (imap_is_atom): Changed from
+ imap_needs_quoting().
+
+ ** Merged in camel-object2 branch. Simpler camelobject
+ implementation + object args interface.
+
+ * camel.c (camel_init): Call camel_object_get_type() to make sure
+ camel_object_type is initialised.
+
+ * camel-object.h (CAMEL_OBJECT_TYPE): Changed to return global
+ camel_object_type pointer, not call camel_object_get_type.
+
+2002-05-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): If
+ the pop3 command status is -1, then we probably have a TCP error
+ (?) so set a SYSTEM exception so our caller can distinguish
+ between a "bad password" and a "tcp error".
+ (pop3_connect): Only uncache the password on "bad password"
+ errors.
+
+ * camel-pgp-mime.c (pgp_mime_part_sign_prepare_part): Use
+ CamelMimeFilterBestenc to get a more appropriate encoding rather
+ than just blindling assigning QP.
+
+ * providers/imap/camel-imap-folder.c (do_append): Call
+ camel_mime_message_encode_8bit_parts() which fixes bug #10885.
+
+ * camel-tcp-stream-raw.c (socket_connect): Don't bother with
+ counting down the timeout.
+
+2002-05-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-stream-fs.c (stream_read): Same fix as the tcp stream.
+ (stream_write): Again here. Just like tcp stream's stream_write(),
+ also make sure to save errno before calling fcntl to restore the
+ fd flags.
+
+ * camel-tcp-stream-raw.c (stream_read): Handle EINTR errors for
+ select().
+ (stream_write): Same and also preserve errno when setting the fd
+ flags back. If w == -1, return -1.
+
+2002-05-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (header_decode_mailbox): Fixed the fix for
+ stupidly-broken-mailer bug #5 to work when multiple unescaped
+ characters were in a row. Fixes bug #24140.
+
+ * camel-tcp-stream-raw.c (socket_connect): Check select() for
+ EINTR errors.
+
+ * camel-pgp-context.c (crypto_exec_with_passwd): Change the order
+ of some code so that we check if the select() failed before we
+ check for user-cancellation.
+
+ * camel-service.c (camel_gethostbyname): Check for EINTR when
+ select()ing.
+ (camel_gethostbyaddr): Same.
+
+2002-04-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-provider.c (camel_provider_auto_detect): Now takes a
+ CamelURL argument rather than a GHashTable *settings argument.
+
+2002-04-29 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-store.c (get_folder_info): We want
+ to set unread_count to get_unread_message_count, not
+ get_message_count(). Might fix #17174. Also removed FIXME: as it
+ was fixed.
+
+2002-04-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/Makefile.am: Don't link to libibex.a anymore.
+
+ * providers/nntp/Makefile.am: Same.
+
+ * providers/imap/Makefile.am: And again here.
+
+ * camel-store-summary.h: No longer want to #include
+ <libibex/ibex.h>
+
+ * camel-provider.c (camel_provider_auto_detect): New function to
+ auto-detect configuration settings.
+
+2002-04-26 Not Zed <NotZed@Ximian.com>
+
+ * camel-block-file.c (block_file_validate_root): Remove the
+ excessive \n's, after printfs.
+
+ * camel-text-index.c (text_index_compress_nosync): @!#$@#$!@$#!.
+ Since the rename op was fixed, this broke compression's rename,
+ resulting in the index 'vanishing' after every compress
+ (i.e. after every reindex). Fix this code to account for the
+ fixed rename operation.
+
+2002-04-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_rcpt): Don't put a
+ space between the "RCPT TO:" and the "<recipient>" strings -
+ rfc0821 was not clear on this but it seems rfc2821 defines a
+ grammar excluding that SP.
+ (smtp_mail): Same.
+
+2002-04-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-local-provider.c
+ (camel_provider_module_init): Configure the default paths for mh,
+ mbox, maildir, spools, etc.
+
+ * camel-provider.h: Add a CAMEL_PROVIDER_CONF_LABEL enum and
+ define some default CamelProviderConfEntry macros.
+
+2002-04-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-folder.c (pop3_refresh_info): Free the
+ LIST pop3 command.
+
+ * camel-data-cache.c (data_cache_finalise): Free the cdc->path.
+
+ * camel-multipart.c (write_to_stream): Don't g_return_val_if_fail
+ here if the boundary is an empty string. See bug #23676 for
+ details. The way I see it, we have 2 options: 1) leave this fix
+ the way it is, thus allowing multipart boundaries to be
+ empty-strings; or 2) make camel_multipart_get_boundary() change
+ the boundary to something legal if the boundary is an
+ empty-string. Since the parser should be able to handle an
+ empty-string boundary *and* more importantly because we want to
+ keep the same boundaries as the original raw message so as to be
+ able to verify multipart/signed parts, I vote for solution #1.
+
+2002-04-19 Not Zed <NotZed@Ximian.com>
+
+ * devel-docs/camel-index.txt: Start of a white-paperish document
+ describing camel-index and older libibex.
+
+2002-04-18 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-store.c (rename_folder): If we get a
+ failure, make sure we set an exception.
+
+ * camel-text-index.c (camel_text_index_rename): If the file
+ doesn't exist, just assume it never did, dont return failure.
+ (text_index_rename): Add '.index' to the path name we're using,
+ since we dont get it passed in.
+
+ * camel-folder-search.c (check_header): When doing a contains
+ match, split the words and perform an and on it.
+ (match_words_messages): If we have an index, but were forced to do
+ a full search, first lookup a subset of messages using
+ the index and a simplified word set. Only do a manual search of
+ this subset.
+
+2002-04-17 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-search.c (match_message_index): Changed to take a
+ utf8 string not a regex pattern.
+ (match_words_index): Matches against a camel_search_words list.
+ (match_words_1message): Matches a single message against a
+ camel_search_words list.
+ (match_words_message): Same, but gets the message from the folder
+ for you.
+ (match_words_messages): Matches a list of messages against a words
+ list.
+ (search_body_contains): Rewritten to handle multiple word
+ searches. For #23371.
+
+ * providers/imap/camel-imap-search.c (sync_match): Split words
+ when searching, to support multiple search words. Also, try
+ searching specifying charset of utf8 if we can, if that fails,
+ fall back to not specifying charset. TODO: It should translate
+ the strings into the locale default charset?
+
+ * providers/imap/camel-imap-store.c (connect_to_server): Added new
+ cap - utf8_search, if set, we tell the server we're searching
+ using utf8, otherwise we dont (incorrectly, since we always use
+ utf8 to search).
+
+ * camel-search-private.c (camel_ustrstrcase): Make this class public.
+ (camel_search_words_split): Split a word into multiple words based
+ on whitespace, and keep track of whether the word is simple
+ (indexable directly), or not.
+ (camel_search_words_free): Free 'em.
+
+2002-04-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-vee-folder.c (vee_search_by_expression): If the vee-folder
+ is the unmatched, we don't have our own expression so we cannot
+ merge them. Instead, just use the expression passed in. This fixes
+ a Null-Pointer-Read crash on Solaris systems at least.
+
+2002-04-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder): Get
+ rid of an unused variable.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): Use
+ camel_gethostbyaddr since gethostbyaddr is not reentrant.
+
+ * camel-http-stream.c (http_connect): Updated after the rename of
+ camel_get_host_byname.
+
+ * camel-service.c (camel_gethostbyname): Renamed.
+ (camel_gethostbyaddr): New cancellable/reentrant version of
+ gethostbyaddr.
+
+2002-04-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-spoold-store.c: Added #include
+ <sys/types.h> for dirent.h which needs it on MacOS X.
+
+ * providers/local/camel-maildir-store.c: Same.
+
+ * providers/nntp/camel-nntp-store.c: Same.
+
+ * providers/imap/camel-imap-message-cache.c: Same.
+
+ * camel-provider.c: Same.
+
+ * camel-data-cache.c: Same.
+
+2002-04-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * broken-date-parser.c (datetok): Treat commas as token
+ delimeters.
+ (WEEKDAY_CHARS): Use full weekday names in case the broken mailer
+ used the full names.
+ (MONTH_CHARS): Same as above but for months.
+
+2002-04-15 Not Zed <NotZed@Ximian.com>
+
+ * *.c: Fix callers for api changes to camel-object, mainly
+ declare_event->add_event, and classfuncs->klass, and a couple
+ of missing #include <config.h>'s
+
+ * camel-arg.[ch], Makefile.am: New support code for
+ camel_object_get/set arg.
+
+ * *.h: Fixed all uses of get_type to return a CamelType rather
+ than a guint (now a pointer).
+
+ * camel-object.[ch]: Major cleanup of object implementation. Also
+ added a get/set interface, and some debugging options.
+
+2002-04-11 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-summary.c (spool_summary_sync_full):
+ If the last message(s) were deleted, and we had any messages
+ output, account for the lost \n of the following From line by
+ adding an extra \n. fix for #8214.
+
+2002-04-10 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-part-utils.c (convert_buffer): If we get a 0 length
+ input, return a 0 lenght output as valid - fixes bugs with some
+ iconv impl and its simpler anyway.
+
+2002-04-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c: Set the UID_SET_LIMIT value
+ to 4096. I ran into an issue tonight where apparently the IMAP
+ server changed the UIDVALIDITY and so Evo needed to re-fetch all
+ headers and it was trying to send a uid set of some 25k (yes, I
+ have a very large INBOX). Anyways, it was set to unlimited
+ before. Courier IMAPd can safely handle up to ~16k per token, but
+ UW IMAPd can only handle 8k per command-line, so I set it to 4k
+ just to be safe.
+
+2002-04-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part-utils.c (convert_buffer): Fixed a bug that would
+ miscalculate how much data to copy into the GByteArray (negative
+ value) thus causing a segfault. Also optimized it while I was at
+ it.
+
+2002-04-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (camel_store_init): Make the folder_lock
+ recursive. See bug #22363 for details. Basically,
+ get_folder_info() is requesting a diary folder which in turn
+ connects which requests then calls get_folder() but deadlocks
+ because get_folder_info already holds the lock.
+
+ * camel-mime-message.c (camel_mime_message_set_date): Don't adjust
+ the timezone offset if we used tm.tm_gmtoff because it is already
+ adjusted.
+
+2002-04-09 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-part.c (construct_from_parser): If we get multiple
+ Content-Type header values, change subsequent headers to
+ X-Invalid-Content-Type so it doesn't wreck processing. This fixes
+ the reported case in #18929, but i dont know if it fixes the
+ original posters problems.
+
+2002-04-08 Not Zed <NotZed@Ximian.com>
+
+ * camel-vtrash-folder.c (vtrash_move_messages_to): If we find
+ we're moving from the vtrash to another folder, we need to convert
+ the uid from a vfolder uid to the source uid (+8). Fix for
+ #20886. Also changed to batch multiple moves to different folders
+ so they are done as efficiently as possible rather than one at a
+ time.
+
+ * camel-mime-utils.c (base64_decode_step): If we only get passed
+ '=', we back track only if we actually output any data. Fix for
+ #21716.
+ (quoted_decode): Pass out size_t instead of int, and use 0 instead
+ of -1 for error since its not signed. This will fix similar bug
+ to above in different circumstances since the result is taken as
+ unsigned. This is only an internal func.
+ (quoted_encode): Return size_t just for consistency.
+
+ * camel-block-file.c (block_file_validate_root): Comment out the
+ debug and move it into a warning when the validation fails.
+
+2002-04-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (uuencode_close): Don't count our filler when
+ encoding our line-length octet.
+
+2002-04-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-http-stream.c (http_get_headers): Don't get the statuscode
+ here anymore.
+ (http_method_invoke): Use a User-Agent header and do basic proxy
+ authentication.
+ (stream_read): Handle redirects.
+ (camel_http_stream_set_user_agent): New function to allow client
+ to set the User-Agent string.
+ (camel_http_stream_set_proxy): New function for setting the proxy
+ server.
+ (camel_http_stream_set_proxy_authrealm): New function for setting
+ the proxy auth realm.
+ (camel_http_stream_set_proxy_authpass): New function for setting
+ the proxy auth password.
+
+2002-04-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.c (message_info_new): Simplified since we
+ can now decode in-reply-to without getting extra cruft. Get rid of
+ the FIXME about having to check scan->id because of the
+ possibility of it being NULL, this can no longer happen.
+
+ * camel-mime-utils.c (header_references_inreplyto_decode): New
+ function to decode in-reply-to headers. Only grabs the first thing
+ that looks like a message-id and then returns.
+ (header_references_decode): Loop calling
+ header_references_decode_single (a new internal function).
+
+2002-04-04 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-search.c (imap_body_contains): If
+ (body-contains) is not passed any arguments, return empty/false.
+ Fixes a crash exposed by #15001.
+
+ * camel-remote-store.c (remote_connect): Reset the keepalive
+ timeout to 10 minutes rather than the 30 seconds I was using for
+ testing.
+
+2002-04-03 Dan Winship <danw@ximian.com>
+
+ * camel-provider.h (CamelProvider): make service_cache be an array
+ of CAMEL_NUM_PROVIDER_TYPES elements so you can have a single
+ provider offer both stores and transports. (Eg, Exchange, NNTP)
+
+ * providers/imap/camel-imap-provider.c: Don't initialize
+ service_cache here. (The session code can do it itself since the
+ url_hash and url_equal functions are stored as part of the
+ provider.)
+
+ * providers/nntp/camel-nntp-provider.c: Likewise.
+
+ * providers/local/camel-local-provider.c: Likewise.
+
+ * providers/pop3/camel-pop3-provider.c: Likewise.
+
+ * providers/sendmail/camel-sendmail-provider.c: Likewise.
+
+ * providers/smtp/camel-smtp-provider.c: Likewise.
+
+ * camel-session.c (register_provider): Initialize the provider's
+ service cache(s) here.
+ (camel_session_class_init): Don't initialize.
+ vee_provider.service_cache here.
+ (camel_session_destroy_provider): Update to destroy multiple
+ service_caches.
+ (service_cache_remove, get_service): Tweak these a bit to deal
+ with multiple service_caches.
+
+2002-04-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (set_errno): Handle a ton more nspr i/o
+ errno's.
+ (stream_connect): Act as if we are doing a non-blocking
+ connect. This is to try and work around bug #15120 where users get
+ an EINPROGRESS error. Maybe importing a PRFileDesc into SSL mode
+ automagically makes it non-blocking? I dunno.
+
+2002-04-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.c (message_info_new): Updated the
+ construction of the references to match JWZ's updated algorithm
+ initialization (ie, append any In-Reply-To reference onto any
+ References header and never take more than a single message-id
+ from the In-Reply-To header since anything after the first will
+ probably just be email addresses). Fixes bug #1336.
+
+2002-04-03 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): Turn indexing back on, fingers
+ crossed ...
+
+ * camel-block-file.c (sync_nolock): #!@$@$#@~#$
+ DF@#$!Q@$#!@$#!#%. Well it helps if we're iterating a list to
+ iterate the node pointer ...
+
+ * camel-text-index.c (text_index_sync): Sync the key tables
+ explcitly.
+ (text_index_sync): Debug out frag info.
+ (camel_text_index_dump): Added a (rather large, but optional) raw
+ dumping mode for debugging purposes.
+
+ * camel-partition-table.c (camel_key_table_finalise): Sync root
+ block when done.
+ (camel_key_table_sync): New function, sync key table (root) explicitly.
+ (camel_partition_table_sync): Method to explicitly sync the
+ partition table.
+
+2002-04-02 Not Zed <NotZed@Ximian.com>
+
+ * camel-block-file.c (camel_block_file_free_block): Mark root
+ block dirty when we change it (this function isn't used yet
+ anyway).
+
+ * camel-text-index.c (text_index_add_name_to_word): Touch the root
+ block when we modify the counts. Also, abort processing on any
+ errors.
+ (text_index_sync): Fix typo in comments. Sync the block file
+ inside the lock.
+ (text_index_compress_nosync): Lock the old index while we're
+ compressing.
+ (text_index_compress_nosync): Remove the bogus while() at the end
+ of the while() loops! Also plug a memleak - records weren't
+ freed.
+ (text_index_rename): Lock around rename op.
+ (text_index_add_name): More typos.
+ (text_index_sync): Touch root when changing it.
+ (text_index_add_name): "
+ (text_index_delete_name): "
+ (camel_text_index_new): Touch root if we change it.
+ (text_index_cursor_reset): Make sure we NULL pointers after we
+ free them (nothing uses this yet).
+
+ * camel-partition-table.c (hash_key): Remove some debug
+ accidentally left in.
+ (camel_partition_table_add): When linking in the next block list,
+ set the right previous pointer.
+ (camel_key_table_add): Simplify the 'left' calculation (it was
+ already ok though).
+ (camel_key_table_next): Initialise returns before processing.
+ Broaden the lock slightly, and simplify validity calculations.
+
+ * providers/imap/camel-imap-store.c (imap_keepalive): Put back in
+ the exception setup stuff i disabled for debugging.
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): Temporarily disable indexing.
+
+2002-03-28 Not Zed <NotZed@Ximian.com>
+
+ * camel-partition-table.c (camel_key_table_lookup): Change range
+ checking assert to a warning.
+
+ * providers/pop3/camel-pop3-folder.c (pop3_finalize): Make sure we
+ flush out all outstanding commands before finalising, stops being
+ finalised while outsanding requests are processed by the store
+ finalise.
+ (pop3_get_message): Instead of pre-fetching all messages, just
+ pre-fetch a maxiumum number at any one time, stops us running out
+ of cache fd's.
+
+ * providers/nntp/camel-nntp-folder.c (nntp_folder_init/finalise):
+ Setup priv data + locks, & free.
+
+ * providers/imap/camel-imap-folder.c (imap_rescan): Batch all
+ message_chagned events into a single folder_changed event
+ (otherwise updates can be >>> expensive, like >5 hours for 80K
+ messages changing!). Alternately it could use folder
+ freeze/unfreeze perhaps.
+
+2002-03-27 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_keepalive): Pass an
+ exception to called code so it behaves properly since it uses the
+ passed exception to check returns.
+
+2002-04-01 Dan Winship <danw@ximian.com>
+
+ * providers/imap/Makefile.am (libcamelimap_la_LDFLAGS): Use
+ -avoid-version instead of -version-info 0:0:0, and specify
+ -module. (From Max Horn <max@quendi.de>).
+
+ * providers/local/Makefile.am (libcamellocal_la_LDFLAGS): Likewise.
+
+ * providers/nntp/Makefile.am (libcamelnntp_la_LDFLAGS): Likewise.
+
+ * providers/sendmail/Makefile.am (libcamelsendmail_la_LDFLAGS):
+ Likewise.
+
+ * providers/smtp/Makefile.am (libcamelsmtp_la_LDFLAGS): Likewise.
+
+ * providers/pop3/Makefile.am (libcamelpop3_la_LDFLAGS): Likewise.
+ Also remove $(KRB4_LDFLAGS) since KPOP is gone.
+ (INCLUDES): and $(KRB4_CFLAGS)
+
+2002-03-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (do_copy): We now have to check to make
+ sure that p->message is non-NULL because we only load the message
+ when we have to.
+ (do_move): Same here.
+
+2002-03-28 Dan Winship <danw@ximian.com>
+
+ * camel-transport.c (camel_transport_send_to): Change the message
+ arg to a CamelMimeMessage instead of a CamelMedium. Even the NNTP
+ provider returns CamelMimeMessages, and we're never going to
+ support anything more exotic than that. Also do a few more
+ g_return_if_fails here instead of in the providers.
+ (camel_transport_can_send): No longer needed.
+ (camel_transport_send): Remove this too. It wasn't being used any
+ more, and it doesn't behave exactly the same in sendmail and smtp.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_send,
+ smtp_can_send): Gone.
+ (smtp_send_to): Update for arg change.
+ (smtp_data): Make this take a CamelMimeMessage too.
+
+ * providers/sendmail/camel-sendmail-transport.c (sendmail_send,
+ sendmail_can_send): Gone.
+ (sendmail_send_to): Update for arg change, and merge in the part
+ that used to be shared with sendmail_send.
+
+2002-03-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder):
+ Construct the source_url the right way. The previous way was
+ generating urls like pop://fejj@ximian.com;keep_on_server/inbox
+ which is wrong.
+
+2002-03-26 Not Zed <NotZed@Ximian.com>
+
+ * camel-text-index.c (text_index_normalise): Changed to use just
+ g_utf8_strdown instead of utf8_normalise, to match the indexing
+ code. utf8_normalise is just far too expensive (saves approx 25%
+ total processing).
+
+2002-03-25 Not Zed <NotZed@Ximian.com>
+
+ * camel-text-index.c (text_index_add_name): When we add a new
+ name, up all of the cache limits, because we're probably going to
+ be adding more.
+ (text_index_sync): Drop the cache limits back down again, we dont
+ need them when looking words up.
+
+ ** MERGE camel_index branch.
+
+ * camel-text-index.[ch]: Added files i forgot to add (eep nearly
+ lost all this work!)
+
+ * camel-block-file.c (sync_nolock): Fix an infinite loop in syncing.
+
+2002-03-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.c (camel_message_info_new_from_header): Use
+ the date in the received header for the received_date.
+
+2002-03-22 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): Use the right option to remove the
+ index file and reset the index file on creation.
+ (camel_local_folder_construct): Remove any existing '.ibex' files
+ - these are the old format index files.
+
+ * camel-block-file.c (camel_block_file_rename): Lock io lock while
+ renaming.
+ (camel_key_file_rename): Lock around rename.
+ (block_file_validate_root): Implement sync flag checking.
+ (camel_block_file_touch_block): Turn off the sync flag if we're
+ touching any non-root block and write it to disk. Shoudl this
+ fsync()?
+ (sync_nolock): sync the root block only if we need to.
+
+ * providers/local/camel-local-store.c (rename_folder): Re-enable
+ index rename code. Not sure how race-free it is though.
+ (delete_folder): Delete the index file properly.
+
+ * camel-partition-table.c (camel_key_table_lookup): Initialise
+ output values to 0 before doing anything.
+ (camel_key_table_add): Do some range-checking on values.
+
+ * camel-text-index.c (text_index_compress): Changed to call sync here.
+ (text_index_compress_nolock): and not here - stops a recursive
+ sync call when sync performs a compress also.
+ (text_index_compress_nolock): Change to _nosync, since the locking
+ is irrelevent (recursive lock). Fixed callers.
+ (text_index_add_name_to_word): If we get a failure with key table
+ ops, fail immediately.
+ (text_index_compress_nosync): Likewise.
+ (text_index_write_name): If the nameid is 0, do nothing.
+ (text_index_add_name): If we can't get a keyid, dont add it to the
+ partition table.
+ (camel_text_index_remove): Function to delete an index file.
+ (text_index_compress_nosync): Clean up temp files when done.
+
+ * camel-folder-search.c (match_messages_index): New function,
+ split from body_contains, matches a regex against all words in an
+ index.
+ (match_message_index): Similar to above but matches against an
+ individual message.
+ (search_body_contains): Changed to use above functions for
+ matching - substring matches should now work on indexed data.
+
+2002-03-21 Not Zed <NotZed@Ximian.com>
+
+ * camel-index.c (camel_index_words/names): New virtual
+ methods/stubs to get a cursor of all words and names.
+
+ * camel-text-index.c (text_index_compress_nolock): Split from
+ text_index_compress, so we can call the compressor while locked
+ also, removed lock calls.
+ (text_index_compress): Changed to stub which calls
+ text_index_compress_nolock.
+ (camel_text_index_key_cursor_new): New object to iterate through
+ a key table.
+ (text_index_words, text_index_names): Implement virtual functions
+ for iterating through all words or names.
+
+ * camel-block-file.c: Turn off some debug.
+
+2002-03-20 Not Zed <NotZed@Ximian.com>
+
+ ** New body index implementation.
+
+ * camel-index*: Code for camel index, a new class to replace ibex.
+
+ * camel-block-file.[ch]: block-based and link based
+ filesystem-in-a-file classes.
+
+ * camel-partition-table.[ch]: An implementation of a partition
+ table (automatically extending on-disk hash-table using ideal
+ hash), and a key-table, a key<>name mapping table. Used by
+ camelindex.
+
+ * providers/local/*, camel-folder-summary.[ch]: Changed to use
+ camel-index interface rather than ibex.
+
+2002-03-05 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-summary.c (maildir_summary_check):
+ Do progress reporting of operations.
+ (maildir_summary_sync): Same here.
+
+2002-03-04 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spoold-store.c (scan_dir): Kill a warning
+ with a cast.
+
+ * providers/local/camel-*.c: Changed for ibex->camelindex.
+
+ * camel-folder-search.c (camel_folder_search_set_summary): Init
+ summary_hash to point to 'static' uid strings.
+ (search_body_contains): Use the static uid memory to return
+ results rather than the values from the index library.
+
+ * camel-folder-search.[ch]: Changed to use camelindex object.
+
+ * camel-folder-summary.c (summary_build_content_info_message):
+ Use a stream to index content, also filter html mail first.
+ (camel_folder_summary_info_new_from_message): Use a stream
+ filtered to index content.
+ (main): Removed the test main code. Added headers for open call
+ (ibex must've had them before).
+
+ * camel-folder-summary.[ch]: Changed from ibex to CamelIndex.
+
+ * camel-mime-filter-index.c (camel_mime_filter_index_finalize):
+ Unref index.
+
+ * camel-mime-filter-index.[ch]: Changed from ibex to CamelIndex.
+
+2002-03-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (header_encode_param): Fix this to work
+ right. We need to convert the input buffer to the charset we claim
+ in the encoded param (duh).
+
+2002-03-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c
+ (connect_to_server_wrapper): Updated to use the same logic as the
+ POP code.
+
+ * providers/pop3/camel-pop3-store.c (connect_to_server): No longer
+ takes a stls_supported argument since we no longer need it with
+ the new logic.
+ (connect_to_server_wrapper): New logic: First try connecting to
+ the SSL port (995 by default), if that fails with
+ SERVICE_UNAVAILABLE, then we attempt to connect (to port 110 by
+ default) and try to use STARTTLS.
+
+2002-03-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder.h:
+
+ * camel-private.h: Don't allow any empty structs. If
+ !ENABLE_THREADS, provide a gpointer dummy member. Fixes bug #6382.
+
+2002-03-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_auth): Added a
+ work-around for SMTP servers that can't read the RFCs and thus
+ implement SASL incorrectly. Oh well, that's life in the world of
+ mail clients I guess.
+
+2002-03-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-digest-store.c (camel_digest_store_new): Now takes a url
+ argument.
+
+ * camel-digest-folder.c (digest_add_multipart): Fixed some memory
+ corruption and also modified to use CAMEL_IS_MIME_MESSAGE() rather
+ than comparing content-type strings.
+ (digest_get_message): Fixed a logic blooper.
+
+ * camel-folder-summary.c (camel_message_info_new_from_header): Set
+ the date fields of the CamelMessageInfo as well. This may even fix
+ some filter-related bugs where the user was trying to compare
+ dates.
+
+2002-03-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-digest-store.c: A pretty empty store implementation to be
+ the parent store of a CamelDigestFolder.
+
+ * camel-digest-folder.c: Updated to reference it's parent store.
+
+2002-03-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-digest-folder.c (camel_digest_folder_new): Allow any leaf
+ part to be a message/rfc822 part.
+ (digest_get_uids): Recurse the mime structure and add all
+ message/rfc822 parts and use a uid scheme similar to IMAP's mime
+ part naming convention.
+ (digest_get_message): Decode the uid to get the correct mime part.
+
+2002-03-11 Ettore Perazzoli <ettore@ximian.com>
+
+ * camel-mime-utils.c: Change the order of the mailing list magic
+ patterns so that the more mailing-list specific ones are on the
+ top.
+
+2002-03-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ These fixes should fix bug #21737.
+
+ * providers/smtp/camel-smtp-transport.c
+ (connect_to_server_wrapper): Same as with the POP code.
+
+ * providers/pop3/camel-pop3-store.c (connect_to_server_wrapper):
+ Slight restructuring of the if-statements for the USE_SSL_ALWAYS
+ case so that we can't possibly return TRUE unless we really did
+ connect successfully.
+
+2002-03-10 Dan Winship <danw@ximian.com>
+
+ Rename the OpenSSL implementation of things to match the NSS
+ implementation so that callers don't need to care which one is
+ being used.
+
+ * camel-tcp-stream-openssl.c: Implement CamelTcpStreamSSL, not
+ CamelTcpStreamOpenSSL. Rename methods as well. Replace the
+ camel-tcp-stream-openssl.h include with camel-tcp-stream-ssl.h.
+
+ * camel-tcp-stream-openssl.h: Gone.
+
+ * camel-tcp-stream-ssl.c: Add a note explaining that this
+ implementation is only used for NSS, and that OpenSSL's
+ implementation is in another file. (Should probably do some CVS
+ renaming magic at some point.)
+
+ * camel-http-stream.c (http_connect): Remove OpenSSL refs; the
+ previously-NSS-specific code works for both now.
+
+ * camel-remote-store.c: Likewise.
+
+ * providers/smtp/camel-smtp-transport.c: Likewise.
+
+ * providers/pop3/camel-pop3-store.c: Likewise.
+
+ * Makefile.am (libcamelinclude_HEADERS): Remove
+ camel-tcp-stream-openssl.h
+
+2002-03-10 Dan Winship <danw@ximian.com>
+
+ * camel-tcp-stream.c (camel_tcp_stream_get_socket): Remove this:
+ it couldn't be generically used, because different subclasses
+ returned entirely different types of data.
+ (camel_tcp_stream_get_local_address,
+ camel_tcp_stream_get_remote_address): Add these to replace what
+ get_socket was being used for.
+ (camel_tcp_address_new, camel_tcp_address_free): Utility functions
+ for get_{local,remote}_address.
+
+ * providers/smtp/camel-smtp-transport.c: Change localaddr to a
+ CamelTcpAddress *.
+ (connect_to_server): Call camel_tcp_stream_get_local_address to
+ get the local IP address.
+ (smtp_disconnect): free localaddr.
+ (smtp_helo): Update for localaddr change.
+
+ * camel-tcp-stream-raw.c (stream_get_socket): Remove
+ (stream_get_local_address, stream_get_remote_address): Implement.
+
+ * camel-tcp-stream-ssl.c (stream_get_socket): Remove
+ (stream_get_local_address, stream_get_remote_address): Implement.
+
+ * camel-tcp-stream-openssl.c (stream_get_socket): Remove
+ (stream_get_local_address, stream_get_remote_address): Implement.
+
+2002-03-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-provider.c
+ (camel_provider_module_init): Don't call
+ camel_remote_store_get_authtypes since we no longer subclass
+ camel-remote-store.
+
+ * providers/pop3/camel-pop3-engine.c: Added STARTTLS to the
+ capabilities to look for.
+ (camel_pop3_engine_reget_capabilities): New function to re-get
+ capabilities.
+
+ * providers/pop3/camel-pop3-store.c: Updated to not subclass
+ CamelRemoteStore.
+ (connect_to_server): Rewritten to not depend on CamelRemoteStore's
+ connect implementation. Also added support for STLS (aka
+ STARTTLS).
+
+2002-03-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_sign): Add support for
+ hash type RIPEMD160.
+
+ * camel-cipher-context.h: Add RIPEMD160 hash type.
+
+ * camel-pgp-context.c (pgp_sign): Updated to consider hash
+ function for pgp5 and pgp6.
+ (pgp_clearsign): Same.
+
+ * camel-tcp-stream-openssl.c (stream_read): Add a timeout on the
+ select.
+ (stream_write): Same.
+
+2002-03-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (connect_to_server): Fix
+ to work with OpenSSL.
+
+ * camel-tcp-stream-openssl.c: compile fixes.
+ (camel_tcp_stream_openssl_enable_ssl): Check to make sure that the
+ sockfd != -1, it's not enough to check that it is non-zero. Also
+ set the sockfd to -1 on fail (open_ssl_connection will close the
+ sockfd on fail).
+
+2002-03-06 Dan Winship <danw@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_construct): Make
+ this compile.
+
+2002-03-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (save_ssl_cert): Removed. Glory glory
+ hallelujah!
+ (ssl_bad_cert): No longer calls ssl_save_cert or
+ ssl_cert_is_saved.
+
+2002-03-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_new_raw):
+ Start the ssl stream off in non-ssl mode (useful for STARTTLS).
+ (camel_tcp_stream_openssl_enable_ssl): New function to toggle an
+ ssl stream into ssl mode.
+ (open_ssl_connection): Close the sockfd on fail so our caller
+ doesn't have to - this also allows us to save the original errno.
+ (stream_connect): If we want ssl mode, do our ssl stuff.
+ (camel_tcp_stream_openssl_class_init): Init some SSL stuff here
+ instead of in open_ssl_connection since these only ever need to be
+ called once.
+ (stream_read): Only use SSL_read if we are in ssl mode.
+ (stream_write): Only use SSL_write if we are in ssl mode.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): Check for the
+ STARTTLS extension.
+ (connect_to_server): Try to use STARTTLS whenever possible rather
+ than the old way of doing things.
+ (connect_to_server_wrapper): Wrapper around connect_to_server() to
+ first try STARTTLS and then attempt normal SSL mode if we can't
+ connect via STARTTLS.
+
+ * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_enable_ssl): New
+ function to toggle an ssl stream into ssl mode.
+ (camel_tcp_stream_ssl_new_raw): Start the ssl stream off in
+ non-ssl mode (useful for STARTTLS).
+ (stream_connect): Only connect in SSL mode if required.
+
+2002-03-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-vtrash-folder.h:
+ * camel-vee-store.h:
+ * camel-vee-folder.h:
+ * camel-stream-null.h:
+ * camel-stream-filter.h:
+ * camel-store-summary.h:
+ * camel-news-address.h:
+ * camel-mime-utils.h:
+ * camel-mime-parser.h:
+ * camel-mime-filter-save.h:
+ * camel-mime-filter-linewrap.h:
+ * camel-mime-filter-index.h:
+ * camel-mime-filter-html.h:
+ * camel-mime-filter.h:
+ * camel-mime-filter-from.h:
+ * camel-mime-filter-crlf.h:
+ * camel-mime-filter-chomp.h:
+ * camel-mime-filter-charset.h:
+ * camel-mime-filter-bestenc.h:
+ * camel-mime-filter-basic.h:
+ * camel-internet-address.h:
+ * camel-folder-thread.h:
+ * camel-folder-summary.h:
+ * camel-folder-search.h:
+ * camel-filter-driver.h:
+ * camel-charset-map.h:
+ * camel-address.h: Add c++ armoring.
+
+ * camel-object.h: s/class/klass
+
+2002-03-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Reverted my
+ pgp/mime fixes here too.
+
+ * camel-mime-part.c (write_to_stream): Removed my pgp/mime raw
+ stream hack, this is causing problems such as some messages to not
+ displaying, view->source not working at all, etc.
+
+2002-02-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-parser.c: Changed offset variables from int's to
+ off_t's since the system may support large files.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Rearrange the
+ save filter stuff so that we save raw streams for all mime
+ parts. If the mime part turns out to be a multupart, then don't
+ bother saving the raw stream, we only need to save the raw stream
+ for leaf parts.
+
+2002-02-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.h: Don't #include camel-mime-filter-save.h,
+ we don't use it.
+
+ * camel-file-utils.c: Fixed a few 'might be used uninitialized'
+ warnings which were real problems.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Save the raw mime
+ stream for any/all signed parts.
+
+ * camel-mime-part.c (camel_mime_part_init): Initialize our raw
+ stream to NULL.
+ (camel_mime_part_finalize): Unref our raw stream, if we have one.
+ (write_to_stream): If we have a raw stream, write that out instead
+ of re-encoding.
+
+ * camel-mime-filter-save.[c,h]: Rewritten to save to a stream
+ rather than a file.
+
+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.
+
+2002-02-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-chomp.c (camel_mime_filter_chomp_new): New
+ stream filter that chomps excess trailing whitespace from the end
+ of the stream. This is needed to update the PGP/MIME code to
+ comply with rfc3156.
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_verify): Don't attach a
+ from filter, if it ain't from-filtered already, then we'll just be
+ breaking stuff. To become rfc3156 compliant, add a chomp filter
+ here.
+ (camel_pgp_mime_part_sign): Add a chomp filter here too.
+
+2002-02-27 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-part.c (init_header_name_table): Changed header
+ formatted table to contain a pointer to an output function, and
+ added in-reply-to and references headers.
+ (write_references): New function to write out references header,
+ folded properly. It only approximates based on the last >, but it
+ should be adequate and will also handle invalid headers.
+ (write_fold): Function to write out headers folded. Since this is
+ the default it isn't required.
+ (write_raw): Write out an already formatted header, e.g. most of
+ the rest.
+ (write_to_stream): Lookup header output function, if we have one,
+ use that, otherwise fold header using basic (dumb) function.
+
+ This is all for #14779. A better fix is probably do have the
+ headers always stored formatted, but that can wait.
+
+2002-02-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-digest-folder.c (camel_digest_folder_new): Allow all
+ multiparts that contain message/rfc822 attachments.
+ (digest_get_uids): Only assign uids to message parts.
+
+2002-02-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part.c (camel_mime_part_set_filename): Set the 'name'
+ parameter on the Content-Type too. Fixes bug #20779.
+
+2002-02-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_sign): Pass --always-trust to gpg
+ (requested by users).
+ (pgp_clearsign): Same.
+ (pgp_encrypt): Here too.
+
+2002-02-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): Since the
+ AUTH token sometimes uses '=' instead of whitespace, don't use
+ smtp_token_next here.
+
+2002-02-09 Not Zed <NotZed@Ximian.com>
+
+ * providers/pop3/camel-pop3-engine.c (get_capabilities): Duh, when
+ we grab the apop stamp it needs to include the <> as well, I even
+ read the rfc, silly me.
+
+ * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Doh,
+ when iterating the authtype list, it helps to goto the next node.
+ Found with help from miles.
+
+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.
+
+2002-02-07 Dan Winship <danw@ximian.com>
+
+ * camel-sasl-ntlm.c: Implementation of NTLM (aka "Secure Password
+ Authentication") auth, taken from soup.
+
+ * Makefile.am (libcamel_la_SOURCES, libcamel_la_HEADERS): Add
+ camel-sasl-ntlm.
+
+ * camel-sasl.c: Add refs to camel-sasl-ntlm.
+
+ * providers/imap/camel-imap-store.c (try_auth): Use
+ imap_next_word() to skip over the "+ " of the continuation rather
+ than just "resp + 2" since Exchange (incorrectly) returns "+"
+ instead of "+ " for an empty continuation response.
+
+2002-02-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.h: Remove the CAMEL_MESSAGE_NEEDS_REPLY
+ flag, we no longer will be using this.
+
+2002-02-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-http-stream.c (stream_read): Use camel_mime_parser_read to
+ read internal parser data.
+ (camel_http_stream_get_content_type): Implemented.
+ (http_method_invoke): Use HTTP/1.0 instead of 1.1
+
+ * camel-mime-utils.c (header_decode_int): Made public.
+
+ * camel-http-stream.[c,h]: Added. New stream for HTTP requests
+ (currently supported are GET and HEAD).
+
+ * camel-tcp-stream-ssl.c (stream_connect): Call set_errno
+ appropriately.
+
+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.
+
+2002-01-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-provider.c: Use "pop" instead of
+ "pop3" so current configurations continue to work.
+
+2002-01-30 Not Zed <NotZed@Ximian.com>
+
+ * camel-sasl-login.c: Changed name from "NT Login" to simply
+ "Login".
+
+ * providers/pop3/*: Entirely new pop implmentation, supporting
+ pipelining.
+
+2002-01-29 Not Zed <NotZed@Ximian.com>
+
+ * camel-data-cache.c (free_busy): We dont want to unref the
+ stream, instead, stop listening to the finalised events, and free
+ the path only.
+
+2002-01-25 Not Zed <NotZed@Ximian.com>
+
+ * camel-data-cache.c (stream_finalised): Remove the object from
+ the busy_stream hashtable, not the busy_path hashtable.
+
+2002-01-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Added
+ more kludge to an existing Exchange IMAP 5.5 kludge to work around
+ it returning multiple messages with the same UIDs.
+
+2002-01-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-message.c (process_header): Handle Resent headers
+ too.
+
+ * camel-mime-message.h: Added Resent-* #defines.
+
+ * camel-filter-driver.c (camel_filter_driver_remove_rule_by_name):
+ Use while (node->next) instead of while (node)
+
+ * 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.
+
+2002-01-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_construct):
+ (connect_to_server): Use flags rather than a bunch of gboolean
+ variables.
+ (smtp_connect): Same.
+ (smtp_mail): Here too. Use the enhanced status codes if available.
+ (smtp_data): And again here.
+ (smtp_helo): Finally here. Also detect the ENHANCEDSTATUSCODES
+ extension.
+ (smtp_rcpt): Use the enhanced status codes if available.
+ (smtp_rset): Here too.
+ (smtp_quit): And finally here.
+
+ * camel-transport.h: Removed gboolean supports_8bit since this is
+ pretty local to only SMTP for now.
+
+2002-01-24 Ettore Perazzoli <ettore@ximian.com>
+
+ * Makefile.am: Remove some old cruft.
+
+2002-01-24 Ettore Perazzoli <ettore@ximian.com>
+
+ * tests/folder/Makefile.am: s/MAILER_LIBS/EVOLUTION_MAIL_LIBS/.
+ * tests/message/Makefile.am: Likewise.
+ * tests/mime-filter/Makefile.am: Likewise.
+ * tests/misc/Makefile.am: Likewise.
+ * tests/smime/Makefile.am: Likewise.
+ * tests/stream/Makefile.am: Likewise.
+
+2002-01-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (do_beep): Call the beep callback
+ function.
+ (camel_filter_driver_set_system_beep_func): New function to set
+ the beep callback.
+
+2002-01-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_remove_rule_by_name):
+ New function to remove a filter rule by name.
+
+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.
+
+2002-01-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_mailbox_decode): New
+ function to decode an IMAP mailbox name from modified UTF-7
+ encoding to UTF-8.
+ (imap_mailbox_encode): New function to convert a mailbox name from
+ UTF-8 to IMAP's modified UTF-7 encoding.
+
+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.
+
+2002-01-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-basic.c (filter): If we don't want to corrupt
+ the uuencoded data by overwriting it with base64 decoded data
+ afterward, we need to add a break statement!
+
+ * camel-folder-summary.c (summary_build_content_info): Add code to
+ add a uu filter.
+ (camel_folder_summary_finalize): Unref the uuencode filter.
+
+2002-01-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-basic.c (filter): Fixed slight logic error to
+ find the uuencode begin line. Fixes bug #18754.
+
+2002-01-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_send_to): Updated to
+ match the new send_to API.
+ (smtp_send): Get the from address and pass that along to
+ smtp_send_to().
+
+ * providers/sendmail/camel-sendmail-transport.c
+ (sendmail_send_to): Updated to match the new send_to API.
+
+ * camel-transport.c (camel_transport_send_to): Now takes a from
+ argument too.
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Sort
+ the needheaders UID array and fixed to respect the
+ UID_SET_LIMIT. This should now finish the fixification of bug
+ #2529. There's still the possible issue that a command-line (The
+ only command-line I can think of that can still be too long is a
+ SEARCH command, but this can't possibly be fixed until we rewrite
+ the imap code to use Zucchi's ImapEngine idea).
+
+2002-01-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_expunge_uids_online):
+ Move the command-lock outside the loop.
+
+2002-01-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_expunge_uids_online):
+ Updated to use the new imap_uid_array_to_set() interface.
+ (imap_expunge_uids_resyncing): Same.
+ (do_copy): Here too.
+ (imap_update_summary): Added a FIXME comment to rewrite allowing
+ for a uid-set limitation.
+ (get_matching): Copy some of the logic over from
+ imap_uid_adday_to_set() to limit the length of the uid-set string.
+ (imap_sync_online): Added a comment to explain what is going on
+ with get_matching() since the behavior has changed slightly.
+
+ * providers/imap/camel-imap-utils.c (imap_uid_array_to_set):
+ Modify the interface so that we can limit the size of the uid set
+ string returned.
+
+2002-01-14 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-search.c (imap_body_contains):
+ Rewritten to use a cache for body searches when online. Will need
+ some heavy testing but so far seems to be beneficial.
+
+ * providers/imap/camel-imap-folder.c (imap_search_by_expression,
+ search_by_uids): dont initialise search object here.
+ (camel_imap_folder_new): Setup search object here with pointer to
+ cache dir.
+
+2001-12-01 Not Zed <NotZed@Ximian.com>
+
+ * camel-store-summary.[ch]: New class to store a store's folder
+ list in. Not yet completed.
+
+2002-01-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Kludge
+ around a bug in Exchange 5.5 that reports 2 messages with the same
+ UID. Fixes bug #17694. Replaces the fix from yesterday.
+
+2002-01-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-local-folder.c: If PATH_MAX doesn't exist,
+ use _POSIX_PATH_MAX.
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): If mi
+ is NULL, don't bother updating it. Should fix bug #17694.
+
+2002-01-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel.h: #include camel-mime-filter-tohtml.h
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Kludge
+ around Microsoft Exchange 5.5 (bug #5348) by forgetting our
+ currently selected folder and re-SELECTing it so that the Exchange
+ server has a chance to realise it has new messages.
+
+2002-01-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): If the mbox file is a symlink,
+ follow the symlink and get the One True Path so that we can
+ rewrite the mbox later without worrying about clobbering the
+ symlink.
+
+2002-01-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-search.c (TODO): There are a few sexp callbacks
+ that could be modified to use fms->info rather than using a
+ message object (like date and possibly mlist stuff) but *only* if
+ the date exists on the CamelMessageInfo object (since it may be
+ blank except for message flags).
+ (camel_filter_search_get_message): New internal convenience
+ function to make sure that the FilterMessageSearch has loaded the
+ message (and to load the message if this isn't the case).
+ (check_header): Call camel_filter_search_get_message().
+ (header_exists): Same.
+ (header_regex): Here too.
+ (header_full_regex): And here.
+ (body_contains): Again here.
+ (body_regex): Here too.
+ (get_sent_date): Here also.
+ (get_received_date): Same.
+ (get_source): Here if we need to.
+ (camel_filter_search_match): Now takes a callback function/data
+ pair for on-demand message loading so that we don't necessarily
+ have to load the message if the defined filter rules don't require
+ it.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder): Don't
+ bother fetching the message here, let
+ camel_filter_driver_filter_message() worry about this.
+ (get_message_cb): New utility callback to fetch a message.
+ (camel_filter_driver_filter_message): Only fetch the message if we
+ absolutely need it to get a CamelMessageInfo. Instead of passing a
+ message object to camel_filter_search_match(), pass get_message_cb
+ and some user_data so that the matching code can fetch the message
+ on demand.
+
+2002-01-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder.c (filter_filter): Flush the only-once actions.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message):
+ Don't increment a filtered_count here any longer.
+ (camel_filter_driver_reset_filtered_count): Removed.
+ (camel_filter_driver_get_filtered_count): Removed.
+ (do_beep): New action.
+ (play_sound): New action to play a sound
+ (do_only_once): Another new action.
+ (camel_filter_driver_finalise): Free the only_once hash if the
+ driver has not been "flushed".
+ (camel_filter_driver_flush): Flush all of the only-once actions.
+
+ * camel-charset-map.c: Moved windows-1251 to the end of the list
+ since it contains the euro and we'd prefer to use iso-8859-15 when
+ the euro is requested than a windows charset if possible.
+
+ * camel-charset-map-private.h: Regenerated.
+
+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.
+
+2002-01-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): Do more like what mutt
+ does so hopefully this'll fix bug #16363 and #16300.
+
+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.
+
+2001-12-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-address.h: Change the prototype for camel_address_get_type
+ to return a CamelType (since internally this is what it returns
+ and also in case we decide to write a replacement for the current
+ CamelObject it'd be easier to drop in).
+
+ * camel-internet-address.h: Same but for
+ camel_internet_address_get_type()
+
+ * providers/smtp/camel-smtp-transport.c (smtp_send_to): Updated to
+ use a CamelAddress of recipients.
+ (smtp_send): Since smtp_send_to now takes a CamelAddress
+ recipients argument, our lives have been simplified and we can now
+ just concat To/Cc/Bcc into a recipients addr and send away.
+
+ * providers/sendmail/camel-sendmail-transport.c
+ (sendmail_send_to): Updated to use a CamelAddress of recipients.
+
+ * camel-transport.c (camel_transport_send_to): Now takes a
+ CamelAddress argument for the recipient list rather than a GList.
+
+2001-12-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/Makefile.am: Remove the providerdir variable.
+
+ * providers/sendmail/Makefile.am: Same.
+
+2001-12-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-charset-map.c (camel_charset_iso_to_windows): New function
+ to map ISO charsets to the Windows charsets.
+
+ * camel-mime-part-utils.c (broken_windows_charset): Detect Windows
+ charsets.
+ (simple_data_wrapper_construct_from_parser): Simplify a tad and
+ also check for iso-8859-* charsets that are really Windows
+ charsets. Fixes bug #12631.
+
+2001-12-17 Dan Winship <danw@ximian.com>
+
+ * Makefile.am (INCLUDES): define CAMEL_PROVIDERDIR to be the
+ configure.in-defined camel_providerdir.
+
+ * providers/Makefile.am: Remove some outdated comments
+
+ * providers/imap/Makefile.am (camel_provider_LTLIBRARIES,
+ camel_provider_DATA): renamed from provider_LTLIBRARIES,
+ provider_DATA.
+
+ * providers/local/Makefile.am: Likewise
+
+ * providers/nntp/Makefile.am: Likewise
+
+ * providers/pop3/Makefile.am: Likewise
+
+ * providers/sendmail/Makefile.am: Likewise
+
+ * providers/smtp/Makefile.am: Likewise
+
+2001-12-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (get_content): Reverted my
+ previous changes here since it doesn't actually work afterall.
+
+ * providers/imap/camel-imap-wrapper.c (imap_wrapper_hydrate):
+ Update to do uudecoding when appropriate.
+
+2001-12-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (get_content): Try to use the
+ original boundary so luis will stop bugging me about "data
+ corruption". Also preserve other params in the multipart
+ content-type by dumping it to a string and setting it on the mime
+ part.
+
+2001-12-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c
+ (camel_filter_driver_reset_filtered_count): Reset the
+ filtered_count to zero.
+ (camel_filter_driver_get_filtered_count): Return the private
+ filtered_count value.
+ (camel_filter_driver_filter_message): Increment the
+ filtered_count.
+ (camel_filter_driver_set_shell_exec_func): New function to set the
+ shell-exec func.
+ (shell_exec): New ESExp filter action callback.
+
+2001-12-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_verify): Removed
+ x-inline-pgp-hack kludge because it doesn't work.
+ (camel_pgp_mime_part_decrypt): Same.
+
+2001-12-13 Chris Toshok <toshok@ximian.com>
+
+ * camel-data-cache.c: include stdlib.h (for alloca on freebsd) and
+ only include alloca.h if HAVE_ALLOCA_H is defined.
+
+2001-12-11 Zbigniew Chyla <cyba@gnome.pl>
+
+ Fixes #17085
+
+ * camel-charset-map.c: Added #include <errno.h>.
+
+ * camel-charset-map-private.h:
+ Recreated (following instructions from camel-charset-map.c)
+
+2001-12-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-object.c (camel_type_register): Keep a name-to-type hash
+ so that we can make sure that the type has not yet been registered
+ (prevents a race condition such as the one in bug #16559).
+
+ * camel-service.c (camel_service_connect): Make sure that the
+ connect_op is non-NULL before unregistering/unreffing it.
+
+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.
+
+2001-12-09 Jon Trowbridge <trow@ximian.com>
+
+ * camel-folder-summary.c: Add "NeedsReply" to the flag_names array
+ for CAMEL_MESSAGE_NEEDS_REPLY.
+
+ * camel-folder-summary.h: Added CAMEL_MESSAGE_NEEDS_REPLY flag.
+
+2001-12-07 Dan Winship <danw@ximian.com>
+
+ * camel-mime-message.c (camel_mime_message_set_date): Fix the
+ tm_gmtoff case (its sign is the opposite of "timezone"). Fixes
+ #14678
+
+2001-11-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-search.c (search_body_contains): Don't use regex
+ matching. Fixes bug #16227.
+
+ * camel-mime-message.c (best_encoding): Check the content-object's
+ mime type, not the mime part types. Should fix bug #15843.
+
+2001-11-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (get_content): Return NULL if
+ construct_from_stream fails.
+ (get_message): Same.
+ (get_message_simple): Here too.
+ (add_message_from_data): And here.
+
+2001-11-14 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (folder_changed_remove_uid): Use the uid
+ rather than vuid for unmatched. Also add the uid to unmatched if
+ it wasn't in the unmatched_uids table at all.
+ (folder_changed_change): If checking for added, if the new ones
+ dont match, then try to add them to unmatched. Fixes #6893.
+
+ * camel-folder-summary.c (camel_folder_summary_index): Change lock
+ order, always summary_lock before ref_lock.
+ (camel_folder_summary_array): "
+ (camel_folder_summary_uid): "
+ (camel_folder_summary_remove_uid): " Fixes a deadlock.
+
+2001-11-30 Not Zed <NotZed@Ximian.com>
+
+ * providers/nntp/camel-nntp-*.c: Completely new implementation of
+ NNTP.
+
+ Doesn't support subscriptions yet (lists all folders), but should
+ be more reliable (faster?), and has an integrated cache.
+
+ * camel-exception.c (camel_exception_new): Use e_memchunks for
+ exception blocks.
+ (camel_exception_free): Same.
+
+ * camel-data-cache.[ch]: New object for managing on-disk caches of
+ anything that can be stored in a camel-stream.
+
+ * camel-file-utils.c (camel_file_util_mkdir): New function, just a
+ nicer place to put this (than camel-store), should be removed from
+ camel-store.
+ (camel_file_util_safe_filename): New function to url-encode a
+ filename.
+
+ * camel-mime-parser.c (drop_states): New func to drop the parser
+ state to initial state.
+ (folder_scan_init_with_fd):
+ (folder_scan_init_with_stream): Call above func to reset state if
+ the stream is changed on us so we can change streams to reuse a
+ parser object.
+
+2001-11-25 Not Zed <NotZed@Ximian.com>
+
+ * providers/nntp/camel-nntp-folder.c (nntp_folder_get_message): If
+ the uid doesn't have a ',' in it, fail to crash.
+
+ * providers/nntp/camel-nntp-newsrc.c
+ (camel_nntp_newsrc_article_is_read): check group != NULL before
+ scanning.
+ (camel_nntp_newsrc_get_highest_article_read): "
+ (camel_nntp_newsrc_get_num_articles_read): "
+ (camel_nntp_newsrc_mark_range_read): "
+
+ * providers/nntp/camel-nntp-store.c
+ (camel_nntp_store_get_overview_fmt): IF we dont have
+ nntp_list_follows, dont try and get a list response.
+ (nntp_store_get_folder_info): Set path part of folderinfo.
+
+2001-11-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (get_smtp_error_string):
+ Check to see that errno is non-zero before returning
+ g_strerror. If it's 0, then we have an unknown error.
+
+2001-11-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-filter-basic.c: For the uudecoding mode, garble up
+ the "begin <mode> <filename>" line before decoding.
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): Add a uudecoder if
+ the transfer encoding is x-uuencode.
+
+ * camel-mime-part.c (write_to_stream): Handle x-uuencoded content
+ too.
+
+2001-11-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (stream_read): Added a check to see if
+ the operation has been cancelled.
+ (stream_write): Same.
+
+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.
+
+2001-11-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_parse_body): Abort if
+ body == NULL.
+
+ * camel-mime-filter-tohtml.c (camel_mime_filter_tohtml_new): New
+ mime filter to convert plain text to html.
+
+2001-11-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ Since some mail clients like Outlook are broken, we need to set a
+ name parameter on pgp signed and encrypted parts.
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_encrypt): Set a name
+ parameter.
+ (camel_pgp_mime_part_sign): Same.
+
+2001-11-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-command.c
+ (camel_imap_command_response): If we get a BYE response, call
+ camel_service_disconnect() and set an exception. Also do the check
+ for "* BYE" first instead of passing it off imap_read_untagged()
+ since we'll just waste time in there mallocing left and right only
+ to arrive at the single response line "* BYE" again :-)
+
+2001-11-13 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-search.c (get_source): If we have no source string,
+ then use undefined, which should always evaluate to FALSE. Fix
+ for #15267.
+
+2001-11-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (camel_store_get_folder): Added a
+ g_return_val_if_fail for folder_name != NULL.
+
+2001-11-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (crypto_exec_with_passwd): If any of the
+ pipe()'s fail, clean up any pipes that may have succeeded. Also
+ close the password fds.
+
+2001-11-09 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_auth_loop): If we get a
+ user cancel and that causes us to fail to authenticate, abort
+ rather than loop forever. Fix for #14951.
+
+2001-11-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-command.c
+ (camel_imap_command_continuation): Now takes a command-length
+ argument so we can 1) avoid duping the command string yet again,
+ yay. 2) we now don't have to worry about embedded nul-chars
+ screwing us over (we still need to avoid allowing them into the
+ string but at least now it won't mess us up).
+
+ * providers/imap/camel-imap-folder.c (do_append): Instead of
+ appending a nul char to the end of the byte array and then passing
+ that off as if it were a string to
+ camel_imap_command_continuation, instead pass the byte-array
+ length since that function now takes a length argument. Yay. Also
+ encode any 8bit parts to avoid the possibility of sending embedded
+ nul chars to the imap server.
+
+ * providers/imap/camel-imap-store.c (try_auth): Updated to pass a
+ command-length argument to camel_imap_command_continuation().
+
+2001-11-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (save_ssl_cert): Oops, pass a mode
+ argument to the open() call.
+
+ * camel-tcp-stream-openssl.c (save_ssl_cert): Oops, pass a mode
+ argument to the open() call.
+
+2001-11-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_decrypt): Add code to
+ kludge around any x-inline-pgp-hacks by prepending some content
+ headers to the decrypted data.
+
+2001-11-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-data-wrapper.c (camel_data_wrapper_init): Initialize our
+ private mutex.
+ (camel_data_wrapper_finalize): Destroy our private mutex.
+ (write_to_stream): Lock around camel_stream_write_to_stream() so
+ that we don't get 2 threads trying to read from our stream at the
+ same time.
+
+2001-11-01 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (folder_changed_change): Move all searching
+ operations outside of any locks except subfolder lock, same as
+ build_folder. Fix for #14294.
+
+2001-10-31 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-folder.c (spool_get_message): Same
+ as below.
+
+ * providers/local/camel-maildir-folder.c (maildir_get_message):
+ Same as below.
+
+ * providers/local/camel-mbox-folder.c (mbox_get_message): Set
+ USER_CANCEL if failed due to EINTR.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_mbox): If
+ construct from parser fails due to user cancel, set USER_CANCEL on
+ exception.
+
+ * camel-mime-part.c (construct_from_parser): Return error if the
+ parser had an io error.
+
+ * camel-mime-message.c (construct_from_parser): Check error on
+ parser/return error.
+
+ * camel-mime-parser.c (folder_scan_init): Init error number.
+ (camel_mime_parser_errno): New function, return errno of any io
+ failures.
+ (folder_read): Set errno if a failure occured.
+ (folder_seek): Same.
+ (folder_scan_init_with_fd): Setup errno depeding on ok/failure.
+ (folder_scan_init_with_stream): Same.
+
+2001-10-30 Not Zed <NotZed@Ximian.com>
+
+ * camel-operation.c (camel_operation_new): Dont setup cancel_fd.
+ (camel_operation_cancel_fd): If cancel_fd not created, set it up.
+ (camel_operation_cancel): Set cancel flag before sending message.
+ (cancel_thread): Same.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_mbox): Make
+ sure we unref the mimeparse when we're done (successfully). This
+ was leaking an fd every get-mail! :(
+
+ * camel-lock-client.c (camel_lock_helper_init): Close all fd's
+ above 2.
+
+ * providers/local/camel-mbox-folder.c (mbox_get_message): Remove
+ the X-Evolution header before anyone else gets to see this private
+ thing. Shoudl fix 11676 since we were inheriting flags from
+ X-Evolution headers we didn't want to.
+
+ * camel-folder-search.c (match_message): If we can't retrieve the
+ message, ignore it, it can't match.
+
+ * providers/imap/camel-imap-search.c
+ (camel_imap_search_class_init): Setup parent class pointer.
+ (imap_body_contains): If offline, just use the parent
+ body_contains method which will get the messages and search them
+ manually.
+
+ * providers/imap/camel-imap-folder.c (imap_search_by_expression,
+ imap_search_by_uids): Remove offline check.
+
+2001-10-30 Dan Winship <danw@ximian.com>
+
+ * camel-mime-part.c (free_headers): Fix this to match get_headers.
+
+2001-10-30 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-store.c (rename_folder): Dont try to
+ move ibex if we have none.
+
+ * camel-tcp-stream-openssl.c (stream_write): Fixed compilation
+ errors.
+
+2001-10-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (camel_mime_utils_init): Removed unused
+ variable.
+
+2001-10-30 Not Zed <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.
+
+2001-10-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-openssl.c (my_SSL_write): Removed.
+ (stream_write): Keep looping (non-blocking case) if errno is
+ EAGAIN, EINTR or EWOULDBLOCK. For NONBLOCKing I/O, sync up with
+ CamelTcpStreamRaw. As with CamelTcpStreamRaw/SSL - make sure to
+ write out everything before returning.
+ (my_SSL_read): Removed.
+ (stream_read): Just call ssl_error_to_errno() and check the errno
+ values that we care about so we can keep the general look of all
+ this stream code the same. Also when checking the return value of
+ SSL_read, check for <0 instead of ==-1 since the man page for
+ SSL_read doesn't say it will return -1 on fail, it just says <0.
+ (stream_flush): Don't fsync() since syncing on a socket is a Bad
+ Thing (tm).
+
+ * camel-tcp-stream-ssl.c (stream_write): Make sure we write out
+ everything just like in camel-tcp-stream-raw.c.
+
+ * camel-stream-buffer.c (camel_stream_buffer_gets): If
+ camel_stream_read() returns -1, don't necessarily return -1 to our
+ caller since it's possible that we did actually "read" some data
+ (ie, we copied some pre-buffered data into the out buffer).
+
+ * camel-stream-buffer.h: Removed CAMEL_STREAM_BUFFER_NEWLINE since
+ it never got used anywhere and it isn't supported anyway.
+
+2001-10-30 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c
+ (parse_list_response_as_folder_info): If we get an empty name,
+ then mark that as NoSelect. Workaround fix for #13239.
+
+2001-10-29 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (get_message_simple,
+ imap_get_message): Set an X-Evolution-Source header on the
+ returned message so replies come from the right identity.
+
+2001-10-29 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (folder_changed_change): If we're not going
+ to search on a changed uid, make sure we change out copy still.
+ Fixes #13916.
+
+2001-10-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (subscribe_folder): Don't emit
+ a folder_subscribed signal if we are in the process of renaming
+ folders.
+ (unsubscribe_folder): Same here but for the unsubscribe signal.
+ (rename_folder): Unsubscribe from the folder being renamed and any
+ subfolders it may have before actually renaming. Once the folder
+ has been renamed, re-subscribe to it and it's subfolders with the
+ new name.
+
+ * camel-store.c (camel_folder_info_build): Sort the folder info's
+ before constructing the tree.
+
+ * camel-mime-utils.c (header_decode_param): Minor fix - should
+ have been using a strNcmp when checking if it was an rfc2047
+ encoded word.
+
+ * camel-pgp-context.c (pgp_sign): Notify the user that PGP 2.6.x
+ is no longer supported and use camel_exception_set() instead of
+ setv() where appropriate.
+ (pgp_clearsign): Same.
+ (pgp_verify): And again here.
+ (pgp_encrypt): Here too.
+ (pgp_decrypt): And finally here.
+
+2001-10-29 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (unsubscribe_folder): Don't
+ free the hash table key if the folder wasn't found in the hash
+ table. I'm not sure where the bug is/was that made it possible to
+ add a folder to the tree after creating it failed, but now if that
+ happens, it won't crash if you try to delete it again. (#11492)
+
+ * camel-disco-store.c (camel_disco_store_status): if the service
+ is being connected and thinks it's online, but the session is
+ offline, then mark the service offline as well. Fixes 13683.
+
+2001-10-29 Not Zed <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.
+
+ * camel-vee-store.c (build_info): Fix the 'is this a matching
+ subfolder or subfolder' logic to match camel-store
+ get_subfolders'.
+
+ * camel-store.c (get_subfolders): Fix the 'is this a matching
+ folder or subfolder' logic.
+
+2001-10-28 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-store.c (rename_folder): Changed to
+ call ibex_move to rename it internally.
+
+ * camel-store.c (camel_store_rename_folder): Use the right
+ variable, not info.
+
+2001-10-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-stream-buffer.c (camel_stream_buffer_read_line): Make sure
+ we've actually read data before checking if p[-] is '\r' or not.
+
+ * camel-tcp-stream-raw.c (stream_write): Same.
+
+ * camel-stream-fs.c (stream_write): If errno isn't EAGAIN, just
+ exit with -1 and instead of using continue (which doesn't go to
+ the top of the do-while thus making our logic suck), just set w to
+ 0. Still seems to be a bug in select() if it's telling us the
+ socket is ready for data when it really isn't but oh well.
+
+2001-10-28 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): Use path not protocol as the path
+ part of the uri of the folder_created event.
+
+ * providers/local/camel-maildir-store.c (scan_dir): If FAST is
+ set, dont try and scan for unread counts.
+
+ * providers/local/camel-local-store.c (create_folder): Implement,
+ just return the folderinfo of the folder matched, not all of it.
+
+ * camel-store.c (camel_store_rename_folder): Rename the
+ camelfolders before emitting the folderchanged event (otherwise
+ vstore fails to pick up change.
+
+2001-10-27 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.c (camel_store_init): Always use a default dir_sep
+ of '/'.
+
+ * camel-store.h (struct _CamelStore): Added a dir_sep to the base
+ store so rename and whatnot can work, temporary fix for mixed dir
+ separator in folder name api's.
+
+ * providers/imap/camel-imap-store.c (rename_folder): Finished
+ implementation.
+ (imap_connect_online): Also set the store's dir_sep here.
+ (imap_connect_offline): "
+
+ * providers/local/camel-local-folder.c (local_rename): Implement
+ local rename of folder objects.
+
+2001-10-26 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (camel_vee_folder_class_init): Hook into
+ rename function.
+ (vee_rename): Implement the veefolder rename function.
+ (camel_vee_folder_class_init):
+ (folder_changed_change): Kill a warning with a cast.
+
+ * camel-vee-store.c (vee_rename_folder): Emit a folder_renamed
+ event properly, also call parent to do some rename stuff.
+
+ * camel-store.h: Added a CamelRenameInfo for the rename event.
+
+ * camel-folder.c (camel_folder_rename): New function to rename a
+ folder object.
+ (camel_folder_class_init): Added a renamed event.
+ (folder_rename): Default impl, set full_name, and set name
+ assuming the dir separator is '/'.
+
+ * camel-store.c (camel_store_class_init): Added folder_renamed
+ event.
+ (camel_store_rename_folder): Rename an active folder object if we
+ have one, and update the folder table.
+ (rename_folder): Make a default implementation that handles
+ updating the folder tree.
+
+2001-10-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (delete_folder): Don't bother
+ checking ex since we can rely on the response being NULL on error.
+ (rename_folder): Implemented.
+
+2001-10-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): Check to
+ make sure that the dataset is non-NULL before using and/or
+ freeing.
+
+ * camel-tcp-stream-raw.c (stream_write): Check for EWOULDBLOCK
+ too?
+ (stream_read): Same.
+ (stream_flush): Return 0 always, fsync() and tcp sockets don't
+ play nice :-)
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_get): Lets try putting a
+ camel_stream_reset() here. Logic being that the stream may have
+ been read from since it was cached and thus our caller may try
+ reading from it and get no data from it since it is already at the
+ EOS. This may fix bug #12943.
+
+2001-10-25 Not Zed <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): "
+
+2001-10-24 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-filter-basic.c (complete): For qp decoding, if the
+ data isn't really qp encoded, we could possible grow the buffer by
+ upto 2 bytes above the input size, fix allocations/assertions
+ appropraitely.
+
+ * camel-vee-folder.c (folder_changed_change): If we're not
+ autoupdate, only search for new matches against changed uid's that
+ we dont already have.
+
+2001-10-24 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (unsubscribe_folder): Don't
+ let fi->name be NULL.
+
+2001-10-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-stream-fs.c (stream_read): Same as in the TcpStreamRaw code.
+ (stream_write): And again here...
+
+ * camel-tcp-stream-raw.c (stream_read): Handle the EAGAIN error
+ case as well.
+ (stream_write): Same here, this might fix the SMTP truncation
+ thing? I hope?
+
+2001-10-23 Dan Winship <danw@ximian.com>
+
+ * camel-mime-utils.c (mail_list_magic): Remove an extra * in one
+ of the regexps that glibc apparently doesn't mind but bsd does.
+
+2001-10-23 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-mbox-summary.c: made d(x) x recompile again.
+
+2001-10-22 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-summary.c (summary_rebuild): No, use
+ Storing, as the other code does :p
+ (spool_summary_check): Check for consistency.
+
+2001-10-22 Jon Trowbridge <trow@ximian.com>
+
+ * providers/local/camel-spool-summary.c (summary_rebuild):
+ s/summarising/summarizing/.
+ (spool_summary_check): s/summarise/summarize/.
+
+2001-10-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_verify): If we are
+ kludging around a inline-pgp signed part, do some charset
+ conversion to protect any 8bit text.
+
+2001-10-22 Not Zed <NotZed@Ximian.com>
+
+ * 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): Match check
+ against all addresses in a multiple address match. Should fix
+ #13051.
+ (camel_search_header_match): Oops, missing i=0.
+ (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.
+
+2001-10-22 Dan Winship <danw@ximian.com>
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_verify): Add a hack: if
+ the multipart/signed part has a "x-inline-pgp-hack" parameter in
+ its Content-Type, don't pass the MIME headers as part of the data
+ to be verified.
+
+2001-10-22 Rodrigo Moya <rodrigo@ximian.com>
+
+ * Makefile.am: added $GNOME_INCLUDEDIR to INCLUDES, needed for latest
+ libgnome, which install headers in $(prefix)/gnome-1.0
+
+2001-10-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): Only do the rawtext
+ checks if the part is a text part, otherwise don't bother wasting
+ cpu cycles.
+
+ * camel-store.c (camel_folder_info_build): Updated comments to
+ make the code a bit more clear.
+
+2001-10-21 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.c (CS_CLASS): Dont do the macro stuff - basically so
+ you can actually debug calls.
+ (camel_store_uri_cmp): New function to compare store objects.
+
+ * camel-vee-folder.c (vee_folder_add_info): oops, dont free the
+ vuid, since its alloca'd now.
+ (folder_changed_change): Kill a compile warning.
+
+2001-10-20 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (move_messages_to): If no exception supplied, use
+ a local one.
+ (move_message_to): Set the seen flag also when we delete it.
+
+2001-10-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-vtrash-folder.c (vtrash_move_messages_to): If the
+ destination folder is the vfolder source folder, then
+ set_message_flags on it.
+
+2001-10-19 Not Zed <NotZed@Ximian.com>
+
+ * camel-session.c (register_provider): When registering provider,
+ translate all strings.
+
+ * camel-vee-folder.c (camel_vee_folder_remove_folder): Lock the
+ right lock for unmatched subfolder list stuff. If the sub folder
+ is deleted & part of unmatched, or the last ref to the sub folder
+ is gone from unmatched, blow it away completely from unmatched,
+ but only do it once.
+ (vee_folder_remove_folder): Added arg to kill unmatched
+ unconditionally. Also handle deleted folders, always remove
+ stuff.
+ (folder_changed_change): Lock subfolder lock for entirety of
+ operation, and also check to see if the subfolder is still there
+ before doing any fancy work (incase it got removed while we were
+ waiting to execute).
+ (folder_changed_change_uid): Use alloca for vuid, and not
+ sprintf(".lengths")
+ (vee_search_by_expression): Dont use sprintf for vuid.
+ (vee_search_by_uids): "
+ (vee_folder_add_info): "
+ (folder_changed_remove_uid): "
+ (folder_changed_change): "
+ (folder_changed_change_uid): Also check folder_unmatched for
+ changed uid's so we properly update/propagate unmatched changes.
+ (folder_changed_change): Ok, so dont hold the subfolder lock for
+ the whole duration of the changed event, although we probably
+ should, requires a recursive mutex.
+ (folder_changed_change): Change logic, we always add changed stuff
+ if it now matches, but dont remove it unless its auto-remove, only
+ propagate changes for it.
+ (vee_set_message_flags): Call parent method after doing our work.
+ (vee_set_message_user_flag): Same here.
+
+2001-10-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): If a charset isn't
+ specified or claims to be utf-8, check the validity of the text
+ and if it's invalid, set the rawtext bit to TRUE. If the charset
+ is x-unknown or some other x- charset, always set the rawtext bit
+ to TRUE.
+
+2001-10-18 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.c (camel_store_unsubscribe_folder): If we are
+ unsubscribing from a folder we have loaded, set the folder
+ deleted, as with the delete_folder case.
+
+ * providers/(imap|local|pop3|sendmail|smtp)/Makefile.am: Added
+ CAMEL_CFLAGS so we get the right iconv stuff, patch from Yanko
+ Kaneti <yaneti@declera.com>
+
+2001-10-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (crypto_exec_with_passwd): Make sure the
+ cancel_fd isn't -1.
+
+2001-10-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-message-cache.c (insert_finish): Flush
+ the stream here, not sure it really matters but it might
+ (hopefully) fix bug #12943.
+
+ * camel-pgp-context.c (crypto_exec_with_passwd): Make
+ user-cancellable.
+
+ * providers/local/camel-local-provider.c: String cleanup for bug
+ #6640.
+
+ * providers/imap/camel-imap-folder.c (imap_sync_online): Fix my
+ Cyrus imapd workaround...instead of checking to see if info->flags
+ == FLAGGED, just check to see if it contains any IMAP flags.
+
+2001-10-17 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-folder.c
+ (camel_maildir_folder_new): Use '.' as the inbox name for filter
+ new messages test.
+
+ * camel-store.c (camel_folder_info_clone): New function to clone a
+ folderinfo tree.
+
+2001-10-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-mh-folder.c (mh_append_message): Same as
+ maildir and mbox append-message.
+
+ * providers/local/camel-maildir-folder.c (maildir_append_message):
+ Same as mbox append.
+
+ * camel-exception.c (camel_exception_set): Make sure the new
+ description isn't the same as the old description pointer before
+ freeing the old one.
+ (camel_exception_setv): Don't free the old description until we
+ set the new one this way we can reuse the old description in the
+ new description.
+
+ * providers/local/camel-mbox-folder.c (mbox_append_message): If
+ errno == EINTR, then we got a user-cancel so set the exception
+ appropriately so that we don't make the user shit his pants.
+
+ * camel-filter-driver.c (do_copy): Add an optimization for when
+ destination folder is the same as the source folder.
+
+2001-10-17 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info_online):
+ (parse_list_response_as_folder_info): Patch from Danw, Use unread
+ count of -1 to mark unflagged messages. Make sure any folder we
+ dont lookup explicitly is marked as -1. Should fix #9947 and
+ friends.
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync): Only
+ touch the summary if the timestamp or size changed.
+
+2001-10-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message): Set
+ the DELETED flag on directly on the info if the source folder
+ doesn't have summary capability.
+
+2001-10-17 Not Zed <NotZed@Ximian.com>
+
+ * camel-tcp-stream-raw.c (stream_write): As below.
+
+ * camel-stream-fs.c (stream_write): If not checking cancellation,
+ make sure we write out everything asked of us.
+
+2001-10-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_verify): Rearange the order of the gpg
+ options slightly otherwise it might try to use "--no-tty" as the
+ filename to verify :-)
+
+ * camel-object.[c,h]: If CAMEL_DEBUG is defined, print some useful
+ ref/unref info.
+
+ * providers/imap/camel-imap-store.c (delete_folder): Fixed an
+ assignment warning.
+
+ * camel-uid-cache.c (camel_uid_cache_new): Make sure that the
+ parent directory exists before trying to open the filename, if it
+ doesn't, create it.
+
+2001-10-16 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-utils.c (header_address_decode): If no content, dont
+ try and decode further and spit meaningless warnings.
+
+2001-10-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (do_flag): Only perform the operation on
+ the folder if the folder has summary capability, else just poke
+ the info directly. Fixes the "Filters don't work" bug.
+ (do_score): Same.
+ (do_colour): And here too.
+
+2001-10-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-stream-fs.c (stream_read): Save the errno before calling
+ fcntl so fcntl doesn't overwrite errno in case of a previous
+ error.
+ (stream_write): Same.
+
+2001-10-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Replace the
+ Bcc headers in a single location and don't flush the data unless
+ the write was successful.
+
+2001-10-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Remove the stripheader filter from the build.
+
+ * camel-mime-filter-stripheader.[c,h]: Removed.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Check the
+ return value of camel_stream_flush to make sure it flushed the
+ data successfully before continuing. Don't use the stripheader
+ filter, it was completely broken - instead remove the header and
+ set it again after we send.
+
+2001-10-12 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (camel_vee_folder_remove_folder): Unhook from
+ all events before removing folder.
+ (camel_vee_folder_add_folder): Hook onto delete event.
+ (camel_vee_folder_finalise): Unhook from deleted event for suibfolder.
+ (subfolder_deleted): When the folder is deleted, remove it from
+ the vfolder automagically.
+
+2001-10-11 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (vee_search_by_uids): convert the uids list
+ to a subset appropriate for each subfolder before trying to search
+ on it.
+
+ * camel-charset-map.[ch]: Removed charset/locale charset lookup
+ and iconv_open/close functions, moved to gal. Fixed all callers.
+
+2001-10-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (ssl_cert_is_saved): Same.
+
+ * camel-tcp-stream-openssl.c (ssl_cert_is_saved): Instead of
+ opening the file, stat it and make sure that it belongs to us.
+
+2001-10-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-openssl.c (ssl_verify): Same hack as below.
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): Hack around the fact that
+ adding a cert to nss's certdb seems to not work.
+
+2001-10-10 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (vee_sync): Only re-build the folder if we're
+ expunging. Also only clear out the changed folders list if we're
+ expungung and everything worked.
+
+2001-10-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-charset-map.c (camel_charset_map_init): Added a hack for
+ Solaris systems.
+
+2001-10-10 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-store.c (scan_dir): oops, we want
+ get_unread_message_count, not get_message_count!
+
+2001-10-09 Not Zed <NotZed@Ximian.com>
+
+ * camel-service.c (camel_service_disconnect): Duplicate connect
+ code that unregisters a cancel op if we created one.
+
+ * camel-operation.c (camel_operation_progress): Another go at
+ getting the logic right again. Make transients only update after
+ 5 seconds (CAMEL_OPERATION_TRANSIENT_DELAY)
+ (camel_operation_end): Likewise.
+
+ * providers/local/camel-spool-folder.c (spool_search_by_uids):
+ Implement.
+
+ * providers/imap/camel-imap-search.c (imap_body_contains): If
+ searching a sub-set of the total message count, then use a UID
+ range to search only specific messages.
+
+ * camel-vee-folder.c (vee_folder_change_match): Removed.
+ (folder_changed_add_uid): Helper func for changed code.
+ (folder_changed_remove_uid): "
+ (folder_changed_change_uid): "
+ (folder_changed): Rewritten. Supports proper auto-updating of
+ changes, but not removals till a sync occurs.
+ (vee_search_by_uids): Implement.
+ (folder_changed): Changed to call an async threaded function to do
+ the actual folder updating.
+
+ * camel-folder-summary.c (camel_flag_list_copy): New func to copy
+ a whole list of flags.
+ (camel_tag_list_copy): New func to copy a whole list of flags.
+
+ * providers/imap/camel-imap-folder.c (imap_search_by_uids):
+ Implement.
+
+ * providers/local/camel-local-folder.c (local_search_by_uids):
+ Implement.
+
+ * camel-folder.c (camel_folder_search_by_uids): New function,
+ search a subset of uid's.
+ (search_by_uids): Default impl, return error.
+
+2001-10-08 Dan Winship <danw@ximian.com>
+
+ * camel-folder.h (struct _CamelFolder): replace the ever-growing
+ list of gbooleans with a single guint32 for flags.
+
+ * camel-folder.c: Update folder flag setting/checking.
+
+ * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_init):
+ * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new):
+ * providers/local/camel-spool-folder.c (spool_init,
+ camel_spool_folder_new):
+ * providers/local/camel-maildir-folder.c (camel_maildir_folder_new):
+ * providers/local/camel-local-folder.c (local_init):
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_init,
+ camel_imap_folder_new):
+ * camel-vtrash-folder.c (camel_vtrash_folder_init):
+ * camel-vee-folder.c (camel_vee_folder_init):
+ * camel-digest-folder.c (camel_digest_folder_init): update folder
+ flag setting.
+
+2001-10-07 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_online): Unlock
+ the store before returning error. (noted by NotZed)
+
+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.
+
+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.
+
+2001-10-05 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (subscribe_folder): Use a
+ folder_subscribed event rather than a folder_created one.
+ (unsubscribe_folder): Similarly for unsubscribed/deleted.
+ (create_folder): Emit a folder_created event on the folders we
+ added. Not sure hsould probably check which ones are new and
+ which ones are just existing ones?
+ (delete_folder): Emit a folder_deletd event when we've deleted the
+ folder. Part of fix for #11831.
+
+ * camel-store.c (camel_store_class_init): Added
+ folder_subscribed/unsubscribed events.
+
+2001-10-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-service.c (camel_service_finalize): Turn off warnings.
+ (get_name): Same.
+
+ * camel-sasl.c (sasl_challenge): Turn off warnings.
+
+ * camel-tcp-stream.c (tcp_connect): Turn off warnings.
+ (tcp_getsockopt): Same.
+ (tcp_setsockopt): Here too.
+ (tcp_get_socket): And here.
+
+ * camel-folder.c (folder_sync): Turn off warnings.
+ (expunge): Same.
+ (append_message): Here too.
+ (get_message): And here.
+ (search_by_expression): And again here.
+ (folder_changed): Here too.
+
+ * camel-store.c (get_folder): Set an exception and turn off
+ debugging g_warnings.
+ (create_folder): Same.
+ (delete_folder): Here too.
+ (rename_folder): And here.
+ (get_trash): And here.
+ (get_folder_info): Same.
+ (free_folder_info): And again here.
+ (camel_folder_info_build): Here too.
+ (folder_subscribed): Same.
+ (subscribe_folder): Here too.
+ (unsubscribe_folder): And here.
+
+2001-10-05 Not Zed <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 #.
+
+2001-10-04 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.c (camel_store_delete_folder): Change the order of
+ execution slightly. We delete the folder first, then call the
+ classes delete folder, then cleanup the hashtable afterwards.
+ This is so deletes of vfolders work, since vee-store uses the
+ folder hashtable to store all of is vfolders :-/
+
+2001-10-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-service.c (camel_service_connect): Unregister the
+ operation before unreffing it.
+
+2001-10-03 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ Remove now unused 'recents' array/freeing func.
+
+ * camel-object.c (camel_object_trigger_event): Oops, always run
+ the prep function, even if we have no hooks listening. Causes
+ incoming imap recents to get ignored bythe camel-folder filter
+ inbox code.
+
+ * providers/local/camel-local-folder.c (local_sync): Dont
+ explicitly save metadata, its saved in summary_sync.
+
+ * providers/local/camel-mh-summary.c: Call superclass.
+ (mh_summary_check): Dont save ibex.
+
+ * providers/local/camel-maildir-summary.c: Call superclass method.
+ (maildir_summary_check): Dont save ibex explictly.
+
+ * providers/local/camel-mbox-summary.c: Call super-class sync when
+ done, saves summary/ibex, etc.
+ (mbox_summary_check): Dont save ibex.
+ (mbox_summary_sync): Call summary_check rather than trying to
+ update from our known position.
+
+ * providers/local/camel-local-summary.c
+ (camel_local_summary_check): Dont save the summary or index here.
+ (local_summary_sync): Save the summary/index here.
+
+ * camel-search-private.c (camel_search_build_match_regex): Added
+ MATCH_NEWLINE flag, -> REG_NEWLINE.
+
+ * camel-lock-helper.c: Include <string.h> to kill some warnings.
+
+ * camel-filter-search.c (get_full_header): Put \n's between each
+ line we generate.
+ (header_full_regex): Dont drop the first argument to the command
+ -> empty matches!
+ (header_full_regex): Set match_newline for building regex.
+ (body_regex): And here too. These all fix #9877.
+
+2001-10-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (camel_store_delete_folder): Call
+ camel_folder_delete() on the folder if it's "alive".
+
+ * camel-folder.c (camel_folder_delete): Mark the folder as
+ deleted, perform any folder specific cleanup and emit the deleted
+ event.
+ (camel_folder_sync): Only sync the folder if it hasn't been
+ deleted.
+ (camel_folder_expunge): Same.
+
+2001-10-03 Dan Winship <danw@ximian.com>
+
+ * providers/local/camel-local-provider.c (local_url_equal):
+ Strange are the ways of alloca. Fixes 11543.
+
+2001-10-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): Import the certificate if
+ the user accepts it.
+
+2001-10-02 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-provider.c (local_url_hash,
+ local_url_equal): for hashing/comparing local url's, we ignore
+ trailing /'s in paths (maybe shuld handle multiple /'s too).
+ (camel_provider_module_init): Use local_url_hash/equal for all
+ functions.
+
+ * 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.
+
+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.
+
+2001-10-02 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-store.c (get_folder_info): Go back
+ to using the store url's path, not the toplevel_dir thing.
+
+ * camel-operation.c (camel_operation_progress): Fix the progress
+ logic, so we dont update too often.
+
+ * camel-object.c (camel_object_get_hooks): Change the lock to a
+ recursive e-mutex.
+ (camel_object_hook_event): Maintain list length of hook list.
+ (camel_object_unhook_event): "
+ (camel_object_unhook_event): If we are in an event, just mark the
+ pair as removed, without removing it.
+ (camel_object_trigger_event): Before running events, copy the
+ list, and also ignore 'removed' events. After running events, if
+ we're all out of events, then free up any pending-removed events.
+ (camel_object_free_hooks): Add some new assertions on the state of
+ the hook structure.
+ Removed the #error if threads not defined. It _should_ actually
+ work without threads.
+ (camel_object_free_hooks): Free mutex when done.
+
+2001-10-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (delete_folder): Remove any
+ cached messages that belonged to the deleted folder.
+ (subscribe_folder): Don't ever let the info->name be NULL and
+ don't use the stupid concat kludge to generate the URL, just use a
+ CamelURL to do it. This way we don't risk breaking stuff by having
+ a url like imap://fejj@imap//folder
+
+ * camel-charset-map.c (camel_charset_to_iconv): If the charset is
+ x-unknown, return the locale_charset.
+
+2001-10-01 Dan Winship <danw@ximian.com>
+
+ * camel-provider.h: Fix up the provider flags to specify things
+ more completely so we don't have to hardcode provider names in the
+ mailer.
+
+ * providers/local/camel-local-provider.c: MH, mbox, and Maildir
+ are LOCAL. MH and mbox are no longer STORAGE by the new
+ definition.
+
+ * camel-session.c (vee_provider): The vfolder store is a STORAGE.
+
+2001-10-01 Dan Winship <danw@ximian.com>
+
+ * providers/local/camel-local-store.c (construct): Don't munge the
+ URL; CamelSession's caching relies on it not changing. Instead,
+ add a toplevel_dir field to CamelLocalStore, and set that to the
+ path, but always ending with /.
+ (camel_local_store_finalize): Free toplevel_dir
+ (camel_local_store_get_toplevel_dir): Return toplevel_dir rather
+ than url->path.
+
+ * providers/local/*: Lots of s/url->path/toplevel_dir/
+
+ * providers/local/camel-spool-store.c (construct): Likewise, don't
+ try to strip a trailing / from url->path here, but I didn't make
+ the corresponding toplevel_dir change, because there's no good
+ reason someone should expect "/var/spool/mail/danw/" to work since
+ that's not a directory.
+
+ * providers/pop3/camel-pop3-folder.c (pop3_refresh_info): if STAT
+ returns 0, don't bother sending UIDL. Speeds things up slightly
+ and also works around a bug in a particular random POP server.
+ (ximian bug 11369).
+
+2001-09-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_sign): Add --no-secmem-warning and
+ --no-greeting to the gpg command-line options.
+ (pgp_clearsign): Same.
+ (pgp_verify): Here too.
+ (pgp_encrypt): And here.
+ (pgp_decrypt): And finally here.
+
+2001-09-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-search.c (get_source): Same here.
+
+ * camel-mime-message.c (camel_mime_message_set_source): Don't use
+ the e_url_shroud hack, use CamelURL functions instead.
+
+2001-09-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/nntp/camel-nntp-provider.c
+ (camel_provider_module_init): Init the nntp url hash and url_equal
+ functions.
+
+ * providers/sendmail/camel-sendmail-provider.c
+ (camel_provider_module_init): Init the sendmail url hash and
+ url_equal functions.
+
+ * providers/smtp/camel-smtp-provider.c
+ (camel_provider_module_init): Init the smtp url hash and url_equal
+ functions.
+
+ * providers/pop3/camel-pop3-provider.c
+ (camel_provider_module_init): Init the pop3 url hash and url_equal
+ functions.
+
+ * providers/imap/camel-imap-provider.c
+ (camel_provider_module_init): Init the imap url hash and url_equal
+ functions.
+
+ * providers/local/camel-local-provider.c
+ (camel_provider_module_init): Init the local url hash and
+ url_equal functions.
+
+ * camel-session.c (camel_session_class_init): Init the vfolder url
+ hash and url_equal functions.
+
+ * camel-provider.h: Added url_hash and url_equal function pointers
+ to the structure.
+
+ * camel-vtrash-folder.c (vtrash_move_messages_to): Oops, a
+ CamelFolder is not a CamelFolderClass.
+
+2001-09-28 Dan Winship <danw@ximian.com>
+
+ * camel-tcp-stream-openssl.c (ssl_error_to_errno): Make this take
+ an SSL * instead of a CamelTcpStreamSSL *, since it can get called
+ from open_ssl_connection, when the CamelTcpStreamSSL isn't set up
+ right yet. Fixes a crash on connection failure.
+
+2001-09-27 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c
+ (camel_imap_folder_fetch_data): Grab the store's command_lock
+ before grabbing the folder's cache_lock to prevent deadlock if
+ another thread is processing an EXPUNGE response.
+
+ * providers/imap/camel-imap-folder.c
+ (imap_expunge_uids_resyncing): Fix a compiler warning that might
+ point out a real bug...
+
+ * providers/imap/camel-imap-folder.c (get_content): and one that
+ doesn't
+
+2001-09-27 Not Zed <NotZed@Ximian.com>
+
+ * camel-service.c (camel_service_connect): Dont re-register the
+ connect_op if we got it by calling 'operation_registered', which
+ returns an already-registered one.
+ (camel_service_disconnect): Likewise here. This removes all the
+ re-registered warnings.
+
+ * camel-object.c (camel_object_unref): Fill the finalised data
+ with nonsense, rather than 0's - more easily detect bad data.
+ (camel_object_new): Clear instance data when we retrieve it off
+ the list.
+
+ * camel-object.h (_CamelObject): Added an event lock pointer for
+ uh, locking event stuff. Also change the hooklist hashtable into
+ a list. Changed all the code to handle it. Result: thread-safe
+ events, event-hooks, and save memory too, and SHOULD FINALLY FIX
+ THAT UNREAD COUNT PROBLEM.
+
+2001-09-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_decrypt): CRLF decode the
+ stream before parsing it into a MIME part. This fixes bug #10521.
+
+ * camel-store.c: Remove the old folder from the vTrash folder.
+
+2001-09-27 Dan Winship <danw@ximian.com>
+
+ * camel-service.c: Change "gboolean connected" to
+ "CamelServiceConnectionStatus status", which can be disconnected,
+ connecting, connected, or disconnecting.
+ (camel_service_init, camel_service_finalize): create/destroy the
+ connect_op_lock. Refer to service->status rather than
+ service->connected.
+ (camel_service_connect): When connecting, note the current
+ operation (and create a new one if there's none registered) and
+ mark the connection "connecting" until we succeed or fail.
+ (camel_service_disconnect): Likewise in reverse.
+ (camel_service_cancel_connect): New function to cancel a
+ connection attempt.
+ (cancel_connect): Default implementation: Call
+ camel_operation_cancel on the connect_op.
+
+ * camel-disco-store.c (disco_connect): Only call
+ CamelRemoteStore's connect func if we're online.
+ (disco_cancel_connect): Fall back to offline if a connection gets
+ cancelled.
+ (disco_get_folder_info): Kludge: call connect explicitly before
+ deciding whether to do the online or offline version, so if the
+ connect fails, we fall back correctly.
+
+ * camel-session.c (camel_session_get_service_connected):
+ s/svc->connected/svc->status/
+
+ * camel-remote-store.c (camel_remote_store_finalise):
+ Change service->connected check to service->status check.
+ (remote_connect): Don't set service->connected here:
+ camel_service_connect() itself does that.
+
+ * camel-operation.c (camel_operation_registered): Deal with the
+ possibility that there's no registered op.
+
+2001-09-26 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message): If
+ we get a search error, just abort, dont try and fall back and copy
+ to inbox.
+ (camel_filter_driver_filter_message): Make sure we ALWAYS use
+ exceptions for important things - like moving messages to inbox!
+ (camel_filter_driver_filter_message): If we have the source
+ folder, use camel_folder_set_message_flags rather then poking the
+ info directly, which skips changed events. This means filtering
+ immediate doesn't lose changed events.
+ (do_flag): Same here.
+ (do_colour): Same thing but using set_tag.
+ (do_score): Same again.
+ (camel_filter_driver_filter_folder): Use ~0 as the 'set' arg to
+ set_flags, just saves typing.
+ (open_folder): We cache folders that we couldn't open as well as
+ those ones we could. Use magic token FOLDER_INVALID =
+ (void *)~0 as the marker.
+ (close_folder): Handle FOLDER_INVALID case properly.
+
+2001-09-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-message.c
+ (camel_mime_message_get_part_by_content_id): New function to
+ convenience Larry ;-)
+ (check_content_id): Oops, return !found instead of found. This
+ callback has to return whether or not to keep searching, not
+ whether or not it found what it's looking for. Do'h!
+
+ * camel-pgp-mime.c (camel_pgp_mime_is_rfc2015_signed): block out
+ some code if ENABLE_PEDANTIC_PGPMIME is not defined.
+
+2001-09-26 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-store.c: Emptied VeeStorePrivate, member wasn't used.
+
+ * camel-vee-folder.c (camel_vee_folder_set_expression): Lock
+ changed list separately.
+ (camel_vee_folder_remove_folder): "
+ (camel_vee_folder_set_folders): Use changed_lock for changed list.
+ (vee_refresh_info): Use changed_lock, also just grab the list,
+ reset it in the lock, and do the work unlocked.
+ (vee_sync): Use changed lock for changed list.
+ (folder_changed): ". All this kills a deadlock with sync/expunge.
+
+ * camel-private.h (CamelVeeFolderPrivate): Added a new lock for
+ the folders-changed list.
+ (CamelVeeStorePrivate): Removed, defined in camel-vee-store.c,
+ thanks to a pedantic.
+
+2001-09-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Fix Ettore's fix.
+
+2001-09-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (camel_pgp_context_new): No longer takes a
+ remember argument.
+ (pgp_sign): Only uncache the passphrase on failure.
+ (pgp_clearsign): Same.
+ (pgp_encrypt): Here too.
+ (pgp_decrypt): And here.
+ (pass_free): New function to zero the passphrase before freeing
+ it.
+
+2001-09-25 Ettore Perazzoli <ettore@ximian.com>
+
+ [Patch for Automake 1.5 compatibility pointed out by Richard
+ Boulton <richard@tartarus.org>, as per #9258.]
+
+ * providers/nntp/Makefile.am: Remove some commented parts that
+ make Automake 1.5 choke.
+
+ * Makefile.am (camel-lock-helper): Add $(EXEEXT) for Automake 1.5
+ compatibility.
+
+2001-09-25 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (get_unread_message_count): Only unref info if we
+ got it.
+
+ * camel-operation.c (camel_operation_unref): Fix for !threads
+ enabled not ccompiling.
+ (camel_operation_ref): Assert refcount > 0.
+ (struct _CamelOperation): Removed the lock. On further
+ investigation, I dont think this will always work, the
+ registration operations assume that a lookup in the
+ operation_active table will return a ref, that will remain valid
+ until we ref it, which needn't be the case. So now i'm using a
+ single global lock, since we'd need to do that for unref anyway,
+ and every operation is fast & memory-bound. Changed all the code
+ to handle this.
+ (camel_operation_progress_count): Since the code is identical,
+ just call progress() for now.
+ (camel_operation_register): No longer refcount, use unref to
+ check/clear the active table.
+ (camel_operation_unregister): Same here.
+ (camel_operation_unref): Check if operation is in active table, if
+ so, warn, remove.
+
+2001-09-25 Dan Winship <danw@ximian.com>
+
+ * camel-tcp-stream-openssl.c (my_SSL_read, my_SSL_write): call
+ SSL_read/write, looping on SSL_ERROR_WANT_READ/WRITE. I'm sure
+ there's a perfectly good reason that the API works this way. No,
+ really.
+ (stream_read, stream_write): use my_SSL_read and my_SSL_write.
+ Fixes at least ximian 8593, and probably 6024 and maybe 10366,
+ at least for OpenSSL. There may be a parallel NSS bug?
+
+2001-09-25 Not Zed <NotZed@Ximian.com>
+
+ * camel-stream-buffer.c (stream_write_all): A "safe write"
+ function that always writes out all data asked of it, till
+ finished.
+ (stream_write): Rewritten. What was i on when i wrote that
+ originally, how did it ever work with tcp streams ...
+
+2001-09-24 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (append_message): Set the exception to
+ FOLDER_INVALID rather than making out it worked. A fix for #7025.
+ (search_by_expression): Here too.
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): In the
+ 'lose' case, free messages, not fetch_data twice!
+
+ * 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.
+
+2001-09-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-openssl.c (ssl_verify): Don't even try to alert
+ the user if the session isn't interactive.
+ (errlib_error_to_errno): Make the default errno EINTR so that we
+ act just like CamelTcpStreamSSL.
+
+ * camel-pgp-context.c (pgp_sign): When the password is not
+ provided, set the exception to USER_CANCEL.
+ (pgp_clearsign): Same.
+ (pgp_encrypt): And here.
+ (pgp_decrypt): Here too.
+
+2001-09-21 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.c (create_folder): Set the exception if
+ create_folder isn't implemented.
+
+2001-09-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (create_folder): Go back to
+ not using camel_folder_info_build() here because this seems to
+ break folder creation (returning nodes from the root path when it
+ shouldn't be?).
+
+2001-09-21 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-store.c (vee_get_folder_info): Force a refresh of
+ vfolders before storing their count. This essentially makes
+ 'get_folderinfo' refresh all vfolders, so that get-mail works as
+ expected.
+
+ * camel-vee-folder.c (camel_vee_folder_finalise): Clear lists.
+ (folder_changed): If we're not autoupdating the folder, then
+ add this folder to the list of 'changed' folders for this vfolder.
+ (camel_vee_folder_set_expression): Reset the folders_changed list.
+ (camel_vee_folder_remove_folder): Remove the folder from the
+ folders_changed list.
+ (camel_vee_folder_set_folders): If we have a folder already, but
+ its changed, use this opportunity to update it.
+ (vee_sync): Remove any synced folders from the folders_changed
+ list.
+ (vee_refresh_info): Refresh folder, re-run queries on any changed
+ folders.
+
+2001-09-20 Not Zed <NotZed@Ximian.com>
+
+ * 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.
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): Setup unread count properly, and
+ also setup the url properly.
+
+ * providers/local/camel-maildir-store.c (camel_folder_info_new):
+ Build the path on the folderinfo.
+ (scan_dir): Dont include empty host part in url for folder.
+ (scan_dir): Lookup folder counts for any folders we currenty have
+ open.
+ (scan_dir): If we dont have the folder open, then scan the 'new'
+ and 'cur' folders for new and unread messages to count instead.
+
+ * providers/local/camel-spool-store.c (get_folder_info): If we
+ have this folder open, then set unread from the folder itself.
+ (get_folder_info): Change the INBOX path to not include the
+ leading /.
+
+ * providers/local/camel-spool-folder.c
+ (camel_spool_folder_construct): Fix path.
+ (camel_spool_folder_construct): Properly setup the url field when
+ we say we've got a new folder created.
+
+ * providers/imap/camel-imap-store.c (unsubscribe_folder): Build
+ path on folderinfo.
+
+ * camel-store.c (camel_folder_info_build_path): Prepend / to path.
+
+ * camel-vee-folder.c (camel_vee_folder_construct): Use macro for
+ unmatched folder name.
+ (camel_vee_folder_new): "
+
+ * camel-vee-store.c (vee_get_folder_info): Use macro for unmatched
+ folder name.
+ (vee_delete_folder): "
+ (vee_rename_folder): "
+ (vee_get_folder): Prepend / onto path.
+ (vee_delete_folder): Setup path in folderinfo.
+ (vee_get_folder_info): Fix path in folderinfo.
+
+ * camel-vee-folder.h (CAMEL_UNMATCHED_NAME): New define for
+ unmatched (internal) name.
+
+2001-09-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-spool-folder.c
+ (camel_spool_folder_construct): And finally here.
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): And here.
+
+ * camel-vee-store.c (vee_get_folder): ANd here too.
+ (vee_get_folder_info): And here.
+
+ * providers/imap/camel-imap-store.c (create_folder): Use
+ camel_folder_info_build() and do better error checking.
+ (subscribe_folder): Set the path on the folder info.
+
+ * camel-store.c (camel_folder_info_build): Set the folder-info
+ path if it hasn't already been set by the caller.
+ (camel_folder_info_free): Free the path.
+
+ * camel-store.h: Added a path member to the FolderInfo type.
+
+2001-09-20 Dan Winship <danw@ximian.com>
+
+ * camel-charset-map.c (camel_charset_to_iconv): Nuke debug warning.
+
+2001-09-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c: Updated exception strings to be more clear.
+
+ * camel-pgp-mime.c (pgp_mime_part_sign_restore_part): Stupid
+ mistake, fixes bug #9975.
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): Oops, don't fail if
+ `data' isn't a CamelService...cuz it's not supposed to be! It's a
+ CamelTcpStreamSSL object...doh!
+
+2001-09-19 Not Zed <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.
+
+2001-09-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c: Match mailing-list header List-Owner.
+
+2001-09-18 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-store.c (vee_get_folder): Fix the uri genereated for
+ the folderinfo for the folder_created event.
+
+ * camel-store.h: Added 'total' to CamelFolderInfo.
+
+2000-09-18 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-folder.c
+ (camel_maildir_folder_new): If filter inbox is set on the store,
+ and we're opening inbox '', then enable filtering on new messages.
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): After loading the summary, check
+ it, and only abort if that fails. Also maintain the changes
+ count.
+
+ * providers/local/camel-local-summary.c
+ (camel_local_summary_load): Remove summary_check code from here.
+ (camel_local_summary_check): Sync index/summary here, if we were
+ successful.
+
+ * providers/local/camel-spool-folder.c
+ (camel_spool_folder_new): If we have filter-new-messages-on-inbox
+ set and we just opened inbox, turn on filtering on this folder.
+ (camel_spool_folder_construct): Keep track of changes for the
+ folder, so that filter-new-messages works right (?)
+
+ * providers/local/camel-spool-store.c (get_folder): Pass 'INBOX'
+ as the folder name, not the path.
+
+ * camel-folder-search.c (search_not): Modified patch from
+ <peterw@ximian.com> since the summary is messageinfo's, not
+ strings.
+
+ ** Ok so the problem with the stuff below is that maildir/spool
+ 'summary_load' throws away all events, including recents, joy eh?
+
+ * providers/local/camel-maildir-summary.c (maildir_summary_check):
+ Add new messages to the recent changeinfo.
+
+ * providers/local/camel-spool-summary.c: Mark 'new' message as
+ recent, for later processing if required (i.e. 'filter new
+ messages').
+
+ * camel-store.c (construct): new function, cascade up construct
+ method and check for 'filter' param, and set accordingly for any
+ one that might want it.
+
+ * providers/imap/camel-imap-store.c (construct): map the
+ param_filter_inbox flag to the store->flags as
+ CAMEL_STORE_FILTER_INBOX.
+
+ * camel-store.h (CAMEL_STORE_FILTER_INBOX): new flag to tell it to
+ filter inbox.
+
+ * providers/imap/camel-imap-folder.h: Removed do_filtering flag
+ from CamelImapFolder.
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Remove
+ the 'recents' parameter, use the 'changes' parameter instead to
+ convey this info.
+ (camel_imap_folder_changed): Changed for update_summary api
+ change. Now always just emit the changed event if we have any
+ changes to report, filtering code removed, handled upstream.
+ (filter_proc):
+ (filter_free): Removed old filtering code.
+ (camel_imap_folder_new): Set the filter_recent flag on the folder
+ if we're the inbox and filtering of inbox is enabled.
+
+ * camel-folder.c (folder_changed): If we have 'recent' messages,
+ and are set to filter recents, then freeze the folder and launch a
+ thread to do the processing (or similar if threading not enabled).
+ (thaw): Make sure we emit the changed signal outside of owning the
+ lock and if things have changed. Also, no longer bother
+ downgrading folder_changed events to message_changed events.
+
+ * camel-folder.h (struct _CamelFolder): Added filter_recent flag
+ -> signifies all recent messages in folder should be filtered.
+
+ * camel-session.c: (camel_session_thread_msg_new,
+ camel_session_thread_msg_free, camel_session_thread_queue,
+ camel_session_thread_wait): code to handle async operations as
+ part of camel processing.
+ (camel_session_finalise): free thread_lock, destroy thread, active
+ hash, etc.
+ (camel_session_init): init thread, active hash, etc.
+ (camel_session_class_init): Init virtual functions.
+ (session_thread_msg_new, session_thread_msg_free,
+ session_thread_destroy, session_thread_received,
+ session_thread_queue, session_thread_wait): default implementation
+ of session threads stuff.
+
+2001-09-17 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (camel_folder_change_info_recent_uid): New
+ function to add a 'recent' uid to the change info.
+ (camel_folder_change_info_clear): Clear recent list.
+ (camel_folder_change_info_free): Free recent list.
+ (camel_folder_change_info_new): Setup recent list.
+
+ * camel-folder.h: Added a uid_recent item to the folder_changed
+ event data.
+
+ * providers/local/camel-maildir-store.c (scan_dir): Free new in
+ the right block.
+
+ * providers/local/camel-local-provider.c: Add local config entries
+ to filter on new messages in spool and maildir provider.
+
+ * camel-vee-folder.c (vee_folder_construct): Remove the assertion
+ which stops ? in names from being allowed.
+
+2001-09-18 Dan Winship <danw@ximian.com>
+
+ * camel-data-wrapper.c (camel_data_wrapper_is_offline): Virtualize
+ this.
+
+ * camel-medium.c (is_offline): A medium is offline if its content
+ object is offline.
+
+ * camel-multipart.c (is_offline): A multipart is offline if any of
+ its subparts are offline.
+
+2001-09-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-charset-map.c: Added korean charset conversion.
+
+2001-09-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (delete_folder): Don't process
+ the ImapResponse data, we don't want to block forever on data we
+ don't care about...
+ (create_folder): Use get_folders_online() instead of
+ get_folder_info_online().
+
+ * camel-folder.c: Reverted previous changes.
+
+2001-09-17 JP Rosevear <jpr@ximian.com>
+
+ * Makefile.am: Helpful install-exec-hook debugging output
+
+2001-09-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder.c (camel_folder_get_uri): New function to get the
+ URI of a folder.
+ (get_uri): Default implementation.
+
+2001-09-14 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (camel_vee_folder_set_folders): New function,
+ set the complete list of folders on a vfolder, all at once.
+ (camel_vee_folder_set_expression): If we set the query to be the
+ same thing, dont do anything.
+
+ * camel-vee-store.c (camel_vee_store_init): Turn off vtrash for
+ this store.
+
+ * camel-store.c (camel_store_init): Enable vtrash by default via
+ flags.
+ (camel_store_get_trash): REturn NULL if the store doesn't support
+ vtrash.
+ (init_trash): Dont init if store doesn't support vtrash.
+
+ * camel-store.h: Add a new flags CAMEL_STORE_VTRASH -> store
+ supports vtrash.
+
+2001-09-13 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-store.c (vee_get_folder_info): Implement.
+ (build_info): Used to build a folder record from the folders
+ hashtable.
+ (vee_delete_folder): Implemented, remove folder from hashtable.
+ (vee_rename_folder): Implemented, remove old folder from
+ hashtable, add new one and rename its guts too.
+
+ * camel-store.c (camel_store_rename_folder): Do nothing if we're
+ not asked to actually change names. Also dont do the renamed
+ cache check till after we've called the subclass.
+ (camel_store_delete_folder): Call the subclass delete firs,t then
+ make sure the cache is right.
+
+ * camel-vee-folder.c (vee_folder_construct): Remove support for
+ name?query syntax to setup vfolder. Abort if such syntax is used.
+ (camel_vee_folder_new): Removed code that handles ? syntax, etc.
+ (vee_folder_build_folder): Handle unset expression, treat it as an
+ empty search.
+ (camel_vee_folder_set_expression): Oops, actually set the
+ expression.
+
+ * camel-vtrash-folder.c (camel_vtrash_folder_new): Dont use
+ name?query syntax to setup vfolder, but set the expression
+ directly. Also fixes a small memleak.
+
+2001-09-12 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.c (camel_store_delete_folder): Fixed warnings with a
+ cast.
+ (camel_store_rename_folder): "
+
+2001-09-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-url.c (camel_url_set_param): Use g_datalist_set_data_full
+ so that the data will be free'd when we clear the list.
+
+2001-09-14 Dan Winship <danw@ximian.com>
+
+ * camel-file-utils.c (camel_file_util_encode_string,
+ camel_file_util_decode_string): Don't claim failure when
+ reading/writing the empty string.
+
+2001-09-14 JP Rosevear <jpr@ximian.com>
+
+ * Makefile.am: use install hook instead of install rule to
+ guarantee we run after installation
+
+2001-09-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder): Don't
+ reuse the exception if it has already been set.
+ (camel_filter_driver_filter_message): Same here. Also use the new
+ return value from camel_filter_search_match().
+
+ * camel-filter-search.c (camel_filter_search_match): Return an
+ integer (matched, no-match, or error).
+
+ * providers/local/camel-mbox-folder.c (mbox_append_message): Do
+ error-checking based on function return values rather than
+ exceptions as it's possible for them to be NULL.
+ (mbox_get_message): Same.
+
+ * providers/imap/camel-imap-folder.c (imap_append_offline): Pass
+ an exception to the cache.
+ (imap_append_online): Same.
+ (imap_append_resyncing): Here too.
+ (imap_copy_offline): And here.
+ (handle_copyuid): Pass NULL as the exception here...
+ (parse_fetch_response): And finally here.
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_insert):
+ (insert_setup):
+ (camel_imap_message_cache_insert_stream):
+ (camel_imap_message_cache_insert_wrapper):
+ (camel_imap_message_cache_copy): Take an exception argument and
+ set it on error.
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): Convert the charset
+ to the iconv-friendly name.
+
+ * camel-charset-map.c (camel_charset_to_iconv): Add code to
+ convert windows-[cp]#### charsets to their iconv-friendly format
+ of cp####.
+
+ * camel-pgp-context.c (crypto_exec_with_passwd): Return -1 on
+ failure.
+
+2001-09-12 Larry Ewing <lewing@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_mbox): free
+ the source url in the nonfailure case.
+
+2001-09-12 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-search.h: Change the 'not' virtual method from an
+ immediate e-sexp function to a non-immediate one, which is what it
+ should be.
+
+ * camel-folder-search.c (search_not): Implement a 'not' function
+ ourselves. If 'not' on a vector value, then not over all items
+ in the summary.
+ (builtings[]): Change the 'not' builtin to be a non-immediate
+ function.
+
+2001-09-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_mbox): Unref
+ the message info.
+
+2001-09-10 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-store.c (get_folder_info): Pass in
+ a hashtalbe used for finding visited nodes.
+ (inode_hash):
+ (inode_equal):
+ (inode_free): Helper functions for visited node checks, hashes on
+ inode + device number.
+ (scan_dir): Dont re-visited directories we've already visited, use
+ inodes + device number.
+ Also, if the folder doesn't contain cur/tmp/new, mark it as
+ noselect, but continue to recurse folders, if asked.
+
+ * camel-folder.c (move_messages_to): Progress reporting while
+ moving messages.
+
+ * camel-store.c (camel_store_delete_folder): Make sure we remove
+ the folder from our vtrash, if we have it in our opened set, and
+ also remove it from our hashtable.
+ (camel_store_rename_folder): Remove the old folder name from the
+ folder cahce, if it is there.
+
+2001-09-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-charset-map.c (camel_charset_to_iconv): Get rid of the
+ g_warning, we no longer really need that.
+
+2001-09-10 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_msg_new): Forgot
+ to return the newly allocated msg.
+
+2001-09-08 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-summary.c (spool_summary_sync_full):
+ Likewise.
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync_full):
+ Fix the wording.
+
+ * camel-tcp-stream-raw.c (stream_read): Save errno around fcntl
+ call in cancellable read case. Also, loop while we get EINTR.
+ This might fix some weird reconnect behaviour with pop.
+ (stream_write): "
+
+2001-09-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): #if 0 out the code that
+ was hopefully going to fix bug #5325 because the functions I used
+ seem to have been deprecated. *sigh*.
+
+ * camel-remote-store.c (camel_remote_store_finalise): Disconnect
+ from the service here otherwise the locks will be destroyed and by
+ the time CamelService finalizes we'll crash or hang.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Make sure to
+ unref the mime filters when we finish with them.
+
+2001-09-07 Ettore Perazzoli <ettore@ximian.com>
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync_full):
+ s/Synchronising/Synchronizing/.
+ (mbox_summary_sync_quick): Likewise.
+ (summary_rebuild): s/Summarising/Summarizing/.
+
+2001-09-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-multipart.c (camel_multipart_set_boundary): Take a const
+ char * instead of a char *.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Reuse the
+ original boundary instead of generating our own.
+
+2001-09-06 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-folder.c (filter_proc): Thread
+ function to perform filtering.
+ (filter_free): Free the filter object.
+ (camel_imap_folder_changed): If we have threads enabled, then
+ queue up a request to perform filtering. For bug #4422.
+
+ * providers/imap/camel-imap-store.c (camel_imap_msg_new): Create a
+ new 'imap msg'.
+ (camel_imap_msg_queue): Queue an 'imap msg'.
+ (async_received): Handle receiving of imap msg in async thread.
+ (async_destroy): Handle destroying of imap msg.
+ (camel_imap_store_finalize): Destroy thread when done.
+ (camel_imap_store_init): Setup thread.
+
+ * providers/imap/camel-imap-store.h: Added an ethread to the
+ store, for async processing.
+
+2001-09-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-remote-store.c (remote_recv_line): Use
+ camel_stream_buffer_read_line() instead of duplicationing the
+ functionality. Also, the previous way was broken anyway. What if a
+ line was the same length as our buffer? Then we'd go and read a
+ second line and a third and so on until they weren't the same
+ length, leaving \r's in the middle of the buffer.
+
+2001-09-06 Dan Winship <danw@ximian.com>
+
+ * providers/pop3/camel-pop3-store.c (pop3_get_response): Fix this
+ to always set an exception if it returns POP3_FAIL, as documented.
+
+ * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream):
+ Revert.
+
+2001-09-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream):
+ Set an exception on POP3_FAIL as well.
+
+2001-09-06 Dan Winship <danw@ximian.com>
+
+ * providers/pop3/camel-pop3-provider.c: #ifdef out the "delete
+ after N days" option in pop3_conf_entries, since it won't be done
+ for 1.0.
+
+2001-09-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-remote-store.c (remote_disconnect): Too late to sync the
+ folders here... if this is gonna happen at all it should be done
+ in the provider.
+
+ * camel-service.c (camel_service_finalize): Do a clean disconnect.
+
+2001-08-30 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-spool-store.c (get_inbox): Return the
+ default folder (ie. INBOX) rather than saying we don't support an
+ inbox.
+
+ * camel-tcp-stream-ssl.c: #include pk11func.h.
+ (ssl_bad_cert): Use CERT_GetDefaultCertDB.
+
+2001-08-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-smime-context.c (smime_sign_prepare): Do the same here as
+ what we did in the pgp code a moment ago.
+ (smime_sign_restore): And again here.
+ (smime_sign): And update thise code to pass in the address of the
+ encodings list when restoring parts.
+
+ * camel-pgp-mime.c (pgp_mime_part_sign_prepare_part): Special-case
+ message/rfc822 mime parts - don't set an encoding on these,
+ instead traverse into their subparts and set the encodings for
+ those.
+ (pgp_mime_part_sign_restore_part): Reverse any operations done to
+ message/rfc822 parts in the above prepare_part() function and also
+ take a pointer to a GSList of encodings instead of just a GSList
+ so we can properly keep track of which encoding we are on.
+ (camel_pgp_mime_part_sign): Pass in the address to the encodings
+ list when restoring parts.
+
+2001-08-29 Not Zed <NotZed@Ximian.com>
+
+ * providers/pop3/camel-pop3-folder.c (pop3_sync): Add progress
+ reporting to deleting messages. Dont change the calculation to a
+ bloody float. Bug #6189.
+
+2001-08-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (crypto_exec_with_passwd): Initialize buf
+ and diag_buf to NULL, hopefully this fixes the crash if the
+ select() times out.
+ (pgp_encrypt): Argh. What was I thinking? Don't use "-r recipient"
+ as an argument, instead use "-r" and "recipient" as 2 separate
+ arguments to pgp. This might fix the "gpg only encrypts to my
+ private key" bug?
+
+2001-08-28 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (create_folder): Whoops.
+ Double-free and FMR = bad.
+
+ * camel-remote-store.c (remote_send_string): Don't reveal the
+ user's IMAP password if their server supports LITERALPLUS. Also
+ add some more dashes to make it line up nicely :-)
+
+2001-08-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): If the user accepts the
+ certificate, add it to the database as a trusted CA.
+
+2001-08-28 Peter Williams <peterw@ximian.com>
+
+ * camel-object.c (camel_object_unref): Make the locking more
+ fine-grained on destruction; specifically, don't hold the
+ type lock while calling the finalize functions.
+
+2001-08-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-local-provider.c: Changed the
+ description/names of some of the local providers to try and
+ clarify the meanings.
+
+ * providers/pop3/camel-pop3-provider.c: Simplify the POP
+ description - we want short but sweet.
+
+ * providers/imap/camel-imap-provider.c: s/IMAPv4/IMAP
+
+2001-08-27 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-part-utils.c (convert_buffer): re-read the iconv man
+ page, and treat the return value properly. It returns the number
+ of non-reversible conversions performed, not the number of output
+ characters, sigh.
+ (check_html_charset): Changed to just take a buffer of data, and
+ not the mime parser.
+ (simple_data_wrapper_construct_from_parser): Since we dont need
+ the charset till we have all the data, search for the charset
+ after we've read the data, if we have html data with no charset in
+ the header.
+ (simple_data_wrapper_construct_from_parser): Remove the
+ seekable_source stuff.
+
+ * Re-apply patches from before.
+
+2001-08-25 Not Zed <NotZed@Ximian.com>
+
+ ["Summarising" and "Synchronising" are spelt with a "s" in
+ ENGLISH]
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync_quick):
+ s/Synchronizing/Synchronising/.
+
+ * providers/local/camel-mbox-summary.c (summary_rebuild):
+ s/Summarizing/Summarising/
+
+2001-08-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-disco-diary.c (camel_disco_diary_replay): Use fseek
+ instead of fseeko since we want to be portable and use ftell
+ rather than ftello for the same reason.
+ (camel_disco_diary_empty): Same here.
+
+2001-08-24 Peter Williams <peterw@ximian.com>
+
+ * Revert Not Zed's previous commits as they apparently can cause
+ serious data loss for POP3 users.
+
+2001-08-24 Ettore Perazzoli <ettore@ximian.com>
+
+ ["Summarizing" and "Synchronizing" are spelt with a "z" in the
+ default locale, that happens to be "en_US".]
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync_quick):
+ s/Synchronising/Synchronizing/.
+
+ * providers/local/camel-mbox-summary.c (summary_rebuild):
+ s/Summarising/Summarizing/
+
+2001-08-24 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-part-utils.c (convert_buffer): Limit the maximum
+ output buffer size. iconv bugs? returns E2BIG forever on some
+ (valid) data?
+
+ * providers/local/camel-spool-summary.c (summary_rebuild):
+ Likewise.
+
+ * providers/local/camel-mbox-summary.c (summary_rebuild):
+ Summarising is spelt with an s.
+
+2001-08-23 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-part.c (write_to_stream): If we have rawtext, then
+ dont do any charset conversion, only encoding/crlf conversion.
+
+ * camel-data-wrapper.h (struct _CamelDataWrapper): Added 'rawtext'
+ member, says the character encoding is raw, not utf8.
+
+ * providers/local/camel-spool-summary.c
+ (spool_summary_sync_quick): Synchronising is spelt with an s, not
+ a z.
+ (spool_summary_sync_full): "
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync_full):
+ No, synchronising is spelt with an s.
+ (mbox_summary_sync_quick): "
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Remove the
+ warnings which aren't going anywhere fast.
+ (convert_buffer): Function to convert a bytearray of textual
+ content from one charset to another. If the charset doesn't exist
+ or fails, then do no conversion.
+ (simple_data_wrapper_construct_from_parser): First, read in data,
+ then try and convert it using the specified charset if supplied.
+ If that fails, then dont do any conversion, and leave as raw.
+ Also, if we have any x-* charsets, then dont do any processing.
+
+2001-08-23 Peter Williams <peterw@ximian.com>
+
+ * providers/local/camel-mbox-summary.c (summary_rebuild): Add a
+ missing \n to the end of a printf.
+
+ * providers/local/camel-spool-summary.c (summary_rebuild): Same.
+
+2001-08-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-folder.c (pop3_generate_uids):
+ Oops. Fixed a mis-use of GPtrArray. If we set_size, then using
+ g_ptr_array_add will assume `size' elements have already been
+ initialized and will start appending on to the end.
+
+2001-08-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_verify): Turn on --batch and reenable
+ gpg keyserver lookups.
+ (pgp_decrypt): Disable keyserver lookups if we are disconnected.
+
+2001-08-21 Dan Winship <danw@ximian.com>
+
+ * camel-folder-thread.c
+ (camel_folder_thread_messages_new_summary): Fix the duplicate
+ message check so it doesn't mess up threading when a reply appears
+ in the folder before the message it's a reply to. Fixes bug #3357.
+ (camel_folder_thread_messages_new): Likewise, although I don't
+ think this function is used any more.
+
+2001-08-20 JP Rosevear <jpr@ximian.com>
+
+ * Makefile.am: build a static camel for the addressbook conduit
+
+2001-08-20 Ettore Perazzoli <ettore@ximian.com>
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync_full):
+ s/Synchronising/Synchronizing/.
+ (mbox_summary_sync_quick): Likewise. *
+ providers/local/camel-spool-summary.c (spool_summary_sync_full):
+ Likewise.
+ (spool_summary_sync_quick): Likewise.
+
+2001-08-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (create_folder): Get the
+ entire directory structure for the folder we just created, meaning
+ if we created a folder named "test.mailbox" where test didn't
+ previously exist, get the listing for "test" and "test.mailbox".
+
+ * providers/imap/camel-imap-utils.c (imap_parse_folder_name): New
+ function.
+
+2001-08-19 Chris Toshok <toshok@ximian.com>
+
+ * camel-store.h: #include <sys/types.h> for mode_t on freebsd.
+
+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...
+
+2001-08-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Start
+ scanning new messages at maxuid + 1 rather than uidval + 1? Maybe
+ I'm missing the logic, but anyways...this might fix bug #5348.
+
+2001-08-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_keepalive): If we are
+ online and message flags have changed in the current folder, sync
+ the flags else do a NOOP. This fixes bug #4666. Also lock around
+ the NOOP command.
+
+ * providers/imap/camel-imap-folder.c (imap_sync_online): Don't
+ ever send "STORE FLAGS.SILENT ()" since Cyrus imapd doesn't like
+ this (and maybe others too?) so what we'll do instead is to send
+ "STORE -FLAGS.SILENT (\Seen \Answered \Deleted \Marked)" to clear
+ all the flags (since this is in essence what we want to do
+ anyway).
+
+2001-08-16 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect_online): Fix
+ this again. Sigh. Problem of namespace = "" may not yet be
+ completely solved.
+
+2001-08-15 Peter Williams <peterw@ximian.com>
+
+ * camel-tcp-stream-openssl.c (ssl_error_to_errno): New
+ function. Try to approximate the SSL error into errno.
+ (errlib_error_to_errno): New function, try to approximate
+ OpenSSl's error library's error (ERR_*) into errno.
+ (stream_read): Try to set errno using ssl_error_to_errno.
+ (stream_write): Same.
+ (open_ssl_connection): Same.
+
+ * providers/imap/camel-imap-store.c (imap_connect_online): Oh
+ crap, huge killer typo.
+
+2001-08-14 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect_online):
+ Canonicalize store->namespace to end in store->dir_sep, once both
+ values are known. The %F-related code makes this
+ assumption. Probably fixes a bug reported on the mailing list.
+
+2001-08-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (camel_store_get_folder): After talking to NotZed,
+ it turns out I was wrong after all.
+ (store_sync): Create a copy of the folder-cache that owns a ref on
+ each of the folders so that if one of the folders get's finalized
+ inside store_sync(), we don't run into any locking issues. This is
+ mostly meant to solve a problem in IMAP (#6089).
+
+2001-08-13 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (delete_folder): Fix a leak.
+
+ * providers/imap/camel-imap-utils.c (imap_namespace_concat): Bleah,
+ handle when namespace = NULL (can happen upon initial open of mailbox.)
+
+ * providers/imap/camel-imap-command.c (imap_command_strdup_vprintf):
+ Don't crash when %F'ing with an empty folder name and NULL namespace.
+
+2001-08-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (camel_store_get_folder): We need to be ref'ing
+ the folder if/when we add it to the hash. This may fix bug #6089?
+ (camel_store_get_folder): Nevermind, reverted the fix.
+ (camel_store_get_folder): No, I wasn't on crack before after
+ all...if we don't ref here, then we're open to a race condition
+ later.
+
+2001-08-11 Ettore Perazzoli <ettore@ximian.com>
+
+ * providers/local/camel-spool-summary.c (summary_rebuild):
+ s/summarising/summarizing/.
+ (summary_rebuild): Likewise.
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync_full):
+ s/summarise/summarize/.
+ (mbox_summary_sync_quick): Likewise.
+ (summary_rebuild): Likewise.
+ (mbox_summary_check): Likewise.
+
+2001-08-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_quote_string): Added an
+ assert - at this point a backtrace would be more useful than a
+ transaction log for debugging.
+
+ * providers/imap/camel-imap-command.c (imap_command_start): Return
+ FALSE here, not NULL.
+
+ * providers/imap/camel-imap-folder.c (imap_rescan): Don't
+ g_strdup() the uid into the trigger_event call.
+
+ * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream):
+ Set the total bytes expected to 0 if the response is empty too.
+ (pop3_refresh_info): Return of there was an error generating pop3
+ uids.
+
+ * camel-mime-utils.c (header_raw_check_mailing_list): regfree the
+ pattern before continue'ing. This was showing up quite a bit under
+ purify.
+
+2001-08-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_parse_string_generic): A
+ quoted string cannot contain \n's so check for those as well.
+ (imap_atom_specials): Update this to fix bug #6553.
+
+2001-08-08 Jon Trowbridge <trow@ximian.com>
+
+ * camel-filter-search.c (get_source): Remove trailing stuff from
+ URLs before returning. (Done in an evil way, not in the good way
+ suggested by fejj. :)) (Bug #4876)
+
+2001-08-08 jacob berkman <jacob@ximian.com>
+
+ * camel-search-private.c (camel_search_header_match): check for
+ NULL name and addr (fixes a bug i was about to report)
+
+2001-08-08 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-search.c (check_header): Properly determine match
+ type to pass to header_match.
+ (address_matches_exactly): Removed, effectively added to
+ camel_search_header_match.
+
+ * camel-folder-search.c (check_header): Properly determine the
+ match type to pass to header_match.
+
+ * camel-search-private.c (camel_search_header_match): Add a new
+ parameter 'type' which is the type of header we're matching
+ against. ASIS means utf8 format, ADDRESS means an internet
+ address ('formatted'), ADDRESS_ENCODED means a raw address header,
+ ENCODED means rfc 2047 encoded text.
+ (header_match): Move original logic here, have search_header_match
+ call it as appropriate for the 'type' of match.
+
+2001-08-07 Not Zed <NotZed@Ximian.com>
+
+ * camel-session.c (camel_session_class_init): Only init the vee
+ provider struct once (if we're subclassed this will get called
+ multiple times).
+
+ * camel-object.c (obj_finalize): Removed a bit of a debug that
+ crept in with jacob's poolv patch (?).
+
+2001-08-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-search.c (address_matches_exactly): New function to
+ do danw's address "is" comparison (as specified in bug #5886.
+ (check_header): Special-case address-type headers when we are
+ doing an exact match to use the address_matches_exactly function.
+
+2001-08-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream):
+ Modify to take a headers_only argument which will then only fetch
+ message headers.
+ (pop3_generate_uids): Pass in TRUE for headers_only.
+ (pop3_get_message): Pass in FALSE for headers_only and move the
+ camel_operation() stuff out of get_message_stream and in to here
+ instead.
+ (pop3_generate_uids): We also need to be using i+ 1 as the id
+ since we are starting at 0.
+
+2001-08-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-folder.c (pop3_get_message_stream):
+ New internal function to get a message stream by message sequence
+ id (so that we can share code between pop3_get_message and
+ pop3_generate_uids).
+ (pop3_get_message): Use pop3_get_message_stream.
+ (pop3_generate_uids): New function to generate UIDs based on the
+ message - this fixes bug #1256.
+ (pop3_refresh_info): If the server doesn't support UIDL, call
+ pop3_generate_uids to get our list of UIDs.
+
+ * providers/imap/camel-imap-store.c (get_folder_info_online):
+ Don't strstr for noselect=yes, that's just plain broken.
+
+2001-08-06 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_rescan): Fix off-by-one
+ error in cleaning up deleted messages at the end of the folder.
+ Fixes bug #5585 and maybe others.
+
+ * providers/imap/camel-imap-store.c (get_folder_info_online): Do a
+ refresh_info on the selected folder before looking at its unread
+ count. Should fix bug #4944.
+
+2001-08-06 Peter Williams <peterw@ximian.com>
+
+ Completely hide the namespace from everything external to the IMAP
+ code, which Dan W says is the way it should be.
+
+ * providers/imap/camel-imap-command.c
+ (imap_command_strdup_vprintf): Add a new %F argument, which is like
+ %S but will add the namespace (for folder names).
+ (camel_imap_command): Use %F here.
+
+ * providers/imap/camel-imap-utils.c (imap_parse_list_response):
+ Changed to strip out the namespec when returning *folder. In order
+ to do this we need to be passed the CamelImapStore.
+ (imap_concat): Move to here from camel-imap-store.c, un-static
+ (imap_namespace_concat): New function, adds the namespace to the
+ folder name, unless it's INBOX.
+
+ * providers/imap/camel-imap-utils.h: Prototypes.
+
+ * providers/imap/camel-imap-store.c (imap_connect_online): Extra
+ arg to imap_parse_list_response.
+ (imap_connect_offline): Here too.
+ (get_folder_status): Use %F.
+ (get_folder_online): Here too.
+ (delete_folder): Here too.
+ (create_folder): Here too, and arg to imap_parse_list_response.
+ (parse_list_response_as_folder_info): Arg to i_p_l_r.
+ (get_subscribed_folders_by_hand): Use %F.
+ (get_folders_online): Here too.
+ (get_folder_info_online): Instead of checking for NULL @name, check
+ for name = NULL or "", and set to "" instead of namespace. Pass ""
+ instead of namespace to camel_folder_info_build.
+ (subscribe_folder): Use %F.
+ (unsubscribe_folder): Here too.
+
+ * providers/imap/camel-imap-folder.c (imap_get_full_name): This
+ now just returns folder->full_name.
+ (do_append): Use %F
+ (do_copy): Here too.
+
+2001-08-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_verify): Always do --no-auto-key-retrieve.
+
+2001-08-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_verify): Minor changes to the iconv
+ code so that it does the check in the return value of iconv() just
+ like the code in camel-mime-utils.c in case this fixes Bo Rosen's
+ gpg bugs (but I doubt this will change anything?).
+
+2001-08-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): First
+ check to make sure that service->url->authmech is non-NULL before
+ passing it into strcmp to avoid a segfault.
+
+ * camel-pgp-context.c (pgp_decrypt): Sigh, if gpg returns '1' it
+ means that the key is bad but it did succeede in decrypting the
+ block so to make users happy (even though I find this a
+ questionable action) we are going to ignore the error and show it
+ to the user anyway. This fixes bug #6136.
+
+2001-08-03 Not Zed <NotZed@Ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): special
+ case popb4smtp auth before we try and connect, and do the magic
+ here first.
+
+2001-08-02 Not Zed <NotZed@Ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): Check for
+ POPB4SMTP separate to the esmtp auth list.
+ (smtp_auth): If creating the sasl object means it is
+ already authenticated, then exit early. Sort of 'clean hack' to
+ help popb4smtp work.
+ (smtp_auth): Unref the sasl object, clean up a memleak i think.
+
+ * providers/smtp/camel-smtp-provider.c
+ (camel_provider_module_init): Added POPB4SMTP auth type.
+
+ * camel-sasl.c (camel_sasl_authtype): Added POPB4SMTP type.
+
+ * camel-sasl-popb4smtp.c: New file for pop before smtp
+ 'authentication'.
+
+ * Makefile.am (libcamel_la_SOURCES, HEADERS): Add
+ camel-sasl-popb4smtp.[ch].
+
+2001-08-01 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-mbox-folder.c (mbox_lock): If we fail to
+ get the lock, make sure we close our locking fd, and reset it.
+ Fixes the crash part of 5095.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ Slightly re-arranged filter/change notification logic. If we;re
+ filtering, freeze the folder till we're finished to smooth the ui
+ for new mail.
+
+2001-07-31 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (camel_folder_init): Changed mutexes to
+ e_mutexes, folder lock recursive. This fixes the imap filtering
+ bug, or at least some cases of it.
+ (camel_folder_finalize): Free mutexes.
+
+ * camel-private.h (CamelFolderPrivate): Changed mutexes to
+ e_mutexes.
+
+2001-07-25 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (camel_folder_change_info_*): Change the
+ return if fail's into asserts.
+ (camel_folder_change_info_free): Don't let it accept a NULL
+ argument. This isn't g_lib so we dont have to.
+
+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.
+
+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.
+
+2001-07-26 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-command.c (camel_imap_command_start):
+ Send an IMAP command, but don't wait for responses.
+ (camel_imap_command_response): Read a single line of response from
+ the server.
+ (camel_imap_command, etc): Reimplement in terms of the new code.
+
+ * providers/imap/camel-imap-folder.c (imap_rescan): Use
+ camel_imap_command_start and camel_imap_command_response, and
+ call camel_operation_progress after each line read from the
+ server.
+ (imap_update_summary): Likewise, although with more fudging on the
+ precentages... Also, fix this so that if none of the new messages
+ are cached, it only does a single FETCH, and if some of them are
+ cached, it does two FETCHes (one to get the UIDs, FLAGS, and
+ SIZEs, and another to get the bodies of all of the messages that
+ aren't cached now that it knows the relevant UIDs). This should
+ speed up startup a bunch (especially if you have high bandwidth
+ but also high latency to the IMAP server).
+
+2001-07-25 Dan Winship <danw@ximian.com>
+
+ * camel-mime-utils.c (mail_mlist_magic): Add another Sender
+ pattern.
+
+2001-07-24 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ Change the break into a continue, we should process as many as we
+ can find.
+
+ * camel-folder.c (camel_folder_move_messages_to): If we have no
+ uid's to copy, exit here before going any further. Some code
+ internally [imap] assumes there are uids to copy otherwise it can
+ segfault.
+ (camel_folder_copy_messages_to): Same.
+
+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.
+
+ * camel-url.h (CAMEL_URL_HIDE_ALL): New #define, and there was
+ much rejoicing. Rah.
+
+2001-07-24 Not Zed <NotZed@Ximian.com>
+
+ * camel-operation.c (camel_operation_register, unregister): Added
+ some warnings for bad cases.
+
+2001-07-23 Not Zed <NotZed@Ximian.com>
+
+ * camel-operation.c (camel_operation_register): Only insert a hash
+ entry if we haven't already.
+ (camel_operation_unregister): Only remove the has entry if the id
+ is a real thread.
+
+2001-07-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (do_move): Slight fix for when source ==
+ destination (we don't want to do this action because on-demand
+ filtering would then delete the messages it supposedly "moved").
+
+2001-07-23 Not Zed <NotZed@Ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_auth, smtp_helo,
+ send_to): Added some operation progress reporting. Actual data
+ transfer is 'tricky' because of the layers used.
+ (smtp_auth): Instead of checking exception_is_set, use
+ challenge==NULL to test if sasl_challenge_base64 failed.
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync): Remove
+ peters changes below and put in a better fix. These functions
+ already return -1 on error, just use that, and not worry about
+ building our own exception redundantly.
+
+ * camel-service.c (camel_get_host_byname): Turn the progress into
+ a transient event.
+
+2001-07-20 Peter Williams <peterw@ximian.com>
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync): More
+ usage fixes for CamelException. Check our own exception for
+ summary_update and xfer it out if an error occurred.
+
+2001-07-20 JP Rosevear <jpr@ximian.com>
+
+ * Pull up test fixes to get them building again
+
+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
+ consistent and not so long & fixed callers.
+
+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().
+
+2001-07-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_verify): Modified to treat the return
+ value from camel_charset_locale_name() as a const char*.
+
+ * camel-sasl-digest-md5.c (digest_response): Modified to treat the
+ return value from camel_charset_locale_name() as a const char*.
+
+ * camel-charset-map.c (camel_charset_locale_name): Modify to
+ return const char* by returning the static locale_charset which is
+ created inside of camel_charset_map_init().
+ (camel_charset_map_init): Find the locale charset here and set the
+ static variable.
+
+2001-07-19 Peter Williams <peterw@ximian.com>
+
+ Policy change: NULL url's are no longer allowed in
+ CamelFolderInfos. They used to signify that the folder was, in
+ IMAP jargon, NoSelect; now the same effect is achieved by adding a
+ "noselect=yes" parameter to the end of the URL. As far as I know,
+ IMAP is the only affected provider.
+
+ * providers/imap/camel-imap-store.c (delete_folder): New
+ function. Implement folder deletion.
+ (camel_imap_store_class_init): Set the delete_folder class
+ function here.
+ (get_folder_status): New function. Utility wrapper around the
+ STATUS command.
+ (create_folder): If the parent folder is NoSelect but is empty,
+ delete it and recreate it as a a subfolder-containing folder. If
+ it is NoSelect but contains messages, set an exception.
+ (parse_list_response_as_folder_info): Always set the FolderInfo's
+ URL, but add a NoSelect parameter if it isn't selectable.
+ (get_folder_info_online): Change logic of removing the namespace
+ to reflect URL change. Same for logic of checking unread counts.
+ (get_folder_info_online): Use get_folder_status to simplify this.
+
+ * camel-store.c (camel_folder_info_build): When creating dummy
+ parents, copy the child's URL and set the NoSelect parameter.
+
+2001-07-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): No need for
+ `acharset' anymore.
+ (check_html_charset): Return a const char* and also use
+ camel_charset_get_iconv_friendly_name() internally.
+
+ * 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.
+
+2001-07-19 Peter Williams <peterw@ximian.com>
+
+ * Revert 7/11/2001 patch for IMAP INBOX filtering at NotZed's
+ request.
+
+2001-07-17 Peter Williams <peterw@ximian.com>
+
+ Clean up some exception misusage.
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): Use
+ our own internal exception for sending the string and transfer it
+ to @ex if anything goes wrong.
+ (imap_read_response): Use our own internal exception for reading
+ the untagged responses and blah blah blah.
+
+ * camel-session.c (get_service): Use our own internal exception
+ when constructing the service and transfer it to @ex if anything
+ goes wrong.
+
+ * camel-remote-store.c (remote_recv_line): Instead of having
+ gboolean exception, use our own internal exception and copy
+ it to @ex if anything goes wrong.
+
+ * camel-store.c (store_sync): Create an internal exception
+ because sync_folder() checks it for validity. Transfer it to
+ @ex when done.
+
+ * camel-exception.c (camel_exception_get_description): If @ex is
+ NULL, complain - passing NULL exceptions to Camel is okay, but
+ there should be no circumstances under which they're then
+ examined.
+ (camel_exception_get_id): Same here,
+ (camel_exception_xfer): NULL-protect and warn if transferring from
+ a NULL exception.
+
+2001-07-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (init_trash): Use CAMEL_VTRASH_NAME.
+
+ * camel-vtrash-folder.h: #define CAMEL_VTRASH_NAME
+
+2001-07-16 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-command.c (camel_imap_response_free):
+ Given:
+ * 4 EXISTS
+ * 1 EXPUNGE
+ We have to pass 3, not 4 to camel_imap_folder_changed for the
+ exists count. Fixes ximian bug #2112 (finally!).
+
+2001-07-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ If the message info for an expunged message is NULL, then just
+ break out - maybe a message was expunged that we were never
+ notified even existed?
+
+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.
+
+2001-07-13 Peter Williams <peterw@ximian.com>
+
+ * Makefile.am (install-exec-local): Let people install as
+ non-root, but give them a bigass warning so they're not allowed to
+ complain when it doesn't work right.
+
+ * camel-remote-store.c (sync_remote_folder): New function: hash
+ table callback.
+ (remote_disconnect): If cleanly disconnecting, sync our
+ folders. Fixes deadlocks on exit (folders syncing after store
+ disconnects) and also makes sense.
+
+2001-07-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-uid-cache.c (camel_uid_cache_new): We now use a structure
+ as the bucket data rather than just a cache level so set the save
+ state to TRUE.
+ (maybe_write_uid): We only save the uid if the cache levels are
+ the same *and* if the save state is TRUE.
+ (free_uid): Free the state value.
+ (camel_uid_cache_get_new_uids): New uids that get added to the
+ cache start with a save state of FALSE.
+ (camel_uid_cache_save_uid): Set the save state of the uid to
+ TRUE. What should we do if the uid isn't already in the cache?
+ Currently I make it add the uid, but maybe it shouldn't?
+
+ * providers/imap/camel-imap-folder.c (imap_filter_timeout): Update
+ to reflect CamelFilterDriver API changes.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder): Take
+ a cache argument so we can tell the cache whether or not the uid
+ should be saved (meaning we have successfully filtered it).
+
+2001-07-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message):
+ Okay, I've decided that that user is just on crack. We don't want
+ to allow filtering of deleted messages or we could get some
+ unexpected behavior.
+ (do_move): Oops. My last fix needs to be after the if-statement,
+ not inside it.
+ (do_copy): And here too.
+
+2001-07-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (do_move): Only set p->copied and
+ p->deleted if the messages are copied without an exception.
+ (do_copy): Same - but obviously we don't set the p->deleted here
+ at all.
+ (camel_filter_driver_filter_message): Since users complained that
+ they couldn't filter deleted messages for "safe keeping" (WTF?
+ safe keeping? why were they deleted in the first place then??), I
+ have taken out the code that optimized filtering by not allowing
+ deleted messages to be filtered. This fixes bug #4473.
+
+ Note: Users have a warped sense of logic.
+
+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.
+
+ * camel-folder-summary.c
+ (camel_folder_summary_info_new_from_message): Removed some code i
+ wasn't supposed to commit.
+
+ * providers/local/camel-local-summary.c (local_summary_add): Only
+ set info->size if it is not zero.
+ (local_summary_add): If we dont get a size from the info passed
+ in, calculate it using a null stream write. Should do #4392.
+
+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.
+
+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.
+
+2001-07-11 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ Run the filter in its own thread to prevent locking issues.
+ (imap_filter_timeout): New function that does the filtering called
+ as a CamelSession timeout.
+
+2001-07-11 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_mbox): Create
+ the messageinfo itself, so we can properly set the size.
+
+ * camel-movemail.c (camel_movemail_solaris): Write out the from
+ line between each message.
+
+2001-07-10 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-summary.c (local_summary_add): Copy
+ the size across from the source message info if supplied.
+
+ * camel-stream-null.c: Added a 'written' member which keeps track
+ of how much has been written to the stream.
+
+ * camel-movemail.c (camel_movemail): If we have BROKEN_SPOOL
+ defined, then use the solaris movemail to quote from lines that
+ sendmail didn't.
+ (camel_movemail_solaris): Compile this in if BROKEN_SPOOL defined.
+
+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.
+
+2001-07-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_sign): Forget the passphrase if the
+ user has set that option.
+ (pgp_clearsign): Same.
+ (pgp_encrypt): And here...
+ (pgp_decrypt): And finally here.
+ (camel_pgp_context_new): Take a `remember' argument.
+
+2001-07-09 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-summary.c (maildir_summary_sync):
+ Oops, e_poolv_set free's it for us, so dont double-free here.
+
+2001-07-06 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (camel_vee_folder_finalise): Changed so we
+ dont have the list changing under us, just going to the next node
+ before we call a function that might change the list is
+ potentially dangerous (slight mod of peters fix). Hmm, i think it
+ would've double-unref'd it too(?)
+
+2001-07-08 Chris Toshok <toshok@ximian.com>
+
+ * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_finalize):
+ openssl_table is gone. we now store/get the stream from the
+ SSL_CTX's app_data.
+ (stream_read): rework the non-blocking case to account for SSL
+ possibly buffering data (in which case select will block even
+ though data is ready to be read), and to account for FreeBSD's
+ strange behavior of returning -1/EAGAIN even though select said
+ the fd was ready to be read.
+ (ssl_verify): openssl_table is gone.
+ (open_ssl_connection): set the SSL_CTX's app_data to be the
+ stream, remove the openssl_table code.
+
+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.
+
+ * providers/local/camel-maildir-store.c (get_inbox): Fixes bug
+ #1138.
+
+ * providers/local/camel-mbox-summary.c
+ (camel_mbox_summary_build_from): Make the `day-of-month' digit
+ take up 2 chars by using "%2d". Fixes bug #3989 for lame mailers
+ like Pine.
+
+ * camel-pgp-context.c (crypto_exec_with_passwd): Set the pipe fd's
+ to nonblocking.
+
+2001-07-06 Peter Williams <peterw@ximian.com>
+
+ * camel-object.c (camel_object_unref): Make sure that after the
+ finalization event has happened and the finalization functions
+ have been called that the object still has a zero refcount.
+
+2001-07-06 Joe Shaw <joe@ximian.com>
+
+ * providers/nntp/camel-nntp-grouplist.c: Add locking to
+ camel_nntp_get_grouplist_from_server().
+
+ * providers/nntp/camel-nntp-resp-codes.h: Added
+ NNTP_EXTENSIONS_SUPPORTED (202).
+
+ * providers/nntp/camel-nntp-store.c (camel_nntp_store_get_extensions):
+ Check for both NNTP_LIST_FOLLOWS and NNTP_EXTENSIONS_SUPPORTED from
+ a LIST EXTENSIONS request. (Dunno if NNTP_LIST_FOLLOWS ever comes
+ out of this, but that's what was already there...) Also, put some
+ locking around it.
+ (finalize): e_mutex_destroy() the command lock
+ (camel_nntp_store_init): e_mutex_new() the command lock.
+
+ * providers/nntp/camel-nntp-store.h: Add locking macros.
+
+2001-07-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.c (camel_message_info_string): Added an
+ assert to make sure that `mi' isn't NULL.
+ (camel_message_info_set_string): Same.
+
+ * providers/imap/camel-imap-command.c (camel_imap_response_free):
+ Create and use a temporary CamelException for use with
+ camel_imap_folder_changed.
+
+2001-07-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_verify): Send the
+ --no-auto-key-retrieve argument to gpg if we are in offline mode
+ so that we don't have to worry about gpg hanging if it can't
+ connect to the key servers, because now it shouldn't even attempt
+ to.
+
+2001-07-05 Chris Toshok <toshok@ximian.com>
+
+ * camel-tcp-stream-openssl.c (ssl_verify): use
+ X509_STORE_CTX_get_ex_data to get at the SSL* - don't use the
+ X509_STORE_CTX to look up our stream, since it's not what we used
+ to insert our stream into the hashtable.
+ (open_ssl_connection): insert the stream into the hashtable before
+ calling SSL_connect, as this can cause ssl_verify to be called,
+ and we need to look up the stream there. remove the stream from
+ the hashtable if there's an error connecting.
+ (stream_connect): pass the CamelTcpStreamOpenSSL* to
+ open_ssl_connection since it handles the hashtable stuff. remove
+ hashtable stuff from here.
+
+2001-07-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder.c (camel_folder_copy_messages_to): if source ==
+ dest, just no-op.
+
+2001-07-05 Peter Williams <peterw@ximian.com>
+
+ * camel-vee-folder.c (camel_vee_folder_finalise): Move this before the
+ camel_vee_folder_remove_folder because that function modifies p->folders
+ messing up our iteration.
+ (camel_vee_folder_finalise): Don't unref our summary; camel-folder now
+ does this.
+
+ * camel-object.h (CamelObject): Add a 'destroying' flag to CamelObject.
+
+ * camel-object.c (obj_init): Clear 'destroying'.
+ (camel_object_unref): If 'destroying' then do not send the finalize
+ event and do not call finalize functions. Otherwise, set destroying
+ so just in case we get refed (eg event code) we don't get doubly
+ finalized.
+
+2001-07-05 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-filter-basic.c (filter): Fix the assertion slightly,
+ if we have a little bit of input the output size could be larger,
+ since we store upto 3 chars in the state.
+
+ * camel-folder-summary.c
+ (camel_folder_summary_info_new_from_message): When indexing a new
+ record, create a pseudo word 'ibexindexed' so we can always tell
+ that a message has already been idnexed, even if it contains no
+ words of its own. Things like maildir use this check to see if
+ its already been processed, and it matters if it is incorrect in
+ this case (not just wasted cycles).
+ (camel_message_info_dup_to): Assign the to->strings from the
+ e_poolv_cpy() call, since it may allocaote a new poolv if the
+ lengths do not match.
+
+ (camel_folder_summary_info_new_from_parser): And same here.
+
+ * providers/local/camel-maildir-summary.c (maildir_summary_sync):
+ Changed the logicfor epoolv code to be different, we dont need to
+ update hash references or any tricky stuff.
+ (maildir_summary_check): Samehere.
+
+ * camel-folder-summary.h: Removed include of e-memory.h.
+
+2001-07-03 Joe Shaw <joe@ximian.com>
+
+ * providers/nntp/camel-nntp-resp-codes.h: Added NNTP_NO_PERMISSION
+ (502) to the list of response codes.
+
+ * providers/nntp/camel-nntp-store.c (nntp_store_connect): If we
+ receive a NNTP_NO_PERMISSION, don't get into an infinite loop trying
+ to reconnect, get extensions, etc. Just give up and return FALSE.
+
+2001-07-03 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_clear): Doh. Don't remove things from
+ the hash table while foreach'ing it. (And can't use foreach_remove
+ either because we have to remove them in a weird order). Fixes
+ #3618.
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): If the
+ server returns OK from the FETCH BODY, but there's no parseable
+ BODY response, it's probably because there's an UN-parseable BODY
+ response, implying the message is badly formatted, MIMEwise. In
+ that case, fall back to fetching the message as a single part.
+
+2001-07-02 Sam Creasey <sammy@oh.verio.com>
+
+ * providers/nntp/camel-nntp-folder.c: Implemented
+ nntp_folder_search_by_expression and
+ nntp_folder_search_free. Basic search functionality e.g. unread
+ marking now works for NNTP folders.
+
+ * camel_filter_search.c (get_size): Added get-size sexp directive
+ to get the size of a message for filters.
+
+ * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new):
+ Always check with the NNTP server after summary load -- this
+ function now always expires old summary entries and syncs with
+ the news server.
+
+ * providers/nntp/camel-nntp-utils.c (camel_nntp_get_headers):
+ Only fetch headers for articles not already logged in
+ the summary file.
+
+ * providers/nntp/camel-nntp-grouplist.c
+ (camel_nntp_get_grouplist_from_*): change from g_list_append()
+ to g_list_prepend() + g_list_reverse. Traversing 40,000
+ element linked lists sucks.
+
+ * providers/nntp/camel-nntp-store.c (camel_nntp_command):
+ Should the NNTP connection die with
+ CAMEL_EXCEPTION_SERVICE_NOT_CONNECTED, make a single retry
+ attempt. Timing out the NNTP link is less painful this way.
+
+2001-07-02 Peter Williams <peterw@ximian.com>
+
+ * README (Introduction): Add comment noting that Camel actually
+ exists now :-)
+
+2001-07-02 Dan Winship <danw@ximian.com>
+
+ * camel-session.c (camel_session_get_filter_driver): new method to
+ get an application-initialized filter driver.
+
+ * camel-filter-driver.c (camel_filter_driver_new): Remove the
+ get_folder function and data args from here...
+ (camel_filter_driver_set_folder_func): ...and add this function to
+ set/change them.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new): If
+ this folder is INBOX and we're filtering INBOX, set a flag on the
+ folder for later.
+ (imap_update_summary): Add another argument (GPtrArray *recents),
+ and if it's non-NULL, add the uids of any \Recent new messages to
+ it.
+ (camel_imap_folder_changed): If doing filtering in this folder,
+ create a recents array and pass it to imap_update_summary. Then
+ get a filter driver and use it to filter the recent messages.
+
+ * providers/imap/camel-imap-summary.h:
+ * providers/imap/camel-imap-utils.c (imap_parse_flag_list): Add
+ support for the \Recent flag.
+
+ * providers/imap/camel-imap-provider.c (imap_conf_entries): enable
+ the "filter" option.
+
+ * camel-types.h: add CamelFilterDriver typedef here
+
+2001-07-02 Not Zed <NotZed@Ximian.com>
+
+ * camel-lock-client.c (camel_lock_helper_init): properly return
+ error if we can't create pipes.
+
+ * camel-folder-summary.c (summary_build_content_info): re-enable
+ html indexing.
+
+ * camel-mime-filter-html.c: Completely re-implemented using a
+ custom parser.
+
+2001-07-02 Dan Winship <danw@ximian.com>
+
+ * tests/misc/url.c (main): Change a camel_exception_clear to
+ camel_exception_init to fix a sometimes-crash
+
+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.
+
+ * tests/mime-filter/Makefile.am: Build the test-crlf test program.
+
+ * tests/mime-filter/test-crlf.c: New test suite for the crlf
+ filter.
+
+ * camel-mime-filter-crlf.c (filter): Fixed to correctly encode and
+ decode dots.
+
+2001-06-28 Peter Williams <peterw@ximian.com>
+
+ * camel-mime-filter-stripheader.c: New file. Filter that strips a
+ header from mime output.
+
+ * camel-mime-filter-stripheader.h: New file. Header for the above.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Use the
+ stripheader filter to remove the "Bcc" header.
+
+ * Makefile.am: Add the stripheader files.
+
+ * tests/lib/Makefile.am (INCLUDES): Get this to compile again.
+
+ * tests/mime-filter/test-stripheader.c: New file. Test suite for
+ the CamelMimeFilterStripHeader.
+
+ * tests/mime-filter/Makefile.am: New test section: mime filters.
+
+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.
+
+2001-06-28 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_refresh_info): If the
+ folder is frozen, don't refresh, just record that we need to do it
+ later.
+ (imap_append_online): If the APPEND doesn't trigger an immediate
+ EXISTS response (because the folder isn't the selected folder, or
+ because the server doesn't do that until the next command), call
+ imap_refresh_info on the folder.
+ (imap_copy_online): Likewise. (Replacing the unconditional NOOP
+ that was there before, which absolutely killed filter performance
+ by forcing the IMAP provider to switch back and forth between
+ folders after every copy or move.)
+ (imap_thaw): If the folder needs a refresh, do it.
+
+ * camel-folder.c (camel_folder_is_frozen): New method
+
+2001-06-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-transport.c (camel_transport_init): Initialize the private
+ send_lock.
+ (camel_transport_finalize): Free the private send_lock.
+ (camel_transport_get_type): Set the init and finalize functions.
+ (camel_transport_send): Lock the transport.
+ (camel_transport_send_to): Same.
+
+ * camel-private.h: Add CAMEL_TRANSPORT_(UN)LOCK macros.
+
+2001-06-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * tests/folder/test9.c (main): Updated to match the current API.
+
+ * tests/folder/test3.c: #include <gtk/gtk.h> since we use
+ gtk_init().
+
+ * 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.
+
+2001-06-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (open_folder): Since we want an error
+ opening a folder to result in the message being copied to Inbox
+ (assuming no other filters get a chance to `move` it), don't
+ record any exceptions that may occur in this function.
+
+2001-06-26 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_selected,
+ imap_append_offline, imap_append_online,
+ camel_imap_folder_changed): lock the cache around accesses
+
+ * providers/imap/camel-imap-store.c (get_folder_online): ref the
+ newly-created folder (as current_folder) before calling
+ camel_imap_folder_selected, in case that needs to do something
+ that causes another folder to become current...
+
+ * camel-service.c (camel_service_get_url): D'oh.
+ s/FALSE/CAMEL_URL_HIDE_PASSWORD/
+
+2001-06-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-search.c (get_source): g_strdup() the message
+ source here or we will have problems later when we go to free the
+ result ;-)
+
+2001-06-25 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (try_auth): Fix this: IMAP
+ doesn't allow an extra argument to AUTHENTICATE to avoid a useless
+ round trip like some other SASL bindings do.
+
+ * providers/imap/camel-imap-command.c (imap_read_response): Deal
+ with IMAP servers that (incorrectly) return "+\r\n" rather than
+ "+ \r\n" for an empty continuation response.
+ (camel_imap_response_extract_continuation): Likewise.
+
+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.
+
+2001-06-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_send): Use
+ camel_address_length() rather than casting and accessing data
+ members.
+
+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.
+
+2001-06-19 Not Zed <NotZed@Ximian.com>
+
+ * camel-lock-helper.c (unlock_id): Fixed a bug when not running
+ setuid it wouldn't unlock.
+
+ * camel-movemail.c (camel_movemail): use new
+ locking daemon, also return an error code.
+
+2001-06-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ Note: Except for the info_free(), the NULL checks are
+ g_return's. I felt that since g_free() handles NULL that our
+ _free() functions should also.
+
+ * camel-folder.c (camel_folder_change_info_free): Check to make
+ sure that the info pointer isn't NULL.
+ (camel_folder_change_info_change_uid): Same.
+ (camel_folder_change_info_changed): Same.
+ (camel_folder_change_info_remove_uid): Same.
+ (camel_folder_change_info_add_uid): Same.
+ (camel_folder_change_info_build_diff): Same.
+ (camel_folder_change_info_cat): Same.
+ (camel_folder_change_info_add_source): Same.
+ (camel_folder_change_info_add_source_list): Same.
+ (camel_folder_change_info_add_update): Same.
+ (camel_folder_change_info_add_update_list): Same.
+
+2001-06-18 Dan Winship <danw@ximian.com>
+
+ * tests/stream/Makefile.am (LDADD):
+ * tests/smime/Makefile.am (LDADD):
+ * tests/misc/Makefile.am (LDADD):
+ * tests/message/Makefile.am (LDADD):
+ * tests/folder/Makefile.am (LDADD): Remove DB3_LDADD
+
+ * Makefile.am (install-exec-local): Set camel-lock-help setgid or
+ setuid as needed
+
+2001-06-18 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-summary.c
+ (camel_folder_summary_info_new_from_parser): Only create a missing
+ uid if we have indexing turned on.
+
+ * camel-lock-helper.c (setup_process): Function to setup
+ process/sanity/security checks. Change to the real uid as soon as
+ we can.
+ (lock_path): First try to lock as the real uid, if that fails, try
+ the root uid.
+ (unlock_id): Unlock as the uid we created the lock as.
+
+ * Makefile.am (INCLUDES): Added -DCAMEL_SBINDIR for lock helper
+ location.
+
+ * providers/local/camel-spool-folder.c (spool_lock): Implemented,
+ using lock helper locking. Need to work out if the locking
+ requires a root created lock?
+ (spool_unlock): Likewise.
+
+2001-06-15 Not Zed <NotZed@Ximian.com>
+
+ * camel-lock-helper.c: Setuid Lock helper process. Creates and manages
+ .locks, keeping them active, removing them, etc. What real perms it
+ needs is a little system dependent.
+
+2001-06-14 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-store.c (get_folder_info): Implement.
+ (scan_dir): Does the work of scanning for maildir directories.
+
+2001-06-13 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-store.c (get_folder_info):
+ Implemented, just returns a hardcoded INBOX folder.
+ (free_folder_info): implemented, free's the 1 possible level of
+ folder info.
+
+ * providers/local/camel-spool-folder.c
+ (camel_spool_folder_construct): Set the real unread message
+ count on the folder_created thing.
+
+2001-06-15 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_max_uid): Return the largest real UID in
+ the cache (as an integer). Eventually to be used for an
+ optimization in the new-message fetch code.
+ (cache_put): Keep track of max_uid.
+
+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.
+
+2001-05-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (header_decode_param): Properly handle
+ correct and incorrect (for the common case, ie Outlook and
+ Netscape/Mozilla) rfc2184 values.
+ (header_decode_rfc2184_param): Get the param name and see if we
+ should expect a rfc2184 parameter value.
+ (rfc2184_decode): Decode a rfc2184 value.
+ (hex_decode): hex decode a string.
+ (header_decode_param_list): Handle rfc2184 encoded parameters (ie
+ parameters that have been split and perhaps encoded).
+ (header_param_list_format_append): Encode the value before seeing
+ if it will fit on the line. If the value does get encoded, be sure
+ to put a '*' before the equal-sign.
+ (header_encode_param): New function to rfc2184 encode a parameter
+ value (maybe it should be renamed?)
+
+2001-06-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part.c (init_header_name_table): Don't try to format
+ the Reply-To header - we don't want to wrap the reply-to address.
+
+2001-06-12 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-spool-*.[ch]: A new provider, for spool
+ mailboxes. Mostly a cut and paste of the mbox code, but not a
+ subclass CamelLocal*. Not tested a lot, doesn't lock yet, use
+ with extreme caution.
+
+ * tests/lib/folders.c (test_folder_message_ops): Added spool arg,
+ spool folders can't be deleted, renamed, etc.
+ (test_folder_basic): Same.
+
+ * tests/folder/test2.c (main): Added checks for spool type.
+
+ * tests/[message|stream|folder|misc|smime]/Makefile.am (LDADD):
+ Added db3 flags, so make check compiles, doesn't run though.
+
+2001-05-24 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-local-provider.c
+ (camel_provider_module_init): Added spool provider.
+
+2001-06-07 Jon Trowbridge <trow@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder): Add a
+ separator between the service url and the folder name, if needed.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_mbox): Added
+ an argument, so that the original source URI of the mbox can be
+ passed in. This is needed because this function is called
+ post-movemail, so we are never reading from the original mbox
+ anymore. Without the original mbox URI, the X-Evolution-Source
+ tag gets set incorrectly and filter-on-source will fail to work.
+ (camel_filter_driver_filter_message): Also take an extra arg
+ for the original source URI. It is the original URI, not the
+ source URI, that is used for filtering and for setting the
+ X-Evolution-Source tag.
+
+2001-06-05 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_rescan): Don't fetch
+ the UID and FLAGS of messages we don't know about yet, since
+ they'll just get discarded.
+
+2001-06-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * tests/smime/pgp.c: Fix to not get into a recursive loop in
+ get_type().
+
+ * tests/smime/pgp-mime.c: Same.
+
+2001-05-31 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-smime-context.c: Numerous fixes to get it to compile.
+
+ * camel.h: Added camel-cipher-context.h, camel-cms-context.h,
+ camel-smime-context.h, and camel-smime-utils.h
+
+ * camel-cms-context.[c,h]: New virtual class for manipulating
+ cryptographic message syntax messages (like S/MIME).
+
+ * camel-smime-context.[c,h]: Modified to inherit from the
+ CamelCMSContext class rather than the CamelCipherContext class.
+
+ * camel-smime.[c,h]: Removed - just use camel-smime-context
+ directly.
+
+ * camel-smime-utils.[c,h]: New source files. Moved the 2 useful
+ functions from camel-smime.[c,h] into here.
+
+2001-05-30 Dan Winship <danw@ximian.com>
+
+ * camel-charset-map.c: Redo the BUILD_MAP code to not depend on
+ libunicode. Now it only generates a map of "popular" 8bit
+ encodings. (It's not worthwhile to support obscure encodings,
+ because any mailer that supports them will support UTF8 too. And
+ Chinese and Japanese use mostly the same UTF8 characters so you
+ need to decide between those encodings based on the locale or
+ the charset of the message you're replying to or the input
+ method you used. So this is sufficient for camel_charset_best's
+ use.)
+
+ * camel-charset-map-private.h: Regenerated.
+
+ * camel.c (camel_shutdown): Move #ifdefs around to prevent a
+ warning.
+
+2001-05-29 Dan Winship <danw@ximian.com>
+
+ * camel-disco-diary.c: Code for logging and replaying offline
+ operations.
+
+ * camel-disco-store.c (disco_construct): Set disco->status here
+ (where we can base it on the session's offline status) rather than
+ at init time.
+ (disco_connect): If we connect online and have a non-empty diary,
+ switch to RESYNCING mode and replay the diary to the server.
+ (disco_get_folder, disco_get_folder_info): Add _resyncing
+ variants.
+
+ * camel-disco-folder.c (disco_sync, disco_expunge_uids,
+ disco_append_message, disco_copy_messages_to,
+ disco_move_messages_to): Add _resyncing variants to switches.
+ (disco_expunge_uids, disco_append_message, disco_copy_messages_to,
+ disco_move_messages_to): Remove #ifdef'ed out diary code: let the
+ provider do it.
+ (disco_append_message): Redo the append methods to no longer
+ return the UID, since we're no longer doing the logging from here.
+
+ * providers/imap/camel-imap-store.c (imap_connect_online,
+ imap_connect_offline): Create a CamelDiscoDiary.
+ (imap_disconnect_offline): And free it.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
+ If RESYNCING, don't do any sort of checking that the remote folder
+ matches the summary, beyond making sure that the UIDVALIDITY is
+ correct.
+ (imap_rescan): Add a missing camel_folder_summary_info_free when
+ removing a UID from the summary.
+ (imap_expunge_uids_offline): Implement. Fairly simple.
+ (imap_expunge_uids_resyncing): Implement. If the store supports
+ UIDPLUS, we can just use imap_expunge_uids_online. If not, we need
+ to temporarily undelete any messages marked deleted on the server
+ that aren't supposed to get expunged.
+ (imap_append_offline): Implement, using cache and summary
+ operations, and triggering the folder_changed event by hand.
+ (imap_append_resyncing): Implement. Redo imap_append_online a bit
+ in the process to make them able to share more code.
+ (imap_copy_offline): Implement.
+ (imap_copy_online): Move parts of this out into a helper.
+ (imap_copy_resyncing): Implement. In most cases this is just like
+ imap_copy_online, but if you are copying a message that was itself
+ copied or appended into the folder, and the server doesn't do
+ UIDPLUS, it will be necessary to replace at least part of the copy
+ operation with one or more appends.
+
+ * providers/imap/camel-imap-command.c (imap_read_response): Don't
+ record the current folder in the response when in RESYNCING mode.
+ (This means that EXISTS and EXPUNGE responses won't be processed,
+ which is needed because the summary may not match the folder at
+ this point.)
+ (imap_read_response): On error, call
+ camel_imap_response_free_without_processing, not
+ camel_imap_response_free.
+
+ * providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Make
+ this work better when operating on UIDs that aren't in the summary.
+
+ * providers/imap/camel-imap-summary.c
+ (camel_imap_summary_add_offline): New routine used by
+ imap_append_offline and imap_copy_offline to create new summary
+ entries.
+
+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.
+
+2001-05-27 Dan Winship <danw@ximian.com>
+
+ * 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.
+
+2001-05-26 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c: Add a "need_rescan" flag
+ saying if we want to rescan the entire folder for flag changes
+ next time it's selected.
+ (camel_imap_folder_init): Set need_rescan TRUE.
+ (camel_imap_folder_selected): If need_rescan is TRUE, call
+ imap_rescan.
+ (imap_refresh_info): Only do a full rescan if need_rescan is TRUE.
+ Otherwise just do a NOOP, making this a MUCH more lightweight
+ operation. Also, don't call imap_rescan directly if the folder
+ isn't selected, since that could end up causing the folder to be
+ scanned *twice* (imap_rescan -> camel_imap_command ->
+ camel_imap_folder_selected -> imap_rescan).
+ (imap_rescan): Set need_rescan FALSE.
+ (imap_sync_online): Don't NOOP if no changes were pushed: the
+ caller will call refresh_info if it wants to poll for changes.
+ Fixes evolution-mail doing lots of unnecessary extra work at
+ quit time.
+
+ * providers/imap/camel-imap-store.c (refresh_folder_info): Set
+ need_rescan on each folder before calling refresh_info.
+
+2001-05-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_auth): Oops. Use a
+ strNcmp to make sure the response begins with a 334 code, not a
+ strcmp. Duh.
+
+ * providers/local/camel-maildir-folder.c (maildir_append_message):
+ remove the summary info so we are not out-of-sync with the maildir
+ folder.
+
+ * providers/local/camel-mh-folder.c (mh_append_message): remove
+ the summary info so we are not out-of-sync with the mh folder.
+
+ * providers/local/camel-mbox-folder.c (mbox_append_message):
+ remove the summary info so we are not out-of-sync with the mbox.
+
+2001-05-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-smime-context.c (camel_smime_context_new): Oops, I spelled
+ the get-default-db function name wrong.
+
+2001-05-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): s/folder_deleted/folder_created -
+ result of a bad copy/paste.
+
+ * providers/imap/camel-imap-search.c (imap_body_contains):
+ Optimize the match "" case.
+
+2001-05-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info_online):
+ Store the CamelFolderInfo tree that was returned from
+ camel_folder_info_build() in a new variable, 'tree', rather than
+ 'fi' since we later use 'fi' when syncing folders. Not only does
+ this fix a memory leak, but it also fixes the bug where the user
+ would only see the last folder in the folder list and/or it's
+ subfolders.
+
+2001-05-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-session.c (camel_session_forget_password): The service can
+ be NULL here too, thanks to Wayne Davis for pointing this out.
+
+ * camel-smime-context.c (camel_smime_context_new): We don't need
+ to be passed the certdb path anymore.
+
+2001-05-16 Dan Winship <danw@ximian.com>
+
+ * camel-medium.c (camel_medium_get_headers): New function to
+ return an array of all headers.
+ (camel_medium_free_headers): And free them.
+
+ * camel-mime-part.c (get_headers, free_headers): Implement this
+ for CamelMimePart. (Works for CamelMimeMessage too.)
+
+2001-05-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-smime-context.c (camel_smime_context_finalise): Don't
+ close or free (it wasn't allocated) the certdb.
+ (camel_smime_context_new): If we get a NULL certdb handle, then
+ don't bother trying to create a new certdb handle since NSS_Init*
+ should have done that.
+
+2001-05-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Don't use EXTRA_GNOME_*, use the new CAMEL_*
+ variables so we don't link in tons of extra cruft that we don't
+ need.
+
+ * tests/smime/pkcs7.c: Added to the test suite - tests the S/MIME
+ pkcs7 functions.
+
+2001-05-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-smime-context.c: Lots of fixes to get this to compile.
+
+ * camel-smime.c (camel_smime_part_verify): Updated to pass in a
+ hash argument to camel_smime_verify().
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_verify): Update according
+ to the changes in the context API.
+
+ * camel-pgp-context.c (pgp_verify): Updated to take a
+ CamelCipherHash argument.
+
+ * camel-cipher-context.c (camel_cipher_verify): Now takes a hash
+ argument since the S/MIME code needs this.
+
+ * Makefile.am: Add camel-smime-context.[c,h] and camel-smime.[c,h]
+ to the build.
+
+ * camel-smime.[c,h]: New source files for manipulating S/MIME
+ message parts.
+
+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 Jeffrey Stedfast <fejj@ximian.com>
+
+ * tests/folder/test9.c:
+ * tests/folder/test8.c:
+ * tests/folder/test7.c:
+ * tests/folder/test6.c:
+ * tests/folder/test5.c:
+ * tests/folder/test4.c:
+ * tests/folder/test3.c:
+ * tests/folder/test2.c:
+ * tests/folder/test1.c:
+ * tests/smime/pgp-mime.c:
+ * tests/smime/pgp.c: Subclass CamelSession since we can no longer
+ specify the passwd callback any other way and update code
+ accordingly.
+
+2001-05-11 Dan Winship <danw@ximian.com>
+
+ * camel-mime-utils.c (header_location_decode): Decode
+ Content-Location, either correctly or Netscape-generated-brokenly.
+
+ * camel-mime-part.c (camel_mime_part_set_content_location,
+ camel_mime_part_get_content_location, etc): Deal with
+ Content-Location header.
+
+2001-05-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_auth): Don't check
+ the initial auth response until we get into the while-loop
+ otherwise we have problems if the SASL mechanism supported a
+ client initiated challenge (like PLAIN and LOGIN do).
+
+2001-05-11 Dan Winship <danw@ximian.com>
+
+ * camel-stream-null.c (camel_stream_null_new): Make this return
+ CamelStream * (like the other stream new functions) instead of
+ CamelStreamNull *
+
+2001-05-10 Chris Toshok <toshok@ximian.com>
+
+ * camel-tcp-stream-ssl.c (stream_connect): call SSL_Enable after
+ the SSL_ImportFD and before PR_Connect. Otherwise, NSS aborts
+ during the connect.
+
+2001-05-10 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-session.c (camel_session_get_password): Don't abort if the
+ Service is NULL, this is perfectly valid for cipher contexts.
+
+2001-05-09 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_move_messages_to): Pass
+ appropriate parameters to CF_CLASS and add comment explaining why
+ my initial attempt at a solution didn't work.
+
+2001-05-09 Dan Winship <danw@ximian.com>
+
+ * camel-disco-store.c (camel_disco_set_status): Set the
+ disconnected status.
+ (camel_disco_store_can_work_offline): Return whether or not a
+ given CamelDiscoStore can work offline or not.
+
+ * camel-disco-folder.c (camel_disco_folder_cache_message):
+ Explicitly tell a folder to cache a message. (Better than using
+ get_message, because for IMAP that doesn't guarantee you'll get
+ all the message parts.)
+ (camel_disco_folder_prepare_for_offline): Prepare a folder for
+ offline use by caching all messages meeting given search criteria
+ (and doing anything else the particular folder implementation
+ needs).
+
+ * camel-session.c (camel_session_set_online,
+ camel_session_is_online): A session-wide online/offline toggle.
+ (camel_session_init): Set online to TRUE.
+
+ * providers/imap/camel-imap-store.c (can_work_offline):
+ Implementation of CamelDiscoStore::can_work_offline. (Checks that
+ the store has been used online at least once.)
+ (imap_get_folder_online, imap_get_folder_offline): Deal with
+ request for "inbox" properly. ("Don't you mean... 'INBOX'?").
+
+ * providers/imap/camel-imap-folder.c (imap_cache_message):
+ Implementation of CamelDiscoFolder::cache_message.
+
+ * camel.h: Add camel-disco-store.h and camel-disco-folder.h
+
+2001-05-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-part.c (camel_mime_part_set_content_id): Wrap the
+ content-id with <>'s.
+
+2001-05-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (connect_to_server): Add
+ support for using OpenSSL.
+
+ * camel-remote-store.c (remote_connect): Add support for using the
+ OpenSSL implementation.
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): Hmmmm, don't pass in a
+ NULL as the last argument to alert_user - prototype doesn't take
+ that argument anymore?
+
+ * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_finalize):
+ (ssl_verify): Use a global hash table to try and lookup the
+ CamelTcpStreamOpenSSL object given the ssl context since OpenSSL
+ doesn't think one needs to pass data around, we should all be
+ living in a world of global variables, duh!
+
+2001-05-06 Dan Winship <danw@ximian.com>
+
+ * Makefile.am (libcamelinclude_HEADERS): Fix another build
+ problem. (Um, anyone else could have done this...)
+
+2001-05-04 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_online): Fix up
+ refcounting on current_folder.
+
+ * camel-disco-folder.c, camel-disco-store.h: Remove
+ CamelDiscoDiary refs that weren't supposed to escape yet.
+
+2001-05-03 Dan Winship <danw@ximian.com>
+
+ * camel-disco-store.c: new abstract class for disconnectable
+ remote stores
+
+ * camel-disco-folder.c: new abstract class for folders on
+ disconnectable stores.
+
+ * Makefile.am: Add camel-disco-folder.[ch] and
+ camel-disco-store.[ch].
+
+ * providers/imap/camel-imap-store.c: Make this a subclass of
+ CamelDiscoStore, and fix up the offline interfaces for the changes
+ since they were first written (particularly the fact that some
+ IMAP stores don't just use subscribed folders).
+
+ * providers/imap/camel-imap-folder.c: Make this a subclass of
+ CamelDiscoFolder, although most ops still fail in disconnected
+ mode.
+
+ * camel-store.c (camel_store_get_folder_info): Change gboolean,
+ gboolean, gboolean to guint32 in the prototype for this function.
+
+ * providers/local/camel-local-store.c (get_folder_info): Update
+ for prototype change.
+
+2001-05-02 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.h: Clean this up a bit. Add a
+ "tag_prefix" member. Move "useful_lsub" into capabilities.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_init):
+ Initialize the tag_prefix, based on a static variable.
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): Use
+ the store's tag_prefix character rather than "A" at the start of
+ the tag. Makes the verbose debug output easier to parse when
+ connected to multiple IMAP servers. (Well, unless you're connected
+ to more than 26 servers...)
+
+ * providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Fix
+ this up... it was losing count in some cases and giving a more
+ verbose answer than it needed to.
+
+ * providers/pop3/camel-pop3-store.c: Rescue the KPOP code from bit
+ rot.
+
+2001-05-01 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): Redo
+ command locking. Since command_lock is recursive, we can just get
+ a lock here, and release it either on error, or when the caller
+ frees the response data. (This simplifies a lot of stuff, and
+ fixes some problems with camel_imap_folder_changed being called
+ without the command_lock locked because of the 2001-03-22 change.)
+
+ (camel_imap_response_free):
+ (camel_imap_response_free_without_processing):
+ (camel_imap_response_extract):
+ (camel_imap_response_extract_continuation): These all take a
+ CamelImapStore now as well, to deal with locking.
+
+ * providers/imap/camel-imap-private.h: Add
+ CAMEL_IMAP_STORE_ASSERT_LOCKED, which defaults to a noop, but can
+ be made to call e_mutex_assert_locked.
+
+ * providers/imap/camel-imap-folder.c, camel-imap-search.c,
+ camel-imap-store.c: Simplify using new locking stuff. Add a few
+ CAMEL_IMAP_STORE_ASSERT_LOCKED checks.
+
+2001-05-01 Dan Winship <danw@ximian.com>
+
+ Support the IMAP UIDPLUS extension (RFC 2359), which lets you
+ resync after disconnected operation more efficiently, but also
+ makes it possible to do appends and moves/copies more efficiently
+ now.
+
+ * providers/imap/camel-imap-folder.c (imap_append_message): If the
+ server supports UIDPLUS, grab the APPENDUID response and cache the
+ message into the folder's message cache.
+ (imap_copy_messages_to): Likewise, for COPYUID, copy any message
+ parts we have cached between the source and destination folder
+ caches.
+ (imap_get_message): If the entire message is already in the cache,
+ just return that rather than building it from parts.
+ (imap_update_summary): Fetch just the "UID FLAGS RFC822.SIZE" of
+ the new messages first, then only fetch the headers for messages
+ where we don't already have the headers cached.
+
+ * providers/imap/camel-imap-message-cache.c: Add gtk-doc comments.
+ (cache_put): Fix refcounting stuff here.
+ (camel_imap_message_cache_insert_stream,
+ camel_imap_message_cache_insert_wrapper): New.
+ (camel_imap_message_cache_get): Fix a bug here so the memory
+ caching actually works.
+ (camel_imap_message_cache_copy): New routine, used by
+ imap_copy_messages_to.
+
+ * providers/imap/camel-imap-utils.c (imap_uid_set_to_array):
+ Inverse operation of imap_uid_array_to_set. Used to parse COPYUID
+ response.
+
+2001-04-30 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_uid_array_to_set):
+ New-and-improved version of get_uid_set() from
+ camel-imap-folder.c. Looks at the summary as it goes so that if
+ you ask for messages 5, 6, 8, and 9, and there is no message 7,
+ then you get "5:9" instead of "5:6,8:9"
+
+ * providers/imap/camel-imap-folder.c (imap_copy_messages_to): Use
+ imap_uid_array_to_set() rather than get_uid_set().
+ (get_uid_set): Gone
+
+2001-04-27 Dan Winship <danw@ximian.com>
+
+ * camel-session.c: Redo this a lot so that instead of having a
+ class full of callbacks, we have a subclassable class. Also,
+ replace the increasingly horrifying
+ camel_session_query_authenticator with three new routines,
+ camel_session_get_password, camel_session_forget_password, and
+ camel_session_alert_user.
+
+ * camel-pgp-context.c:
+ * camel-pkcs7-context.c:
+ * camel-smime-context.c:
+ * providers/imap/camel-imap-store.c:
+ * providers/pop3/camel-pop3-store.c:
+ * providers/smtp/camel-smtp-transport.c:
+ Use camel_session_get_password / camel_session_forget_password.
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): Use
+ camel_session_alert_user.
+
+2001-04-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel.c (camel_init): Automagically call camel_shutdown()
+ atexit() ;-)
+ (camel_init): Also initialize NSS databases as read/write for
+ S/MIME and if NSS fails to init, try initializing with volatile
+ databases.
+
+ * camel-file-utils.h: #include <sys/types.h> for off_t.
+
+2001-04-26 Dan Winship <danw@ximian.com>
+
+ * camel-file-utils.c: New file, with the int, string, time_t, and
+ off_t encode/decode routines from camel-folder-summary.c moved
+ here and renamed, for the enjoyment of non-CamelFolderSummary
+ subclasses.
+
+ * Makefile.am (libcamel_la_SOURCES): Add camel-file-utils.c
+ (libcamelinclude_HEADERS): and camel-file-utils.h
+
+ * camel-folder-summary.c: Remove functions that were moved to
+ camel-file-utils.c, update uses of them for the new names.
+ (camel_folder_summary_{en,de}code_token are still here.)
+
+ * providers/local/camel-mbox-summary.c: Use camel_file_util_*
+ names
+
+ * providers/imap/camel-imap-summary.c: Use camel_file_util_* names
+
+ * providers/imap/camel-imap-store.c (imap_store_setup_online,
+ imap_store_setup_offline): Use camel_file_util_* names, which
+ makes much more sense since this isn't folder summary stuff.
+
+2001-04-26 Dan Winship <danw@ximian.com>
+
+ * 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.
+
+2001-04-26 Dan Winship <danw@ximian.com>
+
+ * camel-service.c (get_host): Use e_gethostbyname_r.
+ (camel_service_gethost): Remove unused var.
+
+2001-04-26 Not Zed <NotZed@Ximian.com>
+
+ * Applied jacob's patches for e-poolv stuff.
+
+2001-04-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel.h: Add camel-vee-folder.h and camel-digest-folder.h
+
+ * camel-digest-folder.[c,h]: New class that can be used to browse
+ a multipart/digest message as if it were a CamelFolder.
+
+2001-04-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (pgp_verify): Oops, don't use the return
+ value of iconv() as a string length, it only tells us the number
+ of non-reversable character conversions. This fixes it so we
+ actually see the gpg output in the message viewer.
+
+2001-04-23 Mikael Hallendal <micke@codefactory.se>
+
+ * providers/nntp/Makefile.am (INCLUDES):
+ Changed GTK_INCLUDEDIR to EXTRA_GNOME_CFLAGS.
+
+2001-04-20 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-smime-context.c (smime_sign): Implemented using the
+ secmime.h convenience functions.
+ (smime_clearsign): We just error our here, there is no clearsign
+ for smime.
+ (smime_verify): Copied code over from the pkcs7 verify - same
+ state, ugly and unknown :-)
+ (smime_encrypt): Implemented using the secmime.h convenience
+ functions.
+ (smime_decrypt): Same as the code in pkcs7-context.
+
+2001-04-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pkcs7-context.c (pkcs7_sign): Implemented.
+ (pkcs7_clearsign): Implemented.
+ (get_zero_len_passwd): Convenience function to try a 0-length key
+ on the certificate db - if this works then there is no need to
+ prompt the user.
+ (get_password): Callback to get the password.
+ (camel_cipher_hash_to_nss): Convenience function to convert a
+ CamelCipherHash to an NSS HASH_HashType.
+ (nss_hash_to_sec_oid): Converts a HASH_HashType to a SecOidTag.
+ (pkcs7_digest): Digest function for use with pkcs7_sign().
+ (sign_encode_cb): Callback to write the signed data to the output
+ stream.
+ (pkcs7_verify): Hacked on a bit more but am still a bit on the
+ confused side. This might work but I wouldn't hold my breath. The
+ sign/clearsign should be close if not correct, but this one...god
+ only knows.
+ (pkcs7_decrypt): Implemented.
+ (pkcs7_encrypt): Implemented (mostly, still need to handle when
+ 'sign' is TRUE).
+
+2001-04-18 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_finalize):
+ Free base_url and storage_path.
+
+ * providers/pop3/camel-pop3-store.c (finalize): Free the
+ implementation string.
+ (camel_pop3_command): Clarify documentation to mention that
+ @ex isn't set (and *@ret is) on CAMEL_POP3_ERR.
+ (connect_to_server): Set @ex properly on CAMEL_POP3_ERR.
+
+ * providers/pop3/camel-pop3-folder.c (pop3_refresh_info,
+ pop3_get_message): Set @ex properly on CAMEL_POP3_ERR.
+
+2001-04-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pkcs7-context.[c,h]: New source files to handle Pkcs7
+ encryption, decryption, signing, and verifying. Not yet
+ complete. I'm sensing this is going to take a while seeing as how
+ NSS is just so well documented.
+
+2001-04-17 Dan Winship <danw@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message): Fix
+ a memory leak in the error case.
+
+2001-04-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-mbox-summary.c (summary_rebuild): Don't we
+ want to tell where we are by using the start of the message? I
+ think this should be using camel_mime_parser_tell_start_from()
+ instead. Also divide by the size *before* multiplying by 100 so
+ that we don't overflow the int which was giving us negative values
+ for our progress status (oops).
+
+2001-04-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-operation.c: Added a prototype for stamp().
+
+ * camel-charset-map.c (camel_charset_locale_name): #include
+ string.h so we don't get a warning about strchr being undefined
+ and also init charset to NULL.
+
+ * camel-pgp-context.c (pgp_verify): Go back to doing the utf8
+ conversion by hand so that we don't depend on gal.
+
+ * Makefile.am: Remove the EXTRA_GNOME_CFLAGS include.
+
+ * camel-store.c (camel_mkdir_hier): Convenience function that it
+ seems a number of camel-store implementations used gal for.
+
+ * providers/nntp/camel-nntp-store.c (ensure_news_dir_exists): Lets
+ not depend on gal for just e_mkdir_hier() - use camel_mkdir_hier()
+ instead.
+
+ * providers/nntp/camel-imap-store.c: Lets not depend on gal for
+ just e_mkdir_hier() - use camel_mkdir_hier() instead.
+
+ * camel-session.c (camel_session_get_storage_path): Don't depend
+ on e_mkdir_heir() anymore, use the CamelStore version.
+
+ * camel-folder-search.h: Removed gal dependency, why was this even
+ there in the first place?
+
+ * providers/imap/camel-imap-folder.c: Don't need gal/util/e-util.h
+ here, so remove it.
+
+ * string-utils.c (strstrcase): New function, well more like old
+ function brought back to life so we don't have to depend on gal.
+
+ * providers/imap/camel-imap-store.c (imap_store_setup_online): Use
+ strstrcase rather than e_strstrcase so we don't depend on gal.
+ (get_unread_online): Same here.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): Use
+ strstrcase.
+
+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).
+
+2001-04-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-cipher-context.c: Check to make sure the context is a
+ valid context in all the user functions.
+
+2001-04-13 Jon Trowbridge <trow@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_disconnect):
+ s/imap_store/store/, fixing a typo that was causing the build to
+ fail.
+
+ * camel-filter-search.c (get_source): Make the (previously unused)
+ get-source command actually do the right thing, properly shrouding
+ any passed-in source and falling back to use the source attached
+ to the mime message.
+
+2001-04-13 Dan Winship <danw@ximian.com>
+
+ * camel-object.c (camel_object_hook_event):
+ * camel-uid-cache.c (camel_uid_cache_get_new_uids):
+ * camel-url.c (camel_url_new_with_base): Plug leaks.
+
+ * camel-remote-store.c (camel_remote_store_init): Don't
+ re-initialize the folders hash table.
+
+ * providers/imap/camel-imap-store.c (imap_disconnect): Free
+ authtypes since they'll be re-read on re-connect.
+ (get_folder_info): Free folderinfos that we're discarding from the
+ list.
+
+2001-04-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (camel_pgp_context_get_type): Oops, lets not
+ get into a recursive call here ;-)
+
+ * tests/smime/pgp.c: Updated to reflect changes to the PGP code.
+
+ * tests/smime/pgp-mime.c: Same.
+
+2001-04-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-mime.c: Updated to reflect the few changes made to the
+ CamelPgpContext class.
+
+ * camel-pgp-context.c: Updated to subclass of CamelCipherContext.
+
+ * camel-cipher-context.[c,h]: New base class for
+ CamelPgpContext. Also contains the replacement for
+ CamelPgpValidity, CamelCipherValidity.
+
+2001-04-12 Dan Winship <danw@ximian.com>
+
+ * camel-mime-filter-crlf.c (filter): Fix a pair of array bounds
+ reads noted by purify
+
+2001-04-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel.h: #include the pgp stuff.
+
+2001-04-12 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_remove):
+ * camel-url.c (camel_url_to_string): Plug memory leaks.
+
+2001-04-11 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_parse_string_generic):
+ Simplify peterw's imap_is_atom_char fix.
+
+2001-04-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * tests/smime/Makefile.am: Added pgp-mime.c to the tests.
+
+ * tests/smime/pgp-mime.c: Test suite for camel-pgp-mime.c functions.
+
+ * Makefile.am: Add camel-pgp-mime.[c,h] to the build.
+
+ * camel-pgp-mime.c: Made a number of fixes to get it to compile
+ and also fixed a few logic errors (mostly forgetting to reset
+ streams) so that it worked (thanks to the pgp-mime test program).
+
+2001-04-11 JP Rosevear <jpr@ximian.com>
+
+ * providers/imap/Makefile.am: user GNOME_INCLUDEDIR since gnome
+ files are included in the top level camel headers and the gtk
+ include dir is now versioned and such
+
+ * providers/local/Makefile.am: ditto
+
+ * providers/pop3/Makefile.am: ditto
+
+ * providers/smtp/Makefile.am: ditto
+
+ * providers/sendmail/Makefile.am: ditto
+
+ * camel-service.c: use five arg version of gethostbyname_r if
+ appropriate
+ (camel_get_host_byname): check if msg->herr is non-zero instead of
+ checking if msg->hp is null since we may not always have msg->hp
+
+2001-04-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-digest-md5.c (digest_response): Use
+ camel_charset_locale_name() to get the locale charset rather than
+ checking the CHARSET environment variable. This is a much less
+ ugly hack. Also: If we fail to be able to convert to UTF8, then
+ disavow all knowledge of the charset parameter.
+
+ * camel-charset-map.c (camel_charset_locale_name): New function to
+ return the locale charset (or NULL if US-ASCII).
+
+2001-04-11 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (camel_pgp_verify): Use
+ e_utf8_from_locale_string() rather than trying to do it manually
+ since Lauris's version works much better.
+
+2001-04-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Added camel-pgp-context.[c,h] to the build. Also
+ added tests/smime/pgp.c and Makefile.am
+
+ * tests/smime/pgp.c: New test suite for PGP functions.
+
+ * camel-pgp-context.c: Various fixes to get it to build.
+
+2001-04-07 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-utils.c (imap_parse_string_generic): It
+ would be a good idea to recognize '\0'. Before, this code was running
+ off the ends of strings and intermittently coredumping (if it didn't
+ hit an imap_atom_char first) -- whoops!
+
+2001-04-05 Not Zed <NotZed@Ximian.com>
+
+ * merge from evolution-0-10-branch to evolution-0-10-merge-0
+
+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.
+
+2001-04-03 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_sync): If we don't
+ change any flags or expunge, send a NOOP to give the server a
+ chance to send EXISTS, etc, messages.
+ (imap_get_message): If the server_level < IMAP4rev1, always fetch
+ messages all-at-once, since they don't support the [#.MIME]
+ syntax.
+ (imap_update_summary): When reading message flags, set the
+ server_flags field as well, and don't overwrite any flags set by
+ camel_folder_summary_info_new_from_message. Might help with some
+ of the flag problems...
+
+2001-04-02 Dan Winship <danw@ximian.com>
+
+ * camel-service.h: Remove the "quick_login" member, which is
+ unnecessary.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_auth): Remove the
+ references to quick_login and fix this to use the CamelSasl
+ interfaces correctly to do the same thing.
+ (connect_to_server): Split this out of smtp_connect
+ (smtp_connect): Use connect_to_server. When re-EHLO'ing after
+ auth, ignore errors.
+ (query_auth_types): Use connect_to_server rather than
+ smtp_connect, so it doesn't try to authenticate. Add LOGIN
+ authtype to the list of authtypes to check for.
+
+ * providers/smtp/camel-smtp-provider.c
+ (camel_provider_module_init): Add LOGIN authtype to the authtypes
+ list explicitly.
+
+ * camel-sasl.c (camel_sasl_authtype_list): Don't list LOGIN here:
+ it's not a real SASL authtype and is only used for SMTP.
+
+ * camel-sasl-plain.c:
+ * camel-sasl-login.c:
+ * camel-sasl-kerberos4.c:
+ * camel-sasl-cram-md5.c:
+ * camel-sasl-anonymous.c:
+ * providers/pop3/camel-pop3-provider.c: Remove "quick_login"
+ argument from authtypes.
+
+2001-04-02 Gediminas Paulauskas <menesis@delfi.lt>
+
+ * camel-filter-driver.c: marked missing report status' for translation.
+
+2001-04-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.c (camel_pgp_sign): mutex lock & unlock the
+ context.
+ (camel_pgp_clearsign): Same.
+ (camel_pgp_verify): Same.
+ (camel_pgp_encrypt): Same.
+ (camel_pgp_decrypt): And finally here...
+
+ * camel-pgp-context.h: Update the function prototypes to match
+ those found in camel-pgp-context.c.
+
+ * camel-pgp-context.c: Updated.
+
+ * camel-pgp-mime.c (camel_pgp_mime_part_sign): Implemented.
+ (camel_pgp_mime_part_verify): Implemented.
+ (camel_pgp_mime_part_encrypt): Implemented.
+ (camel_pgp_mime_part_decrypt): Implemented.
+
+2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-login.[c,h]: New files to handle the LOGIN SASL
+ mechanism.
+
+ * camel-sasl-plain.c: Removed the definition of
+ camel_sasl_login_authtype.
+
+ * camel-sasl.c (camel_sasl_new): Oops. I thought LOGIN was an
+ alias to PLAIN. I was wrong. These two SASL objects have to be
+ separate.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_auth): Updated to
+ check for and use authmech->quick_login when available.
+
+2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-provider.c: Updated the authtypes here
+ too.
+
+ * camel-sasl-plain.c:
+ * camel-sasl-anonymous.c:
+ * camel-sasl-digest-md5.c:
+ * camel-sasl-cram-md5.c:
+ * camel-sasl-kerberos4.c: Updated the authtype values.
+
+ * camel-service.h: Added another field to CamelServiceAuthType
+ that specifies whether or not the mechanism supports "quick auth"
+ which means that the client can send the initial challenge in the
+ AUTH request.
+
+ * camel-sasl.c (camel_sasl_new): Add support for LOGIN.
+ (camel_sasl_authtype_list): Here too.
+ (camel_sasl_authtype): And finally here.
+
+ * camel-sasl-plain.c: Define camel_sasl_login_authtype.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_auth): Only unref
+ the SASL object if it exists.
+
+2001-03-30 Dan Winship <danw@ximian.com>
+
+ * providers/pop3/camel-pop3-store.c (connect_to_server,
+ query_auth_types, pop3_connect): Move things around here to make
+ this all work right again (so you don't get prompted for a
+ password when checking the supported authtypes.)
+
+2001-03-30 Jon Trowbridge <trow@ximian.com>
+
+ * camel-mime-message.c (camel_mime_message_set_source): Shrould
+ our source URL before putting it into X-Evolution-Source.
+
+2001-03-29 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Don't
+ blindly append "/INBOX", construct a CamelURL and set the path
+ that way.
+ (parse_list_response_as_folder_info): Don't blindly append
+ "/<foldername>", construct a CamelURL and set the path that way
+ instead.
+ (get_folders_offline): And again here.
+
+2001-03-30 Not Zed <NotZed@Ximian.com>
+
+ * camel-service.c (camel_get_host_byname): Dont overwrite an
+ exception if we got one already. Added camel_operation status to
+ it, and comment out some debug.
+
+2001-03-29 Not Zed <NotZed@Ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): Free host
+ name info when done ... blah blah.
+
+ * camel-sasl-kerberos4.c (krb4_challenge): Free host name info
+ after we're done with it.
+
+ * camel-sasl-digest-md5.c (digest_md5_challenge): Free host name
+ info after we're done with it.
+
+ * camel-remote-store.c (remote_connect): Free the host name info
+ from get_host after we're finished with it.
+
+ * camel-service.c (camel_get_host_byname): New function to
+ lookup a name, and still be cancellable.
+ (camel_free_host): And a function to free the structure
+ returned.
+ (camel_service_gethost): Call get_host_byname for this.
+
+2001-03-29 Jon Trowbridge <trow@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message): Save
+ the source URL using camel_mime_message_set_source.
+
+ * camel-mime-message.c (camel_mime_message_set_source): Renamed
+ camel_mime_message_set_identity to this. Sets the X-Evolution-Source
+ header.
+ (camel_mime_message_get_source): Returns the X-Evolution-Source
+ header.
+
+2001-03-29 Kjartan Maraas <kmaraas@gnome.org>
+
+ * broken-date-parser.c: #include <stdio.h>, <stdlib.h> and <string.h>
+ * broken-date-parser.h: Remove all includes but <glib.h>
+ * camel-address.h: Added #include <glib.h>
+ * camel-data-wrapper.c: Move system includes to the top.
+ * camel-data-wrapper.h: #include <glib.h>
+ * camel-exception.c: #ifdef HAVE_CONFIG_H
+ * camel-exception.h: Remove #include <glib.h>
+ * camel-filter-driver.c: #ifdef HAVE_CONFIG_H and move system
+ headers to top. Mark strings in camel_exception_set*() for i18n.
+ * camel-filter-driver.h: #include <glib.h>
+ * camel-filter-search.c: #ifdef HAVE_CONFIG_H
+ * camel-folder-search.c: #include <config.h>
+ * camel-folder-search.h: Header shuffling
+ * camel-folder-summary.h: Same here
+ * camel-folder-thread.c: #ifdef HAVE_CONFIG_H
+ * camel-folder.c: Here too.
+ * camel-folder.h: #include <glib.h>
+ * camel-internet-address.c: Move system headers up
+ * camel-lock.c: #ifdef HAVE_CONFIG_H
+ * camel-medium.c: Same here
+ * camel-mime-filter-bestenc.c: Move system headers up
+ * camel-mime-filter-from.c: Same here
+ * camel-mime-filter-linewrap.c: And here
+ * camel-mime-filter.c: #include <string.h> to fix warnings from new gcc
+ * camel-mime-filter.h: System headers moved up
+ * camel-mime-message.c: Here too. #ifdef HAVE_CONFIG_H added
+ * camel-mime-part-utils.c: #ifdef HAVE_CONFIG_H added
+ * camel-mime-part.c: Here too, and shuffle headers
+ * camel-mime-utils.c: #ifdef HAVE_CONFIG_H. Remove const from two
+ variables to remove warning.
+ * camel-mime-utils.h: Shuffle headers
+ * camel-movemail.c: #ifdef HAVE_CONFIG_H. Mark string in camel_exception_set
+ * camel-multipart.c: #ifdef HAVE_CONFIG_H. Added includes to remove
+ warnings from new gcc
+ * camel-object.c: #ifdef HAVE_CONFIG_H
+ * camel-object.h: Shuffle headers
+ * camel-operation.c: #ifdef HAVE_CONFIG_H
+ * camel-provider.c: #ifdef HAVE_CONFIG_H. Shuffle headers. Mark a string
+ * camel-remote-store.c: #ifdef HAVE_CONFIG_H
+ * camel-sasl-anonymous.c: #ifdef HAVE_CONFIG_H. #include <string.h>
+ * camel-sasl-cram-md5.c: #ifdef HAVE_CONFIG_H. #include <string.h> and
+ <stdio.h> to remove warnings.
+ * camel-sasl-digest-md5.c: #ifdef HAVE_CONFIG_H. shuffle headers
+ * camel-sasl-digest-md5.h: Shuffle headers.
+ * camel-sasl-kerberos4.c: #ifdef HAVE_CONFIG_H. Shuffle headers.
+ * camel-sasl-kerberos4.h: Shuffle headers.
+ * camel-sasl-plain.c: #ifdef HAVE_CONFIG_H. Shuffle
+ * camel-sasl.c: #ifdef HAVE_CONFIG_H. #include <string.h>
+ * camel-search-private.c: #include <config.h>
+ * camel-seekable-stream.c: #ifdef HAVE_CONFIG_H
+ * camel-seekable-stream.h: Shuffle
+ * camel-seekable-substream.c: #ifdef HAVE_CONFIG_H
+ * camel-service.c: Same
+ * camel-service.h: Shuffle
+ * camel-session.c: #ifdef HAVE_CONFIG_H
+ * camel-store.c: Same
+ * camel-stream-buffer.c: Here too
+ * camel-stream-buffer.h: Shuffle
+ * camel-stream-filter.c: #include <string.h>
+ * camel-stream-fs.c: #ifdef HAVE_CONFIG_H
+ * camel-stream-fs.h: Shuffle headers
+ * camel-stream-mem.c: Same as above
+ * camel-stream-mem.h: Here too
+ * camel-stream-null.c: #ifdef HAVE_CONFIG_H
+ * camel-stream.c: Here too
+ * camel-stream.h: Shuffle
+ * camel-tcp-stream-openssl.c: #ifdef HAVE_CONFIG_H
+ * camel-tcp-stream-raw.c: Same here. and move local includes down
+ * camel-tcp-stream-ssl.c: Same as above
+ * camel-tcp-stream.c: #ifdef HAVE_CONFIG_H
+ * camel-tcp-stream.h: move local include down
+ * camel-transport.c: #ifdef HAVE_CONFIG_H
+ * camel-transport.h: #include <glib.h>
+ * camel-uid-cache.c: #ifdef HAVE_CONFIG_H. Shuffle headers
+ * camel-uid-cache.h: Shuffle
+ * camel-url.c: #ifdef HAVE_CONFIG_H
+ * camel-vee-folder.c: #ifdef HAVE_CONFIG_H. Shuffle headers
+ * camel-vee-folder.h: #include <glib.h>
+ * camel-vee-store.h: Same here
+ * camel.c: #ifdef HAVE_CONFIG_H
+ * gstring-util.c: Here too
+ * hash-table-utils.c: Remove #include <glib.h>
+ * hash-table-utils.h: #include it here instead.
+ * string-utils.c: #ifdef HAVE_CONFIG_H
+ * providers/cache/camel-cache-map.c: #ifdef HAVE_CONFIG_H, shuffle
+ headers and mark strings in camel_exception_set*()
+ * providers/cache/camel-cache-provider.c: #ifdef HAVE_CONFIG_H
+ * providers/cache/camel-cache-store.c: Same here, and mark a string.
+ * providers/imap/camel-imap-command.c: #ifdef HAVE_CONFIG_H
+ * providers/imap/camel-imap-command.h: Shuffle header
+ * providers/imap/camel-imap-folder.c: #ifdef HAVE_CONFIG_H
+ * providers/imap/camel-imap-message-cache.c: #ifdef HAVE_CONFIG_H
+ * providers/imap/camel-imap-provider.c: #ifdef HAVE_CONFIG_H and
+ #include <string.h>
+ * providers/imap/camel-imap-search.c: #ifdef HAVE_CONFIG_H
+ * providers/imap/camel-imap-store.c: #ifdef HAVE_CONFIG_H and mark
+ a string.
+ * providers/imap/camel-imap-summary.c: Shuffle headers
+ * providers/imap/camel-imap-wrapper.c: #ifdef HAVE_CONFIG_H. Shuffle
+ * providers/local/camel-local-folder.c: #ifdef HAVE_CONFIG_H
+ * providers/local/camel-local-provider.c: #ifdef HAVE_CONFIG_H
+ * providers/local/camel-local-store.c: Same here
+ * providers/local/camel-local-summary.c: Here too, shuffle, mark a string
+ * providers/local/camel-maildir-folder.c: #ifdef HAVE_CONFIG_H
+ * providers/local/camel-maildir-store.c: Same
+ * providers/local/camel-maildir-summary.c: Here too
+ * providers/local/camel-mbox-summary.c: And here
+ * providers/local/camel-mbox-store.c: And here
+ * providers/local/camel-mbox-summary.c: #include <config.h>
+ * providers/local/camel-mh-folder.c: #ifdef HAVE_CONFIG_H
+ * providers/local/camel-mh-store.c: same
+ * providers/local/camel-mh-summary.c: #ifdef HAVE_CONFIG_H, shuffle headers
+ and mark a string for translation.
+ * providers/nntp/camel-nntp-auth.c: #include <config.h>
+ * providers/nntp/camel-nntp-store.c: Remove superfluous arg to
+ CAMEL_SERVICE_CLASS to make it compile
+ * providers/pop3/camel-pop3-provider.c: #ifdef HAVE_CONFIG_H
+ * providers/pop3/camel-pop3-store.c: Same here
+ * providers/sendmail/camel-sendmail-provider.c: Here too
+ * providers/sendmail/camel-sendmail-transport.c: Here too
+ * providers/smtp/camel-smtp-provider.c: Same
+ * providers/smtp/camel-smtp-transport.c: #ifdef HAVE_CONFIG_H, mark
+ strings for translations.
+
+2001-03-29 Dan Winship <danw@ximian.com>
+
+ * camel-url.c (camel_url_to_string): change "gboolean show_passwd"
+ to "guint32 flags".
+
+ * tests/misc/url.c (main): Update calls to camel_url_to_string
+
+ * providers/imap/camel-imap-store.c (construct): Call
+ camel_url_to_string with flags to hide password, authtype, and
+ params to create the base_url.
+ (etc): Update for the fact that the base_url no longer has the "/"
+ at the end.
+
+ * camel-service.c (construct): Update calls to camel_url_to_string
+ (pass CAMEL_URL_HIDE_PASSWORD)
+
+2001-04-03 Jeffrey Stedfast <fejj@ximian.com>
+
+ * 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.
+
+2001-04-04 Kjartan Maraas <kmaraas@gnome.org>
+
+ * camel-filter-driver.c: Added #include <config.h>. Marked
+ a bunch of strings for translation.
+ * camel-folder-search.c: Added #include <config.h>.
+ * camel-folder-summary.c: Same here.
+ * camel-movemail.c: Marked strings for translation.
+ * camel-provider.c: Same here.
+ * camel-search-private.c: #include <config.h>
+ * camel-vee-folder.c: Mark string for translation.
+ * providers/local/camel-mbox-summary.c: #include <config.h>
+
+2001-04-03 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_sync): If we don't
+ change any flags or expunge, send a NOOP to give the server a
+ chance to send EXISTS, etc, messages.
+ (imap_get_message): If the server_level < IMAP4rev1, always fetch
+ messages all-at-once, since they don't support the [#.MIME]
+ syntax.
+
+2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Don't
+ blindly append "/INBOX", construct a CamelURL and set the path
+ that way.
+ (parse_list_response_as_folder_info): Don't blindly append
+ "/<foldername>", construct a CamelURL and set the path that way
+ instead.
+ (get_folders_offline): And again here.
+
+2001-03-31 Not Zed <NotZed@Ximian.com>
+
+ * camel-operation.c (struct _status_stack): change stamp to
+ unsigned to avoid overflow.
+ (camel_operation_end):
+ (camel_operation_progress_count):
+ (camel_operation_progress): Double the delay before transient
+ events start showing their own progress.
+
+2001-03-30 Not Zed <NotZed@Ximian.com>
+
+ * providers/pop3/camel-pop3-folder.c (pop3_get_message): Change
+ the pop download into a transient event.
+
+ * camel-operation.c (stamp): Get a timestamp that changes 4x a
+ second (or rather, arbitrarily more often than 1/second).
+ (camel_operation_progress): Use stamp() for time updates.
+ (camel_operation_progress_count): "
+ (camel_operation_start): Store the status as a struct status_stack
+ item.
+ (camel_operation_start_transient): New function to start a
+ transient event, which is only reported if it runs for too
+ long/and is reset afterwards.
+ (camel_operation_progress):
+ (camel_operation_progress_count): Fix for status_stack changes,
+ and account for transient updates.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder): When
+ we remove things (set deleted), always set seen too, to mirror
+ interface behaviour when you delete.
+ (camel_filter_driver_filter_message): And same here too.
+
+2001-03-30 Dan Winship <danw@ximian.com>
+
+ * providers/pop3/camel-pop3-store.c (connect_to_server,
+ query_auth_types, pop3_connect): Move things around here to make
+ this all work right again (so you don't get prompted for a
+ password when checking the supported authtypes.)
+
+2001-03-29 Dan Winship <danw@ximian.com>
+
+ * camel-url.c (camel_url_to_string): change "gboolean show_passwd"
+ to "guint32 flags".
+
+ * tests/misc/url.c (main): Update calls to camel_url_to_string
+
+ * providers/imap/camel-imap-store.c (construct): Call
+ camel_url_to_string with flags to hide password, authtype, and
+ params to create the base_url.
+ (etc): Update for the fact that the base_url no longer has the "/"
+ at the end.
+
+ * camel-service.c (construct): Update calls to camel_url_to_string
+ (pass CAMEL_URL_HIDE_PASSWORD)
+
+2001-03-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-pgp-context.[c,h]: New class for PGP encrypting,
+ decrypting, signing and verifying. Next I'll be moving the
+ contents of mail/mail-crypto into Camel. These files will
+ basically replace mail/openpgp-utils.[c,h].
+
+2001-03-29 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-search.c (search_body_contains): Optimise the match
+ "" case, just match everything in the folder (if we have it).
+
+ * camel-vtrash-folder.c (vtrash_move_messages_to): Access the
+ folder directly from the message info.
+ (vtrash_move_messages_to): I think we also need to call the real
+ move_messages_to, and not try and bypass the lock, since we dont
+ have the lock for that folder.
+
+ * camel-vee-folder.h: Move CamelVeeMessageInfo to public, so
+ subclasses can get to it.
+
+ * camel-vee-folder.c (camel_vee_folder_add_folder): Dont let you
+ add a vfolder to itself.
+ (folder_changed):
+ (vee_folder_remove_folder):
+ (vee_folder_build_folder): Copy changes before triggering changed
+ events, so we can do them outside of locks.
+ (camel_vee_folder_get_message_folder): Removed function.
+ (camel_vee_folder_hash_folder): Made public (renamed from
+ hash_folder), simply for subclasses (probably not needed).
+ (vee_expunge): Oops, call the class sync, not superclass sync.
+ (vee_sync): Remove some accidental debug.
+
+2001-03-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-service.c (get_path): Add the port (if user defined) to
+ the path to fix bug #1996.
+
+ Danw: I'm iffy on the "fix" so I'd like you to comment.
+
+2001-03-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-folder.c (pop3_sync): If we aren't
+ going to even check the resp/free buffer that gets returned from
+ camel_pop3_command, don't even bother using it. Send in NULL
+ instead.
+ (pop3_get_message): Check to make sure that the `result' string is
+ non-NULL. It's possible that some POP servers may return with
+ "+OK\r\n<message>..." rather than the expected
+ "+OK ### octets\r\n<message>..."
+
+2001-03-27 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-summary.c (camel_folder_summary_finalize): Unref
+ the html filter when done.
+ (summary_build_content_info): Disable using the html parser to
+ help index html mails until it gets sorted out.
+
+ * camel-vee-folder.c (folder_changed): Fix a cut n paste bug, we
+ want uid_removed not uid_changed deref, fixes bug #1999.
+
+2001-03-27 Dan Winship <danw@ximian.com>
+
+ * camel-sasl.c (camel_sasl_authtype_list): add an argument to say
+ whether or not you want "PLAIN" in the list (so you don't end up
+ with "Password" twice in the config dialog).
+
+ * providers/imap/camel-imap-provider.c (camel_provider_module_init):
+ * providers/imap/camel-imap-store.c (query_auth_types): We don't
+ want PLAIN.
+
+ * providers/smtp/camel-smtp-provider.c (camel_provider_module_init):
+ * providers/smtp/camel-smtp-transport.c (query_auth_types): But we
+ do.
+
+2001-03-27 Dan Winship <danw@ximian.com>
+
+ * camel-provider.h: Add an "extra_conf" field to CamelProvider
+ with structures and defines and stuff, for providers to specify
+ additional configuration options that they want. Also add a
+ "supports ssl" flag to the provider flags.
+
+ * camel-url.c (camel_url_new_with_base): Fix parsing of params.
+ (output_param): And unparsing...
+
+ * camel-remote-store.c: add a "default_ssl_port" field.
+ (remote_construct): If the URL has the "use_ssl" parameter, set
+ the store's use_ssl flag.
+ (remote_connect): If using SSL and no port specified, use the
+ default_ssl_port rather than the default_port.
+
+ * providers/smtp/camel-smtp-provider.c (smtp_provider): add
+ CAMEL_PROVIDER_SUPPORTS_SSL and CAMEL_URL_ALLOW_USER. (The config
+ gui code knows that the ALLOW_USER and ALLOW_AUTH go together.)
+ (ssmtp_provider): gone
+
+ * providers/smtp/camel-smtp-transport.c (smtp_construct): Set a
+ flag if "use_ssl" param is set.
+ (smtp_connect): Check the CamelSmtpTransport use_ssl flag rather
+ than checking if this is smtp or ssmtp.
+
+ * providers/imap/camel-imap-provider.c (imap_conf_entries): Add a
+ bunch of IMAP-specific configuration options, like "check for new
+ mail in all folders" (default TRUE), "show only subscribed
+ folders" (default TRUE), "ignore server-supplied namespace", and
+ "apply filters to INBOX" (not yet implemented).
+ (imap_provider): We support SSL and we no longer allow a path in
+ the URL. (namespace is handled via extra_conf)
+ (simap_provider): Gone
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_init): Set
+ default_ssl_port, don't set CAMEL_STORE_SUBSCRIPTIONS here
+ (construct): remove simap stuff, deal with "use_lsub",
+ "namespace", "check_all", and "filter" parameters. Set base_url
+ to not include params.
+ (imap_store_setup_online): Don't ask for the namespace if it was
+ set explicitly. Don't get subscribed folders if !use_lsub.
+ (imap_concat): Fix a bug.
+ (get_folder_info): Support for not checking all folders.
+
+ * providers/imap/camel-imap-folder.c (imap_get_full_name): Rewrite
+ to use imap_store->namespace, not service->url->path
+
+ * providers/pop3/camel-pop3-provider.c (pop3_conf_entries): "keep
+ on server" (currently still implemented by the mailer code, not
+ here), "delete after N days" (not yet implemented).
+ (pop3_provider): we support SSL
+ (spop_provider): gone
+
+ * providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Set
+ default_ssl_port
+ (pop3_connect): Remove spop code
+
+2001-03-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-vee-folder.c (vee_folder_construct): Move all of the
+ camel_vee_folder_construct() internals here.
+ (camel_vee_folder_construct): This function basically becomes a
+ wrapper for vee_folder_construct and also checks to make sure that
+ the UNMATCHED vfodler is constructed otherwise constructs it.
+ (camel_vee_folder_new): Call vee_folder_construct() instead so
+ that we don't get into a dead-lock.
+
+2001-03-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (init_trash): Use camel_vtrash_folder_new() to
+ create the vtrash folder now.
+
+ * camel-vtrash-folder.[c,h]: New subclass of CamelVeeFolder for
+ our vTrash folders.
+
+ * camel-folder.c (camel_folder_copy_messages_to): Don't watch for
+ vtrash folders anymore.
+ (camel_folder_move_messages_to): Same.
+
+ * camel-vee-folder.c (camel_vee_folder_class_init): Update.
+ (vee_move_messages_to): Rewrite to use the new move API.
+
+ * camel-filter-driver.c (do_copy): Updated to reflect
+ copy_message_to changes. Create a temporary uid array and use
+ that.
+ (do_move): Same.
+ (camel_filter_driver_filter_message): And again, here...
+
+ * providers/imap/camel-imap-folder.c (imap_copy_messages_to):
+ Update to the new API.
+ (imap_move_messages_to): Same.
+ (get_uid_set): New function to create a `set' string based on an
+ array of UIDs for use with imap_copy_messages_to.
+
+ * camel-folder.c (camel_folder_copy_messages_to): Replaces
+ camel_folder_copy_message_to
+ (camel_folder_move_message_to): Replaces
+ camel_folder_move_message_to.
+
+2001-03-27 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-store.c (vee_get_folder): Added folder_created event
+ here.
+
+ * camel-vee-folder.c (unmatched_finalise): Removed, moved into
+ main finalise code.
+ (message_changed): Just create a new change entry and promote it
+ to a folder_changed thing.
+ (vee_sync): Always rebuild folder on sync, even when not expunge.
+ (folder_changed): If not autoupdating, make sure we remove any
+ removed entries.
+ (vee_folder_build_folder):
+ (vee_folder_remove_folder): NOP if we're called on
+ folder_unmatched.
+ (vee_search_by_expression): Only search each folder once. Should
+ we also order the result in summary order?
+
+2001-03-20 Not Zed <NotZed@Ximian.com>
+
+ * camel-store.c (init_trash): Fix calling for vee_folder_new().
+
+ * camel-folder-summary.c (camel_folder_summary_remove_index):
+ Optimise slightly, use ptr_array_remove_index rather than have to
+ search for the index by using summary_remove.
+
+ * camel-vee-folder.h: Removed local member from VeeFolder, since
+ it was never used.
+
+ * camel-vee-store.c (camel_vee_store_finalise): Setup finalise
+ function.
+
+ * camel-vee-folder.c (camel_vee_folder_set_expression): New
+ function to set the query of an existing vfolder.
+ (camel_vee_folder_construct): New function for
+ convenience/subclasses.
+ (camel_vee_folder_new): Removed exception parameter, no longer
+ needed (since we dont search yet).
+ (camel_vee_folder_new): Changed to use folder_construct, and no
+ longer raise the folder created signal.
+ (vee_folder_build_folder): Make it return error on exception, so
+ we can work without exceptions.
+ (vee_folder_remove_folder): Use remove index rather than
+ remove_uid, this is ok since we have the summary locked for our
+ own access.
+ (camel_vee_folder_add_folder): Only add the folder to the
+ unmatched private if it is not a private folder.
+ (camel_vee_folder_remove_folder): Only remove the folder from
+ unmatched if it is not private.
+ (vee_expunge): Just call sync with expunge set.
+ (vee_sync): If expunging, also refresh the search.
+ (vee_folder_build_folder): We do our own locking now, removed from
+ callers, also trigger changed events here too (within locks),
+ fixed callers appropriately.
+ (vee_folder_remove_folder): Do our own locking, and trigger
+ changed events.
+ (vee_folder_add_info): Renamed of vee_folder_add, we now take a
+ hash of the folder name, rather than use the folders address.
+ (hash_folder): Convert a folder name into an 8 character hash.
+ (vee_get_message, vee_search_by_expression, vee_set_message_flags,
+ vee_set_message_user_flag, vee_move_message_to): Changed the uid
+ to be an 8 byte hash + original uid, with no ':' anymore.
+
+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.
+
+ * camel-mime-message.c (write_to_stream): Don't spew a warning if
+ the message-id wasn't set by the application, not a big deal since
+ we create one right here.
+
+2001-03-26 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): keep a
+ reference on the store's current_folder.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_finalize):
+ (imap_disconnect): unref the current_folder before clearing it.
+
+ * camel-url.c (camel_url_get_param): Add missing accessor.
+
+ * camel-session.c (camel_session_get_provider): New. Return
+ the provider for a URL.
+
+2001-03-25 Dan Winship <danw@ximian.com>
+
+ * camel-url.c (camel_url_new_with_base): New URL parser with full
+ RFC1808 relative URL support. Yum.
+ (camel_url_new): Wrapper around camel_url_new_with_base now.
+
+ * tests/Makefile.am: add misc subdir
+
+ * tests/misc/url.c: relative URL test cases from RFC 1808
+
+2001-03-25 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (do_copy): Don't use copy_to if the source
+ folder doesn't support summary info's.
+ (do_move): Same.
+ (camel_filter_driver_filter_message): And again here. I think
+ this will fix the problem of "colour" tags not staying with the
+ message when it's copied to a folder during the filter process.
+
+2001-03-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-digest-md5.c (digest_response): Do charset conversion
+ on the username param here if needed.
+ (parse_server_challenge): Protect against possibly empty-string
+ charset values.
+
+2001-03-23 Jon Trowbridge <trow@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message):
+ Don't call camel_mime_message_set_identity. (The call is
+ commented out, left over from some earlier experimentation that I
+ want to be able to remember later...)
+
+ * camel-mime-message.c (camel_mime_message_set_identity): Added.
+ A function to set the X-Evolution-Identity header.
+
+2001-03-22 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-command.c (imap_read_response): Don't
+ look at untagged responses other than "* BYE"...
+ (camel_imap_response_free): ...do it here instead...
+ (camel_imap_response_free_without_processing): ...but not here.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
+ Remove the "EXISTS" line from the response so
+ camel_imap_response_free won't try to process it.
+ (camel_imap_folder_selected): If we get an EXISTS response mixed
+ in with the FETCH responses, record the new EXISTS value.
+ Use camel_imap_response_free_without_processing so that an EXISTS
+ response won't cause a loop.
+ (imap_rescan): Use camel_imap_response_free_without_processing.
+ (imap_update_summary): Use
+ camel_imap_response_free_without_processing. If an EXISTS response
+ shows up, call imap_update_summary again to get the new messages.
+ (imap_protocol_get_summary_specifier): Use BODY.PEEK[0], not
+ RFC822.HEADER for prev IMAP4rev1, since the FETCH parser won't
+ deal with RFC822.HEADER responses.
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Fix an
+ uninitialized variable
+
+2001-03-21 Dan Winship <danw@ximian.com>
+
+ * camel-provider.h: (CamelProvider) add a "GList *authtypes", so
+ you can get the list of authtypes used by a provider without
+ needing to have an actual CamelService object handy. (Will be
+ needed by the new config druid.)
+ (CAMEL_PROVIDER_ALLOWS, CAMEL_PROVIDER_NEEDS): New macros to test
+ the URL part stuff, since the way it works is too complicated and
+ everyone always does it wrong.
+
+ * camel-service.c (camel_service_query_auth_types): Remove the
+ @connected arg again: if you don't want to connect, you can just
+ get the list of authtypes off the provider.
+ (camel_service_free_auth_types): Remove this. All existing
+ implementations do authtypes the same way, so just say the caller
+ should "g_list_free" the list. (Oh, look, removing this function
+ doesn't actually cause the mailer to not build. How 'bout that.)
+ (construct, get_path): Use the new URL part macros.
+
+ * camel-remote-store.c (remote_query_auth_types): Update
+ (remote_free_auth_types): Nuke
+ (camel_remote_store_authtype_list): New function for use by
+ subclasses.
+
+ * providers/imap/camel-imap-provider.c:
+ * providers/pop3/camel-pop3-provider.c:
+ * providers/smtp/camel-smtp-provider.c: Update CamelProvider
+ structures.
+ (camel_provider_module_init): Put all the SSL parts together so
+ there's only 1 #ifdef. Set up the provider authtypes field using
+ the SASL, CamelRemoteStore, and standard authtypes, as
+ appropriate. Copy that from the normal provider to the SSL
+ provider.
+
+ * providers/local/camel-local-provider.c:
+ * providers/sendmail/camel-sendmail-provider.c:
+ * camel-session.c: Update CamelProvider structures.
+
+ * providers/imap/camel-imap-store.c (query_auth_types):
+ * providers/pop3/camel-pop3-store.c (query_auth_types): Update
+
+ * providers/smtp/camel-smtp-store.c (query_auth_types): Update.
+ Remove the no_authtype, because that's what "ALLOW_AUTH" rather
+ than "NEED_AUTH" means.
+ (free_auth_types): Nuke.
+
+2001-03-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message):
+ Return -1 on fail.
+ (camel_filter_driver_filter_folder): Same.
+ (camel_filter_driver_filter_mbox): Same.
+ (camel_filter_driver_filter_folder): Return -1 if an exception was
+ set as well.
+
+2001-03-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_finalize):
+ Free the expected host.
+ (camel_tcp_stream_openssl_new): Now takes a Service and an
+ expected_host. Set them.
+
+2001-03-20 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.c
+ (camel_imap_store_check_online): Function to check if the store is
+ online and set an exception if not. Currently controlled by an
+ environment variable, but eventually there will be both a global
+ (session-level) setting and a per-store setting.
+ (construct): Set up storage_path and base_url here rather than at
+ connect-time.
+ (imap_auth_loop): Split out from imap_connect.
+ (imap_setup_online): Split out from imap_connect. Do the
+ post-authentication connection setup, and cache the results to
+ disk.
+ (imap_setup_offline): Set up a CamelImapStore with information
+ saved from a previous imap_setup_online.
+ (imap_connect): If online, do connect_to_server(),
+ imap_auth_loop(), and imap_setup_online(). Otherwise, do
+ imap_setup_offline().
+ (get_folder, get_folder_info): Add offline support.
+ (create_folder, subscribe_folder, unsubscribe_folder): Disable
+ these when offline (for now).
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
+ Remove the sync'ing-with-server stuff... it's done by
+ camel_imap_folder_selected now, which only gets called if the
+ store is online.
+ (camel_imap_folder_selected): add the code removed from
+ camel_imap_folder_new. Besides simplifying the folder_new and
+ summary_new code, this also means now that we'll DTRT if a
+ folder's UIDVALIDITY changes while we're connected. Also, when
+ that happens, clear the message cache explicitly.
+ (imap_refresh_info, imap_sync): These are no-ops when offline.
+ (imap_expunge, imap_append_message, imap_copy_message_to,
+ imap_search_by_expression): These don't yet work offline.
+ (imap_get_message, camel_imap_folder_fetch_data): Return an error
+ when trying to fetch a non-cached body part when we're offline.
+
+ * providers/imap/camel-imap-summary.c (camel_imap_summary_new):
+ Rewrite to not check the validity here. (We'll do it from
+ camel_imap_folder_selected instead.)
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): Call
+ camel_imap_folder_selected even when the selection is all we're
+ doing, to match the changes in camel-imap-folder.c.
+
+ * providers/imap/camel-imap-message-cache.c
+ (camel_imap_message_cache_clear): New function to clear out a
+ message cache.
+
+2001-03-19 Christopher James Lahey <clahey@ximian.com>
+
+ * Makefile.am (INCLUDES): Added $(EXTRA_GNOME_CFLAGS)
+
+2001-03-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Set the errbuf
+ to NULL after freeing it? I don't think this should fix bug #1801
+ but I guess it can't hurt.
+
+2001-03-18 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-remote-store.c (remote_recv_line): Protect against a
+ possibly NULL exception.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message):
+ Document and modify to return a boolean value denoting whether or
+ not errors occured during processing.
+ (camel_filter_driver_filter_mbox): Same as above and also modified
+ to check return codes of filter_message rather than relying only
+ on whether or not the exception was set (as it's possible to pass
+ in NULL for the exception).
+ (camel_filter_driver_filter_folder): Same as above.
+
+ * camel-mime-utils.c (header_param_list_format_append): Quote the
+ param value if it contains whitespace as well.
+
+2001-03-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Don't include system include dir.
+
+ * camel.c: Use quotes around the nss.h include so it doesn't try
+ to use the systen nss.h file.
+
+ * camel-tcp-stream-ssl.c: Same here.
+
+2001-03-17 Not Zed <NotZed@Ximian.com>
+
+ * providers/local/camel-maildir-summary.c (maildir_summary_sync):
+ Modified patch from Dan Berger <dberger@ix.netcom.com> to re-check
+ the maildir directory for new/updated messages at sync time.
+
+ * camel-folder.c (camel_folder_ref_message_info): Implemented.
+ (ref_message_info): And default implementation.
+
+ * camel-folder.h: Added ref_message_info virtual method.
+
+2001-03-16 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-thread.c
+ (camel_folder_thread_messages_new_summary): New function to create
+ a thread tree from a supplied summary array.
+ (camel_folder_thread_messages_destroy): Handle thread trees
+ generated by the above function properly.
+
+2001-03-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-private.h: Same.
+
+ * camel-remote-store.h: Fixed #include to use <>'s instead of ""'s
+
+2001-03-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (ssl_bad_cert): Print info about the
+ issuer of the certificate.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): Use
+ camel_tcp_stream_get_socket().
+
+ * camel-tcp-stream-openssl.c (stream_get_socket): Implemented.
+
+ * camel-tcp-stream-ssl.c (stream_get_socket): Implemented.
+
+ * camel-tcp-stream-raw.c (stream_get_socket): Implemented.
+
+ * camel-tcp-stream.c (camel_tcp_stream_get_socket): New function.
+
+2001-03-16 Kjartan Maraas <kmaraas@gnome.org>
+
+ * providers/pop3/camel-pop3-folder.c: Added #include <config.h>
+
+2001-03-16 Dan Winship <danw@ximian.com>
+
+ * camel-mime-utils.c (header_msgid_generate): Don't use
+ getdomainname: it's NIS crap, not DNS.
+
+2001-03-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel.c (camel_init): Don't use the hardcoded cert db directory,
+ use the one passed in.
+
+ * camel-tcp-stream-ssl.c (ssl_get_client_auth): Wrote the default
+ implementation. Not that we'll use this though, since this is the
+ default implementation provided by NSS anyway. This more or less
+ serves as a reference in case we want to change anything.
+ (ssl_auth_cert): Same.
+ (ssl_bad_cert): Changed the prompt string and free it when we're
+ done.
+
+2001-03-15 Dan Winship <danw@ximian.com>
+
+ First batch of disconnected IMAP-related stuff. This adds local
+ caching of message parts, but NOT any actual disconnected support.
+ (But it should speed up IMAP use.)
+
+ * providers/imap/camel-imap-message-cache.c: New class for caching
+ message data to disk, and removing it when it's no longer
+ relevant. Will eventually also support merging message parts
+ together to save on files. Or maybe using a db instead of files?
+
+ * providers/imap/camel-imap-private.h: Add a cache_lock to
+ CamelImapFolderPrivate. This lock must be recursive, so make both
+ locks EMutexes rather than GMutex.
+
+ * providers/imap/camel-imap-folder.c (parse_fetch_response): "The
+ only FETCH response parser you need!" Replaces the various
+ almost-correct bits of code formerly scattered throughout this
+ file with a single fully-correct function that can handle any
+ FETCH response at any time, so we don't get confused by seeing a
+ flags update when we were only expecting a message body, etc.
+ (camel_imap_folder_fetch_data): FETCH a message body part either
+ from the cache or the server
+ (camel_imap_folder_changed): Remove expunged messages from the
+ message cache.
+ (camel_imap_folder_new): Change to take a directory instead of a
+ summary file name. Create a CamelImapMessageCache for the folder.
+ (imap_finalize): Unref the message cache.
+ (camel_imap_folder_selected, imap_rescan, get_content,
+ get_message, imap_get_message, imap_update_summary): Redone a
+ bunch to use parse_fetch_data, CamelImapMessageCache, etc.
+
+ * providers/imap/camel-imap-store.c (get_folder): Pass directory
+ name to camel_imap_folder_new, not summary filename. Use
+ e_path_to_physical to generate a path with /subfolders/ inserted
+ between directory components.
+
+ * providers/imap/camel-imap-wrapper.c (camel_imap_wrapper_new):
+ Call camel_imap_folder_fetch_data (with cache_only TRUE) and if
+ the data is cached, return an online datawrapper rather than an
+ offline one.
+ (write_to_stream): Use camel_imap_folder_fetch_data (with
+ cache_only FALSE) here too
+
+ * providers/imap/camel-imap-utils.c (imap_skip_list): Renamed from
+ skip_list and made non-static.
+
+2001-03-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.h: Uninclude prnetdb.h since it's not
+ needed here.
+
+ * providers/smtp/camel-smtp-transport.c: #include prnetdb.h here
+ instead of making camel-tcp-stream-ssl.h include it. Prevents some
+ header bloat.
+
+ * providers/smtp/Makefile.am: Include the NSPR_CFLAGS and
+ NSS_CFLAGS.
+
+2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): Update for
+ using CamelTcpStreams and also for using SSL.
+
+ * providers/smtp/libcamelsmtp.urls: defined "ssmtp"
+
+ * providers/smtp/camel-smtp-provider.c: Defined the Secure SMTP
+ provider.
+ (camel_provider_module_init): Register the Secure SMTP provider.
+
+2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect): Check for
+ "simap" instead of "imaps".
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Change the
+ port to be 995 for spop.
+
+ * providers/pop3/libcamelpop3.urls: Change to "spop".
+
+ * providers/imap/libcamelimap.urls: Change "imaps" to "simap" to
+ correspond to /etc/services.
+
+2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Check to see
+ if we are using "pops" and then set the appropriate SSL settings.
+
+ * providers/pop3/libcamelpop3.urls: Add "pops"
+
+ * providers/pop3/camel-pop3-provider.c: Defined the pops provider.
+ (camel_provider_module_init): Register the pops provider.
+
+2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_new): Ya know what?
+ Lets not ref the service because otherwise we'll start having the
+ same problems we had back with vtrash. Besides, since the store
+ owns the stream, it's not like the store is going anywhere without
+ the stream anyway.
+ (camel_tcp_stream_ssl_finalize): No need to unref the service.
+
+2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-remote-store.c (remote_connect): Pass the service into the
+ SSL stream, not the session.
+
+ * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_init): Set the
+ service to NULL.
+ (camel_tcp_stream_ssl_finalize): Unref the service.
+ (camel_tcp_stream_ssl_new): Takes a CamelService arg now rather
+ than a CamelSession arg.
+
+2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel.c (camel_init): So it turns out that NSS_Init *isn't*
+ idempotent, so we have to protect against initializing it more
+ than once(contrary to what their design specs suggest).
+
+ * camel-session.c (camel_session_get_service): Use
+ camel_exception_is_set() - Makes no difference but it's more
+ consistant with how we normally do it.
+
+ * camel-provider.h (CAMEL_URL_ALLOW_SSL): We don't need this.
+
+ * providers/imap/camel-imap-provider.c: Define the imaps provider.
+ (camel_provider_module_init): Register the imaps provider.
+
+ * camel-provider.c (camel_provider_init): Only add the protocol to
+ the hash table if it's non empty. Also, g_strdup() the filename
+ into the hash table.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_init): Eek!
+ So the service's URL isn't set until after this is
+ initialized. This means we can't check for SSL here.
+ (imap_connect): Set the SSL options here instead.
+
+2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c: Numerous fixes to get it to build
+ correctly with NSS enabled.
+
+ * camel-remote-store.c (remote_connect): Pass in the session and
+ expected host args, oops.
+
+ * camel-provider.h (CAMEL_URL_ALLOW_SSL): Defined.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_init): Check
+ to see if we are supposed to use SSL and set the options
+ accordingly.
+ (imap_connect): Return FALSE here instead of NULL.
+
+ * providers/imap/camel-imap-provider.c: Add CAMEL_URL_ALLOW_SSL.
+
+ * providers/imap/libcamelimap.urls: Add "imaps" which is the
+ protocol for Secure IMAP.
+
+2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-openssl.[c,h]: Added
+
+ * Makefile.am: Added camel-tcp-stream-openssl.[c,h] to the build.
+
+ * camel-types.h: Added CamelTcpStreamSSL and CamelTcpStreamOpenSSL
+
+2001-03-14 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-filter-charset.c (filter, complete): re-constify
+ inbuf, to remove a warning.
+
+ * camel-mime-parser.c (folder_scan_step): When we're out of data,
+ run the filter_complete. For some reason the logic that was there
+ was never being run, always try it now, i think it was to work
+ around a buggy filter, rather than fix it the right way.
+
+ * camel-folder-summary.c (summary_build_content_info): If indexing
+ html parts, use the html filter to convert it to some indexable
+ format.
+ (summary_build_content_info): Reset the filters before adding them
+ back to the stream, if they get re-used in a given instance
+ (likely).
+
+ * Makefile.am (libcamelinclude_HEADERS): Added
+ camel-mime-filter-html.[ch].
+ (INCLUDES): Added xml clags
+
+2001-03-05 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-search.c (camel_folder_search_class_init): Setup a
+ new function, "uid" which matches uids.
+ (search_uid): Implement the "match uid" command.
+
+2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c: Check for a new type of mailing list header.
+
+2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-raw.c (stream_read): Made cancellable.
+ (stream_write): Same.
+ (stream_connect): Removed checks for DIVINE_INTERVENTION as the
+ code worked fine.
+
+ * camel-tcp-stream-ssl.c (stream_write): get rid of 'w' as it
+ wasn't really needed.
+ (set_errno): New function to set errno based on the NSPR error
+ code.
+ (stream_read): If an error occured, call set_errno().
+ (stream_write): Same.
+
+2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Added camel-tcp-stream-ssl to the build.
+
+ * camel-remote-store.h: Add a use_ssl member to the
+ CamelRemoteStore object.
+
+2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_get_type):
+ Oops. Make this a subclass of CamelTcpStream, not CamelStream.
+
+ * camel-types.h: Add the defs for CamelTcpStream and
+ CamelTcpStreamRaw
+
+ * Makefile.am: Add camel-tcp-stream and camel-tcp-stream-raw to
+ the build.
+
+ * camel-remote-store.c (remote_connect): Update to use
+ CamelTcpStreams.
+
+ * camel-tcp-stream-raw.c (stream_connect): Made cancellable by
+ copying the currently used code in camel-remote-store.c.
+ (stream_setsockopt): Oops, flags = fcntl (..., GET_FL);
+ (camel_tcp_stream_raw_get_type): Oops. Make this a subclass of
+ CamelTcpStream, not CamelStream.
+
+2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel.c (camel_init): Since all of the Mozilla libs (including
+ NSPR and NSS) correctly handle reinitializations, we might as well
+ init both NSPR and NSS in camel_init so we can be sure of that
+ these libs have been initialized.
+ (camel_shutdown): New function to call the NSS cleanup stuff.
+
+2001-03-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder.c (camel_folder_copy_message_to): Don't allow the
+ user to copy a message to or from the vtrash folder. Set an
+ exception if they try.
+ (camel_folder_move_message_to): This one is a bit more
+ complicated: 1) If the user tried to move a message from the
+ vtrash into the original folder, just undelete the message. 2) If
+ the user tries to move the message to the vtrash folder, then just
+ mark the message as deleted. 3) If the user tries to move the
+ message from the vTrash to a folder other than the original, use
+ the original folder as the source. As another optimization, I've
+ made it so that if the user tries to move a message to the same
+ folder, just no-op.
+ (move_message_to): Unset the deleted flag before moving (assuming
+ it's there).
+ (copy_message_to): Same.
+
+ * camel-vee-folder.c (camel_vee_folder_get_message_folder): New
+ convenience function to get the folder from which the message uid
+ is derived from.
+
+2001-03-13 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect): When trying
+ again after a failed password attempt, check if the connection got
+ dropped (which Courier will do) and deal accordingly.
+
+ * providers/sendmail/camel-sendmail-transport.c (sendmail_send_to,
+ sendmail_send): More fixing for exim: It can't deal with "-tif",
+ you need to say "-t -i -f".
+
+2001-03-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (init_trash): Rename the folder to "Trash" and
+ i18nify it.
+
+2001-03-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.h: Comment out everything unless HAVE_NSS
+ is defined.
+
+ * camel-tcp-stream-ssl.c (stream_read): Don't use errno, use
+ nspr's error code stuff.
+ (stream_write): Same.
+
+2001-03-09 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-session.c (camel_session_query_authenticator): Created a
+ new mode (CAMEL_AUTHENTICATOR_ACCEPT) which is a Yes/No prompt to
+ the user. This will be needed by the SSL/TLS code to come. Also
+ changed the return value to a gpointer rather than a char* to
+ allow the returning of TRUE/FALSE values.
+
+ * camel.c: Wrap stuff with HAVE_NSS
+
+2001-03-09 Dan Winship <danw@ximian.com>
+
+ * providers/sendmail/camel-sendmail-transport.c (sendmail_send,
+ sendmail_send_to): Remove the "-U" for now, because it breaks
+ exim's "sendmail" wrapper. (And it doesn't actually do all that
+ much to sendmail's behavior, and it was working fine before
+ anyway.)
+
+ * 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?)
+
+2001-03-08 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (camel_store_get_folder): Changes so that the
+ folder gets added to the vtrash reguardless of whether or not the
+ store is holding it's own folder lookup hash.
+ (init_trash): Oops, lets try locking the cache before we go and
+ add all the cached folders to the vtrash.
+
+2001-03-08 Jeffrey Stedfast <fejj@ximian.com>
+ These fixes make it so that the CamelStore does not actually hold
+ a ref on it's vTrash folder. The vTrash folder is now created ONLY
+ when it is requested. This solves the problem of not being able to
+ unref a Store and have it disconnect/finalize like we expect it to.
+
+ * camel-store.c (init_trash): When we create the vtrash, add all
+ previously opened folders to it and hook on to the finalize event
+ so that we can then set the store->vtrash to NULL.
+ (get_trash): If a vtrash folder for the store doesn't exist,
+ init_trash() and then try.
+ (construct): No longer need this.
+ (camel_store_class_init): Don't override the construct method.
+ (camel_store_finalize): We no longer hold a ref on the vtrash so
+ don't unref it.
+
+2001-03-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/pop3/camel-pop3-store.c (init_trash): Implement.
+ (get_trash): Implement.
+ (camel_pop3_store_class_init): Override the default init_trash and
+ get_trash virtual functions. Hopefully this should fix the problem
+ of pop3 sotre's not disconnecting after the send&recv code
+ finishes downloading mail.
+
+ Wonder if I should override the default implementation for the
+ mbox, mh, and maildir too?
+
+2001-03-07 Dan Winship <danw@ximian.com>
+
+ * camel-remote-store.c (camel_remote_store_connected): Return the
+ return value of camel_service_connect rather than returning
+ !camel_exception_is_set(), since that will be wrong if ex==NULL...
+ Fixes a crash in the IMAP keepalive code, but this same problem
+ probably exists in other places too...
+ (remote_recv_line): Fix another problem...
+
+ * providers/local/camel-mbox-provider.c:
+ * providers/vee/.cvsignore:
+ * providers/vee/libcamelvee.urls: Remove some unused stuff
+
+2001-03-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-digest-md5.c (compute_response): Redone so as to save
+ on memory allocations and speed.
+
+2001-03-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-plain.c (plain_challenge): Don't return NULL if the
+ token is non-NULL. This is why:
+
+ sending : AUTH PLAIN
+ received: 334 ok. go on. <-- this is why
+ sending : ZGZPaQpAZ214Lm5ldBBnb29jYXI=
+ received: 235 {mp005-rz3} go ahead
+
+ * camel-sasl.c (camel_sasl_authtype): Add the PLAIN type here.
+ (camel_sasl_authtype_list): And here too.
+
+ * camel-sasl-plain.c: Initialize the camel_sasl_plain_authtype.
+
+ * camel-sasl-plain.h: extern the camel_sasl_plain_authtype.
+
+2001-03-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect): i18n'd some
+ strings in here.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): Keep
+ trying to authenticate until either we succeed or until the user
+ cancels.
+
+2001-03-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c: Wrote a new version of header_fold() that
+ takes a 'force' option and uses another new function called
+ header_fold_next_space() in place of strchr(inptr, ' ') to get the
+ next whitespace char. The idea of header_fold_next_space() is to
+ not treat spaces between a set of quotes as a space - this way it
+ will be possible to fold (for example) the Content-Type MIME
+ header without worrying about breaking up a boundary string.
+ Note: This code is #if 0'd out until Zucchi approves of the patch.
+ Another Note: We will probably still want to use the "don't fold
+ this header" hash lookup for headers like the Message-Id and
+ possibly a few others.
+
+2001-03-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-internet-address.c
+ (camel_internet_address_encode_address): Make sure there is a
+ space between the name and the address tokens.
+
+ * camel-mime-utils.c (rfc2047_decode_word): encoded string
+ segments need to be at least 8 chars (7 doesn't leave room for an
+ ecoding value. To be more realistic, even 8 chars isn't enough as
+ this assumes there is no charset nor any encoded text. If the
+ encoding value is not 'Q' or 'B', then return NULL. This fixes bug
+ #1689.
+
+2001-03-03 Not Zed <NotZed@Ximian.com>
+
+ * camel-vee-folder.c (vee_folder_remove_folder): New function to
+ remove a folder from a vfolder.
+ (camel_vee_folder_remove_folder): New public function to remove a
+ folder from a vfolder.
+
+2001-03-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-provider.c: Doh! Set the
+ CAMEL_URL_ALLOW_AUTH flag.
+
+ * providers/smtp/camel-smtp-transport.c (get_smtp_error_string):
+ Updated with the extended AUTH return codes.
+
+2001-03-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-store.c (try_auth): Don't forget to
+ unref the SASL object.
+
+ * providers/smtp/camel-smtp-transport.c (query_auth_types):
+ Implemented.
+ (smtp_auth): Implemented.
+ (smtp_helo): Don't bother parsing the authtypes if we already have
+ them.
+ (smtp_connect): call smtp_auth() here if we found any authtypes.
+ (smtp_disconnect): Updated as I now use a hash table for the
+ supported authtypes rather than a linked list.
+ (esmtp_get_authtypes): modify to use a hash table instead of a
+ linked list and also use isspace() rather than == ' '.
+
+2001-03-02 Dan Winship <danw@ximian.com>
+
+ * providers/sendmail/camel-sendmail-transport.c (sendmail_send_to,
+ sendmail_send): Use "-f" to set the envelope from address so
+ bounces go to the right place. Also, pass "-U" since the man page
+ says we're supposed to...
+
+2001-03-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl.c: #include "camel-sasl-digest-md5.h"
+ (camel_sasl_authtype_list): add DIGEST-MD5 stuff here.
+ (camel_sasl_authtype): And here too.
+ (camel_sasl_new): And here...
+
+ * camel-sasl-digest-md5.[c,h]: new SASL class for DIGEST-MD5 (has
+ been tested and proven to work).
+
+2001-03-01 Dan Winship <danw@ximian.com>
+
+ * camel-sasl.c (camel_sasl_challenge): Take a GByteArray as input
+ as well. Comment that you can pass %NULL for @token to get the
+ initial auth data for mechanisms that are client-initiated.
+ (camel_sasl_challenge_base64): Convenience function for protocols
+ that use base64-encoded SASL.
+ (camel_sasl_authenticated): Implement this... (it was prototyped
+ already)
+ (camel_sasl_new): Function to take a service name, a mechanism
+ name, and a CamelService, and return a CamelSasl for it.
+ (camel_sasl_authtype, camel_sasl_authtype_list): Functions to
+ return CamelServiceAuthType information about SASL mechanisms, to
+ allow providers to deal with them generically.
+
+ * camel-sasl-anonymous.c, camel-sasl-plain.c: Update/simplify for
+ CamelSasl changes. Both of these are single-round
+ (client-initiated) mechanisms, so they don't need to keep state.
+ (camel_sasl_plain_new): Removed; use camel_sasl_new instead.
+ (Can't get rid of camel_sasl_anonymous_new though...)
+
+ * camel-sasl-cram-md5.c: Update/simplify for CamelSasl changes.
+ (camel_sasl_cram_md5_new): Removed; use camel_sasl_new instead.
+ (cram_md5_challenge): Use md5_get_digest where possible, and
+ various other minor simplifications. CRAM-MD5 only has a single
+ round, so there's no need to keep track of state. This code is now
+ tested (against Cyrus IMAPd) and known to work.
+
+ * camel-sasl-kerberos4.h: Update/simplify for CamelSasl changes.
+ Make only a single #ifdef HAVE_KRB4. Remove stuff from priv that
+ isn't needed between rounds.
+ (camel_sasl_kerberos4_new): Removed; use camel_sasl_new instead
+ (krb4_challenge): Fix up the logic I broke in my previous "at
+ least make it compile" fixes, update to match other changes, and
+ remove IMAP-isms that shouldn't be in the generic code. This still
+ isn't tested, because we're stuck behind a NAT right now...
+
+ * providers/imap/camel-imap-store.c: Add an "authtypes" hash table
+ to CamelImapStore recording the supported authtypes.
+ (connect_to_server): Record supported authtypes in the authtypes
+ hash rather than the capabilities bitmask, since now the IMAP code
+ is no longer responsible for keeping track of which authtypes we
+ support.
+ (query_auth_types): Use camel_sasl_authtype_list to get the
+ SASL-supported authtypes.
+ (try_auth): New function to try a SASL auth mechanism. Sort of
+ formerly imap_try_kerberos_v4_auth.
+ (imap_connect): Get rid of the krb4-specific bits and genericize
+ them for any SASL authtype.
+
+ * providers/imap/Makefile.am: Remove camel-imap-auth.[ch] (moved
+ into camel-imap-store.c since it's now constant size) and the
+ KRB4_CFLAGS and KRB4_LDFLAGS references.
+
+2001-03-01 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-sasl-anonymous.c (anon_challenge): Don't base64 encode the
+ data, leave that up to the provider to do if it needs to. Also
+ save on some memory allocations and stuff.
+
+ * camel-sasl-cram-md5.c (cram_md5_challenge): Same here. Also get
+ rid of the need for the temp buf as we can just write it to the
+ GByteArray.
+
+2001-03-02 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-utils.c (rfc2047_encode_word, rfc2047_decode_word):
+ Reconstify variables to match iconv.
+
+ * camel-search-private.c (camel_ustrstrcase): Change some
+ assertions back into valid returns.
+
+2001-03-01 Dan Winship <danw@ximian.com>
+
+ * Makefile.am (libcamel_la_LIBADD, INCLUDES): camel depends on
+ krb4 now (where available), for camel-sasl-kerberos4.c
+
+ * camel-sasl-kerberos4.[ch]: Make this at least compile. Dunno if
+ it works yet.
+
+2001-03-01 Peter Williams <peterw@ximian.com>
+
+ * camel-url.c (camel_url_new): Assert url_string != NULL.
+
+2001-02-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Added camel-sasl-anonymous.[c,h] to the build.
+
+ * camel-sasl-anonymous.[c,h]: new SASL class for ANONYMOUS
+
+ * camel-sasl-plain.c (plain_challenge): Oops, have a state for
+ setting sasl->authenticated = TRUE;
+
+ * camel-sasl-cram-md5.c (cram_md5_challenge): Same here.
+
+2001-02-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (header_decode_date): A fix for broken
+ mailers that send 2-digit years (ie "Wed, 28 Feb 01
+ 04:59:41"). Fixes bug #1633.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder): Check
+ to make sure message isn't NULL.
+
+2001-02-28 Dan Winship <danw@ximian.com>
+
+ * camel-remote-store.c (remote_recv_line): If we get back 0 bytes
+ from camel_stream_buffer_gets, that means the socket got
+ disconnected, so set an exception. (Noticed because of a message
+ that crashes our IMAP server when you try to look at it. :)
+
+2001-02-28 Jeffrey Stedfast <fejj@ximian.com>
+
+ * Makefile.am: Added camel-sasl*.[c,h] to the build.
+
+ * camel-sasl.[c,h]: new "abstract" SASL class
+
+ * camel-sasl-kerberos4.[c,h]: new SASL class for KERBEROS_V4
+
+ * camel-sasl-cram-md5.[c,h]: new SASL class for CRAM-MD5
+
+ * camel-sasl-plain.[c,h]: new SASL class for PLAIN
+
+ * providers/imap/camel-imap-auth.c: Removed the base64 functions.
+
+ * camel-mime-utils.c (base64_encode_simple): Moved here from
+ camel-imap-auth.c
+ (base64_decode_simple): Same.
+
+2001-02-26 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (imap_sync): Group messages
+ into sets with the same flags and use the IMAP message set
+ notation rather than doing a separate STORE FLAGS for each one.
+ This cuts the network traffic down to just a handful of commands
+ per sync rather than one per changed message. Removed the progress
+ notification stuff since it's no longer meaningful and should
+ hopefully be unnecessary.
+ (imap_copy_message_to): move the former sync_message function
+ into here, since it's no longer shared with imap_sync.
+
+2001-02-26 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c: Made thread-safe and moved to above the test
+ code.
+
+ * camel-mime-message.c (camel_mime_message_init): Set the
+ message_id to NULL.
+ (camel_mime_message_finalize): Free the message_id.
+ (camel_mime_message_set_message_id): New function to set the
+ Message-Id.
+ (camel_mime_message_get_message_id): New function to get the
+ Message-Id.
+ (process_header): Decode the message-id.
+
+2001-02-24 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (construct): init the vTrash folder here instead
+ of in store_init.
+ (camel_store_class_init): init service_class->construct.
+ (camel_store_finalize): We only need to unref the vtrash folder.
+ (init_trash): don't create a vstore since we don't need it.
+
+2001-02-23 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-store.c (camel_store_class_init): init get_trash and
+ init_trash.
+ (camel_store_init): call the virtual init_trash function.
+ (camel_store_finalize): unref the vtrash folder/store if present.
+ (camel_store_get_folder): Add the new folder to the vtrash
+ vfolder.
+ (init_trash): default implementation of init_trash.
+ (get_trash): default implementation of get_trash.
+
+ * camel-vee-store.c (vee_init_trash): No-op.
+ (vee_get_trash): return NULL
+
+2001-02-23 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-summary.c (camel_message_info_new_from_header):
+ Doh, cut and paste problem, use mlist not cc.
+
+ * camel-folder.c (move_message_to):
+ (copy_message_to): If the source folder doesn't support a
+ summary, dont try and get the message info from it.
+
+ * camel-filter-search.c (check_header): Implement a pseudo-header
+ "x-camel-mlist" which just looks up in the message info for a
+ match.
+
+ * camel-folder-search.c (check_header): Add pseudo-header
+ "x-camel-mlist" which can be used to match on mailing list.
+
+ * providers/imap/camel-imap-folder.c (imap_sync): Add some
+ internal progress reporting.
+ (imap_rescan): Do some progress reporting.
+
+ * camel-mime-part.c (init_header_name_table): Add the message-id
+ to the formatted table, so we dont try and wrap it, and break it.
+
+2001-02-22 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder.h: Remove the 'FIXME: remove because this isn't
+ required...' comment for copy_message_to since we now need and
+ cherish its existance in the filter-driver code ;-)
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message): Now
+ takes a UID and CamelFolder arguments (which can be NULL) to allow
+ for possible optimizations when copying messages between folders
+ on the same store.
+ (camel_filter_driver_filter_mbox): Updated (passes NULL for both
+ since this case can't be optimized anyway).
+ (camel_filter_driver_filter_folder): Updated to pass in the uid
+ and folder of the message.
+
+2001-02-22 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-summary.h (CAMEL_IMAP_SERVER_FLAGS):
+ #define this as the set of all IMAP system flags
+
+ * providers/imap/camel-imap-folder.c (sync_message): after syncing
+ flags, set server_flags to (flags & CAMEL_IMAP_SERVER_FLAGS)
+ rather than just "flags", since any other flags won't have been
+ synced. Prevents the CAMEL_MESSAGE_ATTACHMENTS flag from getting
+ lost.
+
+2001-02-22 Not Zed <NotZed@Ximian.com>
+
+ * providers/vee/*: Removed all files.
+
+ * camel-private.h: Move camel-vee-private.h stuff into here.
+
+ * camel-session.c: Move the vee_provider here, and initialise it
+ always as part of a session. The vfolder provider is always
+ available.
+
+ * providers/Makefile.am: Remove "vee" from the build list, now
+ built as part of the main library.
+
+ * Makefile.am (libcamelinclude_HEADERS):
+ (libcamel_la_SOURCES): Added camel-vee-store.[ch],
+ camel-vee-folder.[ch].
+
+ * providers/vee/camel-vee-folder.c (vee_folder_build): Removed,
+ not used.
+ (camel_vee_folder_new): Removed call to build_folder.
+ (vee_get_message): Dont try and free the mi if we didn't get it.
+
+ * camel-folder.c (camel_folder_change_info_new): Added a hash
+ table of what we have in the lists, plus moved private things into
+ private pointer.
+ (camel_folder_change_info_add_source): Fixed up private accesses.
+ (camel_folder_change_info_add_uid): Changed to use a hashtable to
+ see if we already have the uid, etc.
+ (camel_folder_change_info_remove_uid): Similar.
+ (change_info_remove): Likewise.
+ (camel_folder_change_info_clear): Fixes for privatisations.
+ (camel_folder_change_info_free): "
+
+2001-02-21 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (fetch_medium): Fixes for
+ IMAP4-pre-rev1 from Torsten Schulz.
+
+2001-02-20 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-utils.c (mail_list_magic): Take the ^Header: part out
+ of the expression, since we look that up ourselves.
+ (header_raw_check_mailing_list): When getting the match, get match
+ 1, not match 0, we dont want the full string match.
+
+ * camel-folder-summary.c (CAMEL_FOLDER_SUMMARY_VERSION): Bumped
+ for summary change.
+ (message_info_new): Extract the mlist info from the headers.
+ (message_info_load): Load mlist from summary.
+ (message_info_save): Save mlist to summary.
+ (message_info_free): Save the mlist entry.
+ (camel_message_info_new_from_header): Extract mailing list header.
+ (camel_message_info_dup_to): Copy the mlist entry.
+ (camel_message_info_free): Free mlist.
+ (message_info_dump): Dump the mlist.
+
+ * camel-folder-summary.h: Add an mlist (mailing list) string to
+ the summary.
+
+2001-02-19 Not Zed <NotZed@Ximian.com>
+
+ * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Added
+ flags argument.
+ (message_changed): Add support for the auto-update flag, in which
+ case we auto-match the content as it changes.
+ (camel_vee_folder_init): Remoive "DYNAMIC" optionality
+ (camel_vee_folder_finalise): "
+ (vee_expunge): As we expunge folders, re-sync their content by
+ rerunning the query.
+
+ * providers/vee/camel-vee-store.c (vee_get_folder): Pass flags to
+ folder new.
+
+2001-02-18 Not Zed <NotZed@Ximian.com>
+
+ * providers/vee/Makefile.am (noinst_HEADERS): Added
+ camel-vee-private.h.
+
+ * providers/vee/camel-vee-private.h: New file to add locking stuff
+ for vee folders.
+
+ * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Add
+ locking around unmatched setup.
+ (camel_vee_folder_init): Setup lock.
+ (camel_vee_folder_finalise): Free locks.
+ (folder_changed): Add locking.
+ (unmatched_finalise): "
+ (message_changed): "
+ (vee_folder_build): "
+
+2001-02-17 Not Zed <NotZed@Ximian.com>
+
+ * providers/vee/camel-vee-folder.c (vee_folder_add): Check uid
+ doesn't exist before adding it.
+
+2001-02-16 Not Zed <NotZed@Ximian.com>
+
+ * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Create
+ a new virtual virtual folder UNMATCHED, to store all messages that
+ dont match other vfolders.
+ (unmatched_folder_changed): When a vfolder issues a changed event,
+ use its info to update the unmatched folder info.
+ (unmatched_finalise): When a vfolder is finalised, remove any uids
+ it has as if we had a removed event for it.
+
+2001-02-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_finalise): Thaw the
+ defaultfolder.
+ (camel_filter_driver_set_default_folder): Thaw the defaultfolder
+ we're about to replace, and freeze the new defaultfolder.
+
+2001-02-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Emit
+ the folder_created signal here.
+
+ * providers/local/camel-local-folder.c
+ (camel_local_folder_construct): Emit the folder_created signal.
+
+ * providers/local/camel-local-store.c (delete_folder): On error,
+ free the 'name' string so we don't leak. Also emit the
+ folder_deleted signal.
+
+ * providers/imap/camel-imap-store.c (subscribe_folder): Emit the
+ folder_created signal.
+ (unsubscribe_folder): Emit the folder_deleted signal.
+
+ * camel-store.c (camel_store_class_init): Added folder_created and
+ folder_deleted signal defs.
+
+2001-02-15 Dan Winship <danw@ximian.com>
+
+ * camel-folder-thread.c (container_parent_child): Deal with
+ out-of-order References headers so they don't cause messages to
+ disappear in threaded view.
+
+ * providers/imap/camel-imap-folder.c (fetch_medium): IMAP4
+ (pre-rev1) doesn't allow BODY.PEEK[], so use RFC822.PEEK instead
+ in that case.
+
+2001-02-14 Christopher James Lahey <clahey@ximian.com>
+
+ * camel-mime-filter-charset.c (complete, filter),
+ camel-mime-utils.c (rfc2047_decode_word, rfc2047_encode_word):
+ Changed this code to match the glibc iconv signature.
+
+2001-02-14 Dan Winship <danw@ximian.com>
+
+ * camel-store.c (camel_store_create_folder): New method to create
+ a folder when you don't know its full name.
+
+ * providers/imap/camel-imap-store.c (create_folder): Implement.
+ (create_folder): Oops, and fix bug involving namespaces
+
+2001-02-12 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-part.c (init_header_name_table): Add address headers
+ to list that we dont fold when writing. The are properly
+ formatted as we build them.
+ (write_to_stream): DOH, lookup the header name in the formatted
+ hash table, not the value, that would never have worked.
+
+ * camel-internet-address.c
+ (camel_internet_address_encode_address): Changed to take a
+ parameter saying how much we've printed so far. We now fold the
+ header as we format it. We dont fold addresses, even if they are
+ too long, we simply put them on another line by themselves: this
+ should make the result more parsable by mailers that can't handle
+ split up addresses (which are legal).
+ (internet_encode): Fix for changes to above.
+
+2001-02-12 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/local/camel-local-provider.c: mbox, mh, and maildir
+ camel-url's need absolute paths.
+
+ * camel-provider.h (CAMEL_URL_PATH_IS_ABSOLUTE): New flaggy flag.
+
+2001-02-08 Dan Winship <danw@ximian.com>
+
+ * camel-store.c: Rewrite a bunch. Replace the existing folder
+ cache stuff with much simpler code that still handles all the
+ existing cases. Now the folder hash table is always created by the
+ base class, using hash and compare functions provided by the class
+ implementation. (If they are set to NULL, CamelStore won't cache
+ folders.) lookup_folder, cache_folder, and uncache_folder are no
+ longer class methods, and get_name is gone completely.
+
+ (camel_store_get_inbox): Renamed from
+ camel_store_get_default_folder, since that wasn't being used, and
+ this is what we actually need.
+ (camel_store_get_root_folder): Removed, since it's not needed for
+ anything given get_folder_info.
+
+ * camel-remote-store.c:
+ * providers/local/camel-local-store.c:
+ * providers/local/camel-mbox-store.c:
+ * providers/local/camel-mh-store.c:
+ * providers/local/camel-maildir-store.c:
+ * providers/nntp/camel-nntp-store.c:
+ * providers/pop3/camel-pop3-store.c:
+ * providers/vee/camel-vee-store.c: Minor updates for CamelStore
+ changes
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_class_init):
+ Update for CamelStore changes.
+ (hash_folder_name, compare_folder_name): treat INBOX
+ case-insensitively, otherwise use g_str_hash and g_str_equal.
+
+ * camel-service.c (camel_service_construct): Remove
+ camel_service_new and create camel_service_construct (as a class
+ method) in its place.
+
+ * camel-session.c (camel_session_get_service): Use
+ camel_object_new and camel_service_construct to replace
+ camel_service_new.
+
+ * providers/local/camel-local-store.c (construct): Append a '/' to
+ the URL path if it doesn't end with one
+
+2001-01-31 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-tcp-stream-ssl.c: Oops, include the camel-tcp-stream-ssl
+ header instead of the raw one.
+
+2001-02-07 Not Zed <NotZed@Ximian.com>
+
+ * camel-operation.c (camel_operation_start): Changed to push the
+ operation into a status stack.
+ (camel_operation_progress): Changed to only accept % complete.
+ (camel_operation_reset): Free status stack as well.
+
+ * providers/pop3/camel-pop3-folder.c (pop3_get_message): Get the
+ octect count from the return line, and pass it to
+ get_additional_data().
+ (pop3_refresh_info): Added status stuff.
+
+ * providers/pop3/camel-pop3-store.c
+ (camel_pop3_command_get_additional_data): Added a total bytes
+ expected argument for progress reporting & fixed callers.
+ (camel_pop3_command_get_additional_data): Added progress
+ reporting.
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync_full):
+ (mbox_summary_sync_quick):
+ (summary_rebuild): Added progress reporting stuff.
+
+2001-02-07 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-search-private.c (CAMEL_SEARCH_COMPARE): Macro for making
+ comparisons easy.
+ (camel_ustrcasecmp): Use CAMEL_SEARCH_COMPARE and check for
+ end-of-string before the utf-8 error check.
+ (camel_ustrncasecmp): Same.
+ (camel_search_header_match): Strip leading spaces before doing
+ anything else. Also use vlen and mlen so as to not need to do 500
+ strlen()'s.
+ (camel_ustrcasecmp): Don't get_utf8() for the 2 strings in the
+ comparison part of the loop because of short-circuit expression
+ evaluation. (blame JPR if this is the wrong term!)
+ (camel_ustrncasecmp): Same.
+
+2001-02-06 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-search-private.c (utf8_get): Rewrote using unicode_get_utf8().
+ (camel_ustrcasecmp): Use unicode_char_t
+ (camel_ustrncasecmp): Same.
+
+2001-02-06 Christopher James Lahey <clahey@ximian.com>
+
+ * camel-mime-filter-charset.c (complete, filter),
+ camel-mime-utils.c (rfc2047_decode_word, rfc2047_encode_word):
+ Made these pass char ** as the second parameter to iconv.
+
+2001-02-06 Not Zed <NotZed@Ximian.com>
+
+ * camel-session.c: Removed all the camel_cancel stuff.
+
+ * camel-stream-fs.c (stream_read): Change to use camel_operation.
+ (stream_write): "
+
+ * camel-remote-store.c (socket_connect): Change to use
+ camel_operation rather than camel_cancel stuff.
+ Removed gal include, WTF is that doing there anyway?
+
+ * Makefile.am (libcamel_la_SOURCES):
+ (libcamelinclude_HEADERS): Added camel-operation.[ch], stuff to
+ handle notification and cancellation.
+
+ * camel-search-private.c: Removed unwanted header. It was never
+ put in for a reason. Stop fixing irrelevant warnings.
+
+ (camel_ustrstrcase): Our own strstrcase impl for utf8 strings.
+ (camel_ustrcasecmp): Ditto for strcasecmp.
+ (camel_ustrncasecmp): And strncasecmp.
+ (utf8_get): Simpler interface to utf8 string processing.
+ (camel_search_header_match): Use the new things.
+
+2001-02-05 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (get_summary): Removed some old variables/a small
+ memleak.
+ (free_summary): Removed old variables.
+
+ * camel-mime-utils.c (header_raw_check_mailing_list): New utility
+ function to get the mailing list (if any) that a set of headers
+ came from.
+
+2001-02-05 Christopher James Lahey <clahey@helixcode.com>
+
+ * camel-stream-fs.c: Added a missing #include.
+
+ * camel-search-private.c: Added a missing #include.
+
+2001-02-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-remote-store.c (remote_query_auth_types): Oops. Change
+ this too.
+
+ * providers/smtp/camel-smtp-transport.c (query_auth_types): Updated.
+
+ * providers/nntp/camel-nntp-store.c (nntp_store_query_auth_types):
+ Updated.
+
+ * providers/pop3/camel-pop3-store.c (query_auth_types): Updated.
+
+ * providers/imap/camel-imap-store.c (query_auth_types): Updated.
+
+ * camel-service.c (camel_service_query_auth_types): Now takes a
+ boolean value to specify whether or not to connect when
+ constructing a supported authtype list.
+
+2001-02-05 Not Zed <NotZed@Ximian.com>
+
+ * camel-stream-filter.c (do_write): Revert jeff's earlier change,
+ the change below is the more-correct fix. All his was doing was
+ ignoring the return code & looping actually :)
+
+ * camel-stream-fs.c (stream_write): Since we are non-blocking on
+ the outgoing fd, keep looping if writing out large blocks, so we
+ can keep checking for cancel, etc.
+
+2001-02-02 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-thread.c (camel_folder_thread_messages_new): When
+ we drop a fake node, dont skip checking the next in the list.
+ (camel_folder_thread_messages_new): Add an assertion check just to
+ make sure we dont get any pseudo nodes, and spit a warning if we
+ do.
+
+2001-02-04 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-stream-filter.c (do_write): Make do_write loop until the
+ entire buffer is written.
+
+2001-02-02 Not Zed <NotZed@Ximian.com>
+
+ * camel-stream-fs.c: Add missing header for cancel check stuff.
+
+ * camel-session.c (camel_cancel_cancel): Fix a wrong cast.
+
+ * camel-mime-part.c (init_header_name_table): Setup a new table
+ header_formatted_table, that lists headers that we dont want to
+ fold (they've already been folded).
+ (write_to_stream): Check for already formatted headers, and dont
+ try and fold them. This is a fix for bug #1097.
+
+2001-02-01 Not Zed <NotZed@Ximian.com>
+
+ * camel-mime-utils.c (header_fold): If we are folding, drop the
+ space at the end of the line.
+
+2001-01-30 Not Zed <NotZed@Ximian.com>
+
+ * camel-remote-store.c (timeout_cb): Remvoe the stream locking
+ here. I think this was leading to a deadlock when a keepalive is
+ being sent, in imap.
+
+2001-01-29 Not Zed <NotZed@Ximian.com>
+
+ * providers/imap/camel-imap-command.c
+ (imap_command_strdup_vprintf): Include the terminating NUL in the
+ calculated string length. This hit memcheck.
+
+2001-01-25 Not Zed <NotZed@Ximian.com>
+
+ * tests/folder/test3.c: Changed the subject search to handle case
+ sensitive when it is mixed case.
+
+ * Makefile.am (libcamel_la_SOURCES): Added camel-ssearch-private.c
+ (noinst_HEADERS): Added camel-search-private.h
+
+ * camel-folder-search.c (check_header): New function to do the
+ work of the various header checks.
+ (search_header_matches):
+ (search_header_starts_with):
+ (search_header_ends_with):
+ (search_header_contains): Use check_header to do the work.
+ (build_match_regex): Removed.
+
+ * camel-search-private.c (header_soundex): New
+ function to match words to phrases using soundex algorithm.
+
+ * camel-filter-search.c (soundexcmp): Removed.
+ (check_match): Moved to search-private.h
+
+2001-01-24 Not Zed <NotZed@Ximian.com>
+
+ * camel-search-private.c (camel_search_build_match_regex): Added
+ extra flags, so the same function can be used for
+ start/end/whole/partial matches.
+ (camel_search_header_match): Convenience function to check a
+ single header against all sorts of different matches.
+
+ * providers/imap/camel-imap-search.c (imap_body_contains): Fix for
+ e_sexp api changes.
+
+ * camel-folder-search.c: Fix for e_sexp api changes.
+ (search_header_contains): Free args/quit on unknown header.
+ (search_header_matches): "
+ (search_header_starts_with): "
+ (search_header_ends_with): "
+ (match_message): Add an exception argument.
+ (search_body_contains): Free args/quit on fatal error.
+ (message_body_contains): Removed (moved to
+ camel-search-private.c), fixed callers.
+
+ * camel-filter-search.c: Fix for e_sexp api changes.
+ (build_match_regex, message_body_contains): Moved into
+ camel-filter-private.c Fixed callers.
+ (check_header): moved guts to camel-search-private, and
+ changed to use regex's for everything. Just calls that with the
+ right args.
+ (check_header): GEts the header, decodes it, and checks for
+ failure, and whatnot.
+ (check_match): Removed.
+ (header_soundex): Changed significantly. Now it soundexes each
+ word in the header separately, and compares it to the first
+ argument.
+
+ * tests/folder/test9.c (main): Fix for api changes.
+ (main): Added tests to see that invalid match and action
+ rules are properly detected.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_mbox): Remove
+ the 'finished message' bit.
+ (camel_filter_driver_filter_message): Remove an accidentally
+ checked in debug.
+ (camel_filter_driver_filter_message): Fix for e-sexp api changes.
+
+2001-01-23 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-wrapper.c: Add a lock around the
+ delayed loading, so two threads won't try to do it at the same
+ time.
+
+2001-01-22 Dan Winship <danw@ximian.com>
+
+ * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Set the
+ CamelFolder::name to just the base part of the vfolder name (the
+ non-query part)
+
+2001-01-23 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-search.c (camel_filter_search_match): Perform error
+ checking on parsing/execution.
+
+ * camel-folder-search.c (camel_folder_search_execute_expression):
+ Perform error handling on search expression.
+ (CamelFolderSearchPrivate): Add a camelexception for error
+ returns.
+ (camel_folder_search_execute_expression): Setup exception pointer.
+ (search_match_all): Quit on error.
+
+ * providers/imap/camel-imap-summary.c (message_info_load): Removed
+ some debug 'warnings', as they should now be displayed at the
+ toplevel loader, and just made the code match similar code
+ elsewhere.
+
+ * providers/local/camel-mbox-summary.c (message_info_load): Error
+ handling.
+ (message_info_save): more error handling.
+
+ * camel-folder-summary.c (message_info_load): Add error handling
+ and sanity checking.
+ (camel_folder_summary_load): Add error checks.
+ (perform_content_info_load): Error + sanity checks.
+ (content_info_load): error + sanity checks.
+
+ * camel-filter-driver.c (close_folder): avoid /0 by updating after
+ we've done the sync.
+ (close_folders): Setup the first progress report to start it off.
+ (camel_filter_driver_filter_message): Fix a fixme, check errors in
+ e_sexp parsing, etc.
+
+2001-01-22 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
+ Initialize the value of the variable exists here.
+
+2001-01-22 Not Zed <NotZed@Ximian.com>
+
+ * .cvsignore */*/.cvsignore: Added profiling temp
+ files.
+
+ * camel-folder-thread.c (camel_folder_thread_messages_new): When
+ removing phantom nodes, check for the end node too.
+
+ * camel-filter-driver.[ch]: Changed status vars to be
+ CAMEL_FILTER_STATUS_ etc.
+
+2001-01-21 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-mime-utils.c (header_param_list_format_append): Make the
+ output a little prettier. Okay, so I'm anal...
+
+2001-01-21 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-driver.h: Added an exception to
+ CamelFilterGetFolderFunc.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message):
+ Remove source parameter, as it is determined elsewhere now.
+ (camel_filter_driver_filter_folder): Same here.
+ (camel_filter_driver_filter_mbox): And here.
+ (do_move): If we cannot open a folder, quit, rather than ignoring
+ it.
+ (do_copy): Here too.
+ (open_folder): Pass an exception into get_folder callback.
+ (camel_filter_driver_filter_folder): Report that we're syncing,
+ when we are.
+ (camel_filter_driver_filter_mbox): And here too.
+ (close_folder): And here.
+
+2001-01-19 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-filter-driver.c (camel_filter_driver_filter_message): Set
+ the deleted bit *before* copying to the default folder, this way
+ if they are importing mail and have a rule to delete it, it
+ doesn't get copied to the default folder un-deleted.
+
+2001-01-19 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-store.c
+ (get_subscribed_folders_by_hand): If LISTing a subscribed folder
+ doesn't return a LIST response, just ignore that folder. Yay
+ RFC2060.
+ (subscribe_folder): add a missing UNLOCK
+
+2001-01-19 Kjartan Maraas <kmaraas@gnome.org>
+
+ * providers/smtp/camel-smtp-provider.c: Mark strings for translation.
+
+2001-01-19 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-driver.c (report_status): Add a percentage complete
+ indicator to the status thing.
+ (camel_filter_driver_filter_mbox): Add percentage complete to
+ reporting.
+ (camel_filter_driver_filter_folder): Same.
+
+2001-01-18 Dan Winship <danw@ximian.com>
+
+ * camel-store.c (camel_folder_info_build): More tweaking... skip
+ separator characters after the namespace character. (Gets rid of
+ the shell folder registration warning some people have had with
+ IMAP)
+
+ * providers/imap/camel-imap-store.c (imap_connect): I'm sure there
+ was some clever reason I was storing the flags of the folder in
+ the hash table rather than just "1", but I don't remember what it
+ was now. Anyway, since we only ever test NULL/non-NULL, store 1,
+ since flags is sometimes 0.
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Oops.
+ Somewhere in one of the reorgs, the code to add new messages to
+ the CamelFolderChangeInfo structure got removed. Fix that.
+
+2001-01-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/imap/camel-imap-summary.c (message_info_load): Add
+ some g_warnings() to help debug later if I ever get the segfaults
+ I was getting earlier. Can't seem to reproduce them after my
+ previous "fix".
+
+ * camel-folder-summary.c (camel_folder_summary_load): Undid my
+ change here, NotZed said it was wrong and that if it gets a NULL
+ mi then it should abort and not continue.
+
+2001-01-17 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.c (camel_folder_summary_load): Make sure
+ that the message-info is non-null before we go accessing inner
+ parts of it and/or adding it to the summary array. I may not have
+ handled the error correctly, but it does seem to work
+ correctly. If NotZed could double-check this it'd be great.
+
+ * providers/smtp/camel-smtp-transport.c (get_smtp_error_string):
+ New smtp error-code to string mapping function.
+ (smtp_connect): Use the new error->string function for reporting
+ useful errors.
+ (smtp_helo): Same. Also use a case-insensitive strstr for 8BITMIME
+ as it seems Exchange sends back lowercase for that one single SMTP
+ extension. Everything else is uppercase. I'm seeing a lack of love
+ for that extension by Microsoft dudes...
+ (smtp_mail): Use get_smtp_error_string.
+ (smtp_rcpt): Same.
+ (smtp_data): Same.
+ (smtp_quit): Same.
+ (smtp_rset): Same.
+
+2001-01-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-folder-summary.c (camel_folder_summary_array): Add an int
+ i so this code will compile. Should I be worried about how well
+ this code will work? ;-)
+
+2001-01-17 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder.c (free_summary): Call
+ camel_folder_summary_array_free() to do the work.
+ (get_summary): Use camel_folder_summary_array() to get the array
+ atomically. These fixes allow folder/test8 to work again, and fix
+ a sort of race where the summary size can change while we were
+ making a copy of it.
+
+ * camel-folder-summary.c (camel_folder_summary_array): Get the
+ summary array atomically, so it can't contain empty records.
+ (camel_folder_summary_array_free): And free it.
+
+ * tests/lib/camel-test.c (die): If we are verbose & in threads,
+ then goto sleep so we can debug.
+
+ * tests/folder/test8.c (worker): Add a missing pull() for
+ comnparing content.
+
+ * camel-filter-search.c: Fix the symbol table, so match-all is an
+ immediate function, as it should be.
+
+ * tests/folder/test9.c (main): New test, tests some filtering
+ things.
+
+ * tests/message/test3.c (main): Dont use a boundary string with
+ spaces in it. Folding can corrupt it. Maybe the folding isn't
+ working entirely right, but anyway.
+
+ * camel-session.c: Debug out the debug.
+
+ * camel-filter-driver.c (camel_filter_driver_filter_folder): Plug
+ a messageinfo leak.
+
+2001-01-16 Dan Winship <danw@ximian.com>
+
+ Delayed loading of IMAP message parts.
+
+ * camel-types.h: typedef CamelMessageInfo and
+ CamelMessageContentInfo here
+
+ * camel-folder-summary.h: Add a "size" field to
+ CamelMessageContentInfo.
+
+ * camel-folder-summary.c (camel_folder_summary_content_info_new,
+ camel_folder_summary_content_info_free): Renamed and made
+ non-static for providers that construct their own content info.
+ (content_info_load, content_info_save): load/save size
+
+ * camel-data-wrapper.c (camel_data_wrapper_is_offline): New
+ function to return if a data wrapper's contents are "offline". (So
+ that, for example, we don't make thumbnails of images that haven't
+ been loaded off the IMAP server yet.) Defaults to FALSE.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
+ Fix a bug in re-selecting a folder when messages have been
+ expunged from it by another client in the meantime.
+ (imap_get_message): Rewrite. If the message is larger than a
+ certain size, just create a skeleton message containing
+ CamelImapWrappers that will read parts as needed. This way, large
+ attachments only need to be downloaded if the user looks at them,
+ and multipart/alternative alternatives that aren't used will never
+ be downloaded at all.
+ (imap_update_summary): Rewrite this a bunch too to make the
+ parsing more robust.
+
+ * providers/imap/camel-imap-summary.c
+ (CAMEL_IMAP_SUMMARY_VERSION): bump.
+ (camel_imap_summary_new): Set build_content to TRUE.
+ (content_info_load, content_info_save): Only save/load the content
+ for messages that have it. (The content info gets created as a
+ side effect of imap_get_message.)
+
+ * providers/imap/camel-imap-utils.c (imap_parse_body): New routine
+ (and helpers) to parse an IMAP 'body' FETCH response and fill in a
+ CamelMessageContentInfo from it.
+
+ * providers/imap/Makefile.am (libcamelimap_la_SOURCES,
+ libcamelimap_la_HEADERS): add camel-imap-wrapper.
+
+2001-01-16 Dan Winship <danw@ximian.com>
+
+ * camel-tcp-stream-raw.c (stream_getsockopt, stream_setsockopt):
+ * camel-stream-fs.c (stream_read, stream_write):
+ * camel-remote-store.c (socket_connect): fcntl(fd, F_GETFL)
+ returns the flags as the return value, not via a passed in
+ pointer. And F_SETFL looks for an int, not a long, and you have to
+ pass it what it's expecting because it's a va_arg parameter. (Yes,
+ the man page lies on Linux. But check the UNIX98 spec or the glibc
+ source.) Also, fix another bug in socket_connect: if we manage to
+ connect right away, unset O_NONBLOCK so it doesn't mess us up
+ later.
+
+ Fixes a bunch of problems with non-blocking I/O being done in the
+ allegedly-blocking case and then returning EWOULDBLOCK.
+
+2001-01-16 Chris Toshok <toshok@ximian.com>
+
+ * providers/Makefile.am (NNTP_DIR): set to nntp if ENABLE_NNTP
+ (SUBDIRS): use $(NNTP_DIR)
+
+2001-01-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_rcpt): Don't check
+ errno as it's not being set. Fixes bug #1150.
+
+2001-01-16 Jeffrey Stedfast <fejj@ximian.com>
+
+ Ugh, this design is ugly like my butt.
+
+ * camel-session.c (camel_session_query_cert_authenticator): New
+ function which will be useful when we integrate SSL.
+
+ * camel-tcp-stream-ssl.c (ssl_auth_cert): Callback to authenticate
+ a certificate.
+ (ssl_bad_cert): Callback that gets the reason the certificate is
+ bad and then calls camel's cert-authenticator callback to notify
+ the user and to allow the user to override the check.
+ (stream_connect): Set the URL we expect to connect with and setup
+ the auth_cert and bad_cert callbacks.
+ (camel_tcp_stream_ssl_new): Now takes a CamelSession and a
+ expected_host argument that it will use for certificate
+ authentication.
+ (camel_tcp_stream_ssl_finalize): Unref the session and free the
+ expected_host.
+
+2001-01-16 Not Zed <NotZed@Ximian.com>
+
+ * camel-filter-search.c (header_exists): Changed to support
+ multiple args (or'd together).
+ (header_contains): Cleaned up to match the search code. Why did
+ fejj change it? I'll never know.
+ (header_matches):
+ (header_starts_with):
+ (header_ends_with): Big cleanup of fejj's "i'm the cut & paste
+ king" code. Also properly handle or'ing of additional args to
+ match what the folder-search code should do.
+ (check_match): New function which does the annoying matching
+ stuff (for header matches).
+ (check_header): Similarly, handles or'ing of the matches together.
+ (header_contains):
+ (header_matches):
+ (header_starts_with):
+ (header_ends_with): Call check_header to do the actual work.
+ (header_soundex): And here too.
+ (match_all): Yeah like match-all isn't passed expression results,
+ its passed expression terms. Fix this so match-all works like it
+ should, by executing the contained expression.
+ (message_body_contains): Copied directly from
+ camel-folder-search.c, a more robust/faster/simpler body search
+ code.
+ (mime_part_matches): Removed entirely.
+ (handle_multipart): Removed entirely.
+ (build_match_regex): Copied from camel-folder-search. Builds a
+ set of simple strings into a regex pattern that matches any of
+ them (for faster & simpler matching). Expanded to accept regex
+ patterns itself, so it can merge them together.
+ (body_contains): Use build match/match message to match using a
+ built regex.
+ (body_regex): Likewise, this time we tell it we're building a
+ regex though.
+ (header_full_regex): Use build_match_regex to take the drudgery
+ out of it, and expand it to handle multiple regex's at once.
+ (get_full_header): slightly cleaner (well i dunno, the sprintf
+ stuff just got to me).
+ (header_regex): Cleaned up to use build_match_Regex too, and to
+ properly check types.
+ (filter_message_search): Just allocate 'fms' on the stack.
+
+ * camel-filter-driver.c (camel_filter_driver_finalise):
+ (camel_filter_driver_init):
+ (camel_filter_driver_class_init):
+ (camel_filter_driver_get_type): Changed from gtk object to camel
+ object.
+ (camel_filter_driver_add_rule): New function to add a rule to be
+ processed in sexp form.
+ (camel_filter_driver_init): Init the rules list.
+ (camel_filter_driver_finalise): Clear the rules/rules list.
+ (camel_filter_driver_filter_message): Scan rules list directly
+ rather than creating on the fly.
+
+ * Makefile.am (libcamelinclude_HEADERS): Added camel-filter-driver.h
+ (libcamel_la_SOURCES): Added camel-filter-driver.c, code taken
+ from filter-driver, which can drive, uh, filters based on sexp's.
+ (libcamelinclude_HEADERS):
+ (libcamel_la_SOURCES): Added camel-filter-search.[ch]
+
+ * camel-folder-summary.c (camel_folder_summary_decode_string):
+ Chganged len back to be unsigned. And do a simple range check on
+ the string value to try and detect corrupted summary files.
+
+ * providers/imap/camel-imap-command.c (imap_read_untagged): Handle
+ cancelled stream reads with an appropriate exception.
+
+ * providers/imap/camel-imap-private.h: Fix the include-once
+ macro. Doh, confliced with camel-private.h.
+
+ * providers/imap/camel-imap-store.c (imap_store_refresh_folders):
+ A copy of camel_remote_store_refresh_folders. We avoid locking
+ each folder when we call it though. This should be removed when i
+ can work out how to remove the folder lock from this function
+ easily.
+
+ * camel-stream-fs.c (stream_write): Fix n' argument of select.
+ (stream_read): Likewise.
+
+ * camel-remote-store.c (socket_connect): Bump the connect timeout
+ upto 4 minutes.
+ (socket_connect): Oops, fix the 'n' argument of select.
+
+ * camel-session.c (camel_cancel_cancel): If we are given no
+ cancellation node, then do it for all active ones.
+
+2001-01-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-stream-fs.c (stream_close): If the close() is successful,
+ set the fd to -1.
+
+ * camel-tcp-stream-raw.c: Removed the disconnect() method.
+ (stream_close): If the close() is successful, set the sockfd to
+ -1.
+
+ * camel-tcp-stream-ssl.c: Removed the disconnect() method.
+ (stream_close): If the close() is successful, set the sockfd to
+ NULL.
+
+ * camel-tcp-stream.c (camel_tcp_stream_disconnect): Removed,
+ easier to just use the close() method as it did the same thing
+ anyway.
+
+2001-01-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-raw.c (stream_getsockopt): Updated to be able
+ to get the CAMEL_SOCKOPT_NONBLOCKING socket opt.
+ (stream_setsockopt): Updated to be able to set the
+ CAMEL_SOCKOPT_NONBLOCKING socket opt.
+
+2001-01-15 Peter Williams <peterw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Lock
+ around the imap_rescan, which needs it.
+
+2001-01-15 Not Zed <NotZed@Ximian.com>
+
+ * camel-remote-store.c (socket_connect): A cancellable connection
+ routine.
+ (remote_send_string): Return cancelled exception if we were.
+ (remote_send_stream): "
+ (remote_recv_line): "
+
+ * camel-stream-fs.c (stream_read): First cut at cancellation
+ stuff. Its looking a bit ugly.
+
+2001-01-15 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (stream_connect): Uses an SSL socket now
+ although there's still a few things missing (like certificate
+ handling and such).
+
+ * camel.c (camel_ssl_init): A replacement function for
+ camel_init() that also initializes SSL.
+
+2001-01-14 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream-ssl.c (stream_getsockopt): Implemented.
+ (stream_setsockopt): Implemented.
+
+ * camel-tcp-stream-raw.c (stream_getsockopt): Implemented.
+ (stream_setsockopt): Implemented.
+
+ * camel-tcp-stream.c (camel_tcp_stream_getsockopt): New method.
+ (camel_tcp_stream_setsockopt): Another new method. I think you get
+ the idea of what these are for so I won't explain them.
+
+2001-01-14 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-tcp-stream-ssl.[c,h]: New CamelTcpStream class that
+ implements nspr sockets and eventually will use nss for
+ SSL/TLS. Currently doesn't do any SSL/TLS but it should still
+ work. It's functionally equivalent to CamelTcpStreamRaw at the
+ moment only it uses nspr i/o.
+
+ * camel-tcp-stream-raw.[c,h]: New CamelTcpStream class that
+ implements native sockets. Should be usable but may have some bugs
+ yet.
+
+2001-01-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-tcp-stream.[c,h]: New abstract class for TCP streams. The
+ next step is to write child classes (CamelTcpStreamBSD and
+ CamelTcpStreamSSL). The BSD stream will use normal BSD sockets
+ while SSL will use Mozilla's NSPR and NSS libraries to do Secure
+ Socket Layers which wille ventually replace CamelStreamSSL which I
+ just commit'd. Oh well.
+
+2001-01-13 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-stream-ssl.[c,h]: New stream for handling SSL/TLS
+ connections.
+
+2001-01-12 Not Zed <NotZed@Ximian.com>
+
+ * camel-folder-thread.c (camel_folder_thread_messages_new):
+ Perform a final pass, removing any pseudo nodes we added earlier.
+ Quick patch to test the idea.
+ (camel_folder_thread_messages_new): Added casts to rmeove some
+ warnings for the analites out there.
+
+2001-01-11 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
+ Fix a bug in previous commit: don't check for deleted messages if
+ there are no known messages in the folder (because it would end up
+ sending "FETCH 0 ...").
+ (imap_copy_message_to): Fix this up: sync flags to the server
+ before copying so that they end up correct in the remote folder.
+ And poke the destination folder after doing the copy so it notices
+ the new message right away.
+ (imap_move_message_to): Call imap_copy_message_to for most of the
+ work rather than duplicating the code (since it's much more
+ complicated now).
+
+2001-01-11 Dan Winship <danw@ximian.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
+ New function to check for added/deleted messages when re-selecting
+ a folder.
+ (imap_refresh_info, imap_rescan, imap_update_summary): Various
+ locking tweaks that turn out to be irrelevant since command_lock
+ is recursive, but whatever.
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): When
+ selecting a new folder, call camel_imap_folder_selected on it.
+
+ * camel-folder.c (camel_folder_copy_message_to): Fix a locking
+ problem. (One branch of an if statement was returning with the
+ lock still locked.) Also remove the deprecation comments, to match
+ move_message_to.
+
+2001-01-10 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/local/camel-local-provider.c: Changed the descriptions
+ for mh, mbox, and maildir to be more "user-friendly".
+
+2001-01-10 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-types.h: New header to prevent
+ recursive #include problems
+
+ * providers/imap/*.h: Replace some #includes with #include
+ "camel-imap-types.h", remove typedefs that were moved to
+ camel-imap-types.h
+
+ * providers/imap/*.c: Add #includes to make up for #includes
+ removed from .h files
+
+ * providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Add
+ camel-imap-types.h
+
+2001-01-10 Dan Winship <danw@helixcode.com>
+
+ * camel-store.c (camel_store_sync): New class function, parallel
+ to camel_folder_sync. (The default implementation just calls
+ camel_folder_sync on each cached folder.)
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Call
+ camel_store_sync before doing anything else so that the IMAP
+ server and Camel are working from the same data. Don't ask the
+ server for the unread message count of the current folder, since
+ UW will return often-incorrect cached data, and we can calculate
+ it without talking to the server anyway.
+
+2001-01-09 Dan Winship <danw@helixcode.com>
+
+ Mostly IMAP changes. Use the NAMESPACE extension (where
+ available). Deal with servers that don't return LIST flags in
+ response to LSUB (like UW) to get rid of the "not a selectable
+ folder" error messages in the UI. Take advantage of the \Marked
+ and \Unmarked flags to try to speed up the folder scan by not
+ doing STATUS on unmarked folders. Some further tweaks on the shape
+ of the resulting folder tree in various situations...
+
+ * camel-store.h: Remove the (read) message_count, since nothing
+ uses it, and we can speed up IMAP a bit this way.
+
+ * camel-store.c (camel_folder_info_build): Redo this a bit to make
+ it more useful for IMAP since that's the only thing that uses it.
+
+ * camel-remote-store.c (camel_remote_store_connected): Public
+ function to check if the store is connected, and try to connect it
+ if it's not.
+ (remote_send_string, remote_send_stream, remote_recv_line): Use
+ that.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_finalize):
+ fix up for changes.
+ (camel_imap_store_init): Initialize subscribed_folders to NULL
+ rather than an empty hash table.
+ (imap_connect): Get the list of subscribed folders here. If the
+ server doesn't claim that any of them are either Marked or
+ Unmarked, then assume that it doesn't do that for LSUB and
+ remember that for later. If the server supports the NAMESPACE
+ extension and the user didn't specify a namespace, use the
+ server-provided one.
+ (imap_disconnect): Free the list of subscribed folders, and the
+ namespace.
+ (get_folder): check camel_remote_store_connected
+ (get_folder_info): check camel_remote_store_connected. Add a bunch
+ of new cleverness. If we learned that the server doesn't do LSUB
+ usefully, do a bunch of LISTs by hand. Then, if we're getting
+ unread counts, only do it for folders that weren't listed as
+ Unmarked. Also, deal with namespaces that end with the separator
+ character, and update for changes to camel_folder_info_build.
+ (folder_subscribed): Add a g_return_val_if_fail.
+ (subscribe_folder, unsubscribe_folder): check
+ camel_remote_store_connected.
+
+ * providers/nntp/camel-nntp-store.c (build_folder_info,
+ build_folder_info_from_grouplist, nntp_store_get_folder_info):
+ Don't fill in message_count since it doesn't exist any more.
+
+2001-01-09 Dan Winship <danw@helixcode.com>
+
+ Kill off a long-hated Camel kludge: "empty" URLs and
+ query_auth_types_generic.
+
+ * camel-url.c: Remove "empty" from CamelURL.
+ (camel_url_new): No longer set it.
+ (camel_url_to_string): Treat "" as equivalent to NULL for
+ authmech. (Unrelated change, but it simplifies some stuff with the
+ new config dialog.)
+
+ * camel-service.c (camel_service_new): Remove url->empty check: if
+ the URL isn't valid, we don't create the service.
+ (camel_service_query_auth_types): No longer need to switch between
+ generic and connected variants.
+
+ * providers/smtp/camel-smtp-transport.c (query_auth_types):
+ * providers/pop3/camel-pop3-store.c (query_auth_types):
+ * providers/nntp/camel-nntp-store.c (nntp_store_query_auth_types):
+ * providers/imap/camel-imap-store.c (query_auth_types):
+ * camel-remote-store.c (remote_query_auth_types): Remove generic
+ version, rename connected version.
+
+2001-01-06 Not Zed <NotZed@HelixCode.com>
+
+ * providers/vee/camel-vee-folder.c (vee_folder_build_folder): Dont
+ try and unref a messageinfo that wasn't there, and use the right
+ free function too. Modified patch from Iain.
+ (vee_move_message_to): New method, call the real folders'
+ move_message_to method.
+
+2001-01-04 JP Rosevear <jpr@helixcode.com>
+
+ * tests/lib/Makefile.am: fix includes for compilation
+
+ * tests/message/Makefile.am: Build test3 again
+
+ * tests/message/test2.c: Kill warnings with header includes
+
+ * tests/message/test3.c: ditto
+
+ * tests/lib/streams.c: ditto
+
+ * tests/lib/camel-test.c: ditto
+
+ * tests/lib/messages.c: ditto
+
+ * tests/lib/folders.c: ditto
+
+2001-01-04 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_rescan): Fix two
+ problems in figuring out server-expunged messages.
+
+2001-01-04 Not Zed <NotZed@HelixCode.com>
+
+ * camel-folder.c (thaw): If we have a lot of messages changed,
+ promote it to a folder changed event.
+
+2000-01-03 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-folder-search.c (search_header_matches): Implemented.
+ (search_header_exists): Implemented.
+ (search_header_starts_with): Implemented.
+ (search_header_ends_with): Implemented.
+
+2001-01-03 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
+ Initialize the exists variable so that we don't do random things
+ if the imap server misbehaves.
+
+2000-12-29 Not Zed <NotZed@HelixCode.com>
+
+ * camel-folder.c (camel_folder_move_message_to): REmove warning,
+ this isn't really deprecated, sigh.
+
+ * camel-mime-utils.c (header_fold): Comment out some debug.
+
+2001-01-02 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/maildir/, providers/mbox/, providers/mh/: Removed
+ these directories since they're unused.
+
+2001-01-02 Dan Winship <danw@helixcode.com>
+
+ IMAP randomness.
+
+ * providers/imap/camel-imap-stream.[ch]: Remove. To be replaced.
+
+ * providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Remove
+ camel-imap-stream.h
+
+ * providers/imap/camel-imap-utils.c (imap_parse_flag_list): Take a
+ char ** instead of char *, to return the position at the end of
+ parsing like the string parsing functions.
+ (imap_parse_string_generic): New function to parse a string,
+ nstring, or astring.
+ (imap_parse_nstring, imap_parse_astring): Now macros
+ (imap_parse_string): Added
+
+ * providers/imap/camel-imap-folder.h: Remove the "exists" field
+ from CamelImapFolder.
+
+ * providers/imap/camel-imap-folder.c: Remove unused include of
+ camel-imap-stream.h.
+ (camel_imap_folder_init): Remove no-longer-relevant summary
+ initialization.
+ (camel_imap_folder_new): Update for imap_parse_flag_list change,
+ exists removal, and imap_rescan.
+ (imap_rescan): New function that does most of the work of the old
+ imap_refresh_info, but taking "exists" as an argument instead of
+ getting it from the folder. Also calls camel_imap_folder_changed
+ to do the summary updating and signalling, rather than duplicating
+ that code.
+ (imap_refresh_info): Just call imap_rescan (using the size of the
+ folder summary as "exists").
+ (imap_update_summary): Update for imap_parse_flag_list change
+ (camel_imap_folder_changed): Update for "exists" change.
+
+2001-01-02 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c (header_content_type_simple): New function to
+ return just foo/bar with no parameters.
+
+ * camel-data-wrapper.c (get_mime_type): Use
+ header_content_type_simple rather than header_content_type_format.
+
+2000-12-28 Dan Winship <danw@helixcode.com>
+
+ * gmime-content-field.[ch]: Remove this. It was only a thin
+ wrapper around struct _header_content_type anyway, and didn't
+ match the naming scheme of anything else.
+
+ * Makefile.am: Remove gmime-content-field.[ch]
+
+ * camel.h: Remove gmime-content-field.h
+
+ * camel-types.h: Add CamelContentType as a typedef for struct
+ _header_content_type (especially for use outside of camel).
+
+ * camel-multipart.c:
+ * camel-mime-part.c:
+ * camel-mime-message.c:
+ * camel-folder-summary.c:
+ * camel-folder-search.c:
+ * camel-data-wrapper.[ch]: Use CamelContentType and
+ header_content_type_* functions rather than the GMime stuff.
+
+ * camel-mime-part-utils.c:
+ * camel-medium.c: Remove unused gmime-content-field.h include.
+
+2000-12-27 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (connect_to_server): Fix the
+ APOP check to not crash on servers that don't return any
+ information on the +OK greeting line.
+
+2000-12-24 Not Zed <NotZed@HelixCode.com>
+
+ * providers/imap/camel-imap-search.c (imap_body_contains): Lock
+ the command channel while searching.
+ (imap_body_contains): If performing a whole uid search, then add
+ references to our own summary items, dont look it up in the
+ folder. This way they can't vanish unexpectedly.
+
+ * providers/imap/camel-imap-folder.h (CamelImapFolder): Added a
+ private field.
+ (CamelImapFolder): Removed summary again from here.
+
+ * providers/imap/camel-imap-private.h: Added lock for imap
+ searches.
+
+ * Merge from camel-mt-branch.
+
+ * providers/imap/camel-imap-folder.c (imap_update_summary): Merge
+ fix, use the folder->summary.
+ (imap_get_message_flags, imap_set_message_flags,
+ imap_get_message_user_flag, imap_set_message_user_flag): Removed
+ again.
+ (camel_imap_folder_init): Setup private data/lock.
+ (imap_finalize): Free private data/search lock.
+ (imap_search_free): Lock the search_lock.
+ (imap_search_by_expression): Lock the search lock when using the
+ search object. Also copy/ref hte summary, rather than getting it
+ directly.
+ (imap_refresh_info): Free any info lookups. Use folder->summary
+ not imap_folder->summary. And lock around commands.
+ (camel_imap_folder_changed): Use folder->summary again.
+ (camel_imap_folder_changed): Make sure we unref the summary lookup.
+
+2000-12-22 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info): When
+ getting the top-level folder list, include INBOX even if it's not
+ subscribed. Don't show subscribed folders outside of the given
+ namespace. Do a better job of pruning the namespace from the
+ returned folder tree.
+
+2000-12-21 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-search.c: New CamelFolderSearch
+ subclass that just reimplements body_contains (using the IMAP
+ SEARCH command). All other kinds of searching are done against the
+ local summary.
+
+ * providers/imap/camel-imap-folder.c (imap_search_by_expression):
+ Use a CamelImapSearch to do searching.
+
+ * providers/imap/camel-imap-utils.c (imap_translate_sexp, etc): No
+ longer needed.
+
+ * camel-folder-search.h: Add missing CAMEL_FOLDER_SEARCH_TYPE
+ #define
+
+2000-12-21 Dan Winship <danw@helixcode.com>
+
+ * camel-stream-buffer.c (camel_stream_buffer_gets): Update the
+ doc comment: since it always NUL-terminates the buffer, it reads
+ at most @max-1 bytes, not @max.
+
+ * camel-remote-store.c (remote_recv_line): Fix the "did
+ camel_stream_buffer_gets fill the whole buffer" check. Fixes a bug
+ when reading lines longer than 1024 characters (eg, IMAP SEARCH
+ responses in very large folders).
+
+2000-12-19 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_refresh_info): Oops.
+ Don't do "FETCH 1:0" when the folder is empty.
+ (imap_protocol_get_summary_specifier): Request RFC822.SIZE too.
+ (imap_update_summary): Parse RFC822.SIZE and add it to the
+ summary.
+
+2000-12-18 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-summary.c: Add "guint32 server_flags"
+ to CamelImapMessageInfo to keep track of the last known message
+ flag state on the server.
+ (message_info_save, message_info_load): Save/load the
+ server_flags.
+
+ * providers/imap/camel-imap-folder.c: Make this use
+ CamelFolderChangeInfo and emit folder_changed notifications as it
+ gets them rather than only on refresh_info.
+ (imap_refresh_info): Notice flags that get cleared on the server
+ as well as flags that get set.
+ (imap_update_summary): Remove a comment that never actually
+ applied to the committed code.
+
+2000-12-15 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): Change
+ the semantics of fmt: Now %S (capital S) means an IMAP "string",
+ (which can be sent as either a quoted string or a literal). If
+ the server supports LITERAL+, these will be sent as extended
+ literals (which don't require any special escaping). Otherwise
+ they'll be sent as quoted strings (and it now properly deals with
+ " or \ in the string).
+ (imap_command_strdup_vprintf): Utility routine that does the real
+ work for the functionality mentioned above.
+
+ * providers/imap/camel-imap-utils.c (imap_quote_string): Turns a
+ string into a proper IMAP "quoted string".
+
+ * providers/imap/camel-imap-store.c:
+ * providers/imap/camel-imap-folder.c: Use %S instead of "%s" where
+ appropriate.
+
+2000-12-22 Not Zed <NotZed@HelixCode.com>
+
+ * camel-folder-summary.c (GLOBAL_INFO_UNLOCK): Doh, cut and paste
+ victim again, call unlock instead of lock!
+ (summary_assign_uid): Unlock around trying to get a new uid, if we
+ have a clash.
+
+2000-12-21 Not Zed <NotZed@HelixCode.com>
+
+ * tests/folder/Makefile.am (TESTS): reenabled the tests here.
+
+ * providers/nntp/camel-nntp-newsrc.c (CamelNNTPNewsrc): Add a
+ lock. Made completely mt-safe. Sigh, this is all so i can
+ support snooping of the set_flags stuff inside camel-nntp-folder,
+ since i've removed the global folder lock from all of the other
+ folder summary operations.
+ (camel_nntp_newsrc_read_for_server): Setup lock.
+ (camel_nntp_newsrc_get_highest_article_read): Lock internal access.
+ (camel_nntp_newsrc_get_num_articles_read):
+ (camel_nntp_newsrc_mark_article_read):
+ (camel_nntp_newsrc_mark_range_read):
+ (camel_nntp_newsrc_article_is_read):
+ (camel_nntp_newsrc_group_is_subscribed):
+ (camel_nntp_newsrc_unsubscribe_group):
+ (camel_nntp_newsrc_subscribe_group):
+ (camel_nntp_newsrc_get_subscribed_group_names):
+ (camel_nntp_newsrc_get_all_group_names): "
+ (camel_nntp_newsrc_write_to_file): Lock internal accesses.
+ (camel_nntp_newsrc_write): Lock around diry stuff.
+
+ * providers/local/camel-maildir-summary.c (maildir_summary_check):
+ Lock around our internal poking of the summary hashtable/array.
+ (maildir_summary_sync): And the same here too.
+
+ * camel-folder-summary.c: Moved the summaryprivate data into
+ camel-private.h. Only needed for the locks really.
+ (camel_folder_summary_init): Setup locks.
+ (camel_folder_summary_set_filename): Lock.
+ (camel_folder_summary_index): lock
+ (camel_folder_summary_uid): Lock
+ (camel_folder_summary_next_uid): "
+ (camel_folder_summary_set_uid): "
+ (camel_folder_summary_load): Lock around whole load. Hrm,
+ probably not required.
+ (camel_folder_summary_save): Lock around whole save, this is
+ reqwuired, unless we ref/copy the whole list first, and i couldn't
+ be bothreed.
+ (camel_folder_summary_add): lock
+ (summary_assign_uid): Lock around internal accesses.
+ (camel_folder_summary_info_new_from_parser): Lock around filtr stuff.
+ (camel_folder_summary_info_ref): Add locking. Could probably use
+ its own lock?
+ (camel_folder_summary_touch): Add locking, likewise.
+ (camel_folder_summary_clear): Lock. If the preiovus two are
+ changed, then so this will need mroe locking.
+ (camel_folder_summary_info_free): Lock around refcounting.
+ (camel_folder_summary_remove): Locking.
+ (camel_folder_summary_remove_uid): Lock ref, unlock, unref. Also
+ fixed a bug that would have made this never work, freeing the key,
+ which isn't allocated.
+ (camel_folder_summary_remove_index): lock, ref, unlock unref also.
+ (camel_message_info_ref): Lock using a separate global lock, since
+ we have no context here.
+ (camel_message_info_free): Here too.
+ (content_info_alloc): Use an alocation lock here. avoids races
+ with setting up content_info_chunks, etc.
+ (camel_folder_summary_info_new): And here too.
+ (camel_folder_summary_load): Changed to use a differnet lock for
+ loading/saving.
+ (camel_folder_summary_init): Doh, i do need a reflock afterall,
+ set one up.
+ (camel_folder_summary_finalize): Free it.
+ (camel_folder_summary_index): Add a reflock.
+ (camel_folder_summary_uid): And here too.
+ (camel_folder_summary_info_free): Use reflock instead of
+ summary_lock.
+ (camel_folder_summary_info_ref): Likewise.
+ (camel_folder_summary_remove_uid): Add reflocking.
+ (camel_folder_summary_remove_index): And here too.
+
+ * providers/vee/camel-vee-folder.c (camel_vee_folder_new): Setup a
+ summary object.
+ (vee_folder_build): Build each item into the real summary object.
+ (vee_folder_add, vee_folder_add_uid, vee_folder_add_change): New
+ functions to add a single record to the vfolder summary.
+ (vee_folder_build_folder): Use a real summary.
+ (vee_get_uids): Removed, use default impl.
+ (vee_free_message_info): "
+ (vee_get_message_info): "
+ (vee_get_summary): "
+ (vee_get_unread_message_count): "
+ (vee_get_message_count): "
+ (vee_sync): Make vee-folder-sync sync all subordinate folders.
+ Well i dont think this is right, but enough peopl ehave aksed for
+ it.
+ (vee_expunge): Same for expunge.
+ (vee_set_message_flags): Call parent class, then mirror flags to
+ subfolder.
+ (vee_get_message_user_flag): Removed, we just use the default
+ impl, and our flags should always match.
+ (vee_set_message_user_flag): Snoop the set and set on subfolder.
+ (vee_get_message_flags): Removed, jsut use parent impl, assume our
+ copy matches the real ones.
+ (get_real_message): Removed. We sort ofneed to keep the
+ summaryitem refed while we use it, so this doesn't make as much
+ sense as it did once.
+ (camel_vee_folder_finalise): Unhook listening events as we unref
+ folders.
+ (camel_vee_folder_new): Set the summary messageinfo data size
+ properly.
+ (vfolder_remove_match): Fixed for summary change.
+ (folder_changed): ditto. Also stopped changed items from being
+ re-searched and possibly removed. Might have to resort to the old
+ whole-search idea again.
+ (message_changed): Similarly. Might be easier just not to bother
+ with a whole search.
+
+ * providers/vee/camel-vee-folder.h: Removes summary
+ hashtable/array, and use a real summary object. Sigh, more work.
+
+ * providers/nntp/camel-nntp-folder.c (nntp_folder_sync): Move
+ summary to folder object.
+ (nntp_folder_get_message_count): Removed, use default impl.
+ (nntp_folder_set_message_flags): Call parent impl to do the work,
+ but snoop for newsrc.
+ (nntp_folder_get_uids): Removed, use default impl.
+ (nntp_folder_get_summary): "
+ (nntp_folder_get_message_info): "
+ (nntp_folder_free_message_info): "
+ (camel_nntp_folder_new): moved summary to folder class
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_init):
+ Move summary to folder object.
+ (camel_imap_folder_new): "
+ (imap_finalize): No longer unref the summary (or infact, do
+ anything else either).
+ (imap_refresh_info): move summary to folder object.
+ (imap_sync): "
+ (imap_get_message_count): Removed, use default impl.
+ (imap_get_unread_message_count): "
+ (imap_get_uids): "
+ (imap_get_summary): "
+ (imap_free_summary): "
+ (imap_get_message_info): "
+ (imap_free_message_info): "
+ (imap_get_message_flags): "
+ (imap_set_message_flags): "
+ (imap_get_message_user_flag): ", this changes functionality, but
+ only by providing non-permanent flags.
+ (imap_set_message_user_flag): "
+ (imap_update_summary): move summary to folder object, and use
+ camel_folder_summary_info_new_from_header, instead of calling the
+ virtual function directly.
+
+ * providers/local/camel-maildir-folder.c (maildir_append_message):
+ move summary to folder object, again.
+ (maildir_get_message): "
+
+ * providers/local/camel-mh-folder.c (mh_append_message): move
+ summary to folder object.
+ (mh_get_message): "
+
+ * providers/local/camel-mbox-folder.c (mbox_append_message): Move
+ summary to folder object
+ (mbox_get_message): "
+ (mbox_set_message_user_flag): We need our own copy of this, sigh,
+ so we can track if the xev needs a rewrite (probably, its only a
+ guide anyway).
+ (mbox_set_message_user_tag): Same same with this one.
+ (camel_mbox_folder_class_init): Link in these new virtual functions.
+
+ * providers/local/camel-local-folder.h (CamelLocalFolder): removed
+ summary.
+
+ * providers/local/camel-local-folder.c (local_get_message_count):
+ (local_get_unread_message_count):
+ (local_get_uids):
+ (local_get_summary):
+ (local_free_summary):
+ (local_get_message_info):
+ (local_free_message_info):
+ (local_get_message_flags):
+ (local_set_message_flags):
+ (local_get_message_user_flag):
+ (local_set_message_user_flag):
+ (local_get_message_user_tag):
+ (local_set_message_user_tag): Removed, all now use default
+ implementation.
+ (camel_local_folder_class_init): Removed overrides.
+ (local_init): Clear folder->summary.
+ (local_finalize): move summary to folder.
+ (camel_local_folder_construct): "
+ (local_sync): "
+
+ * camel-folder.c (free_summary): Provide a real impl.
+ (get_summary): "
+ (free_uids): "
+ (get_uids): "
+ (free_message_info): "
+ (get_message_info): "
+ (set_message_user_tag): "
+ (get_message_user_tag): "
+ (set_message_user_flag): "
+ (get_message_user_flag): " Sigh, the last so far.
+ (get_message_flags): Sigh, 1 more afterall.
+ (get_unread_message_count): And and this.
+ (get_message_count): and this!
+ (set_message_flags): Sigh, and this.
+ (camel_folder_finalize): Unref the summary if we have it.
+ (camel_folder_free_uids): Remove locking.
+ (camel_folder_get_message_flags): Remove locks, since the summary
+ is now mt-safe.
+ (camel_folder_set_message_flags): "
+ (camel_folder_get_message_user_flag): "
+ (camel_folder_set_message_user_flag): "
+ (camel_folder_get_message_user_tag): "
+ (camel_folder_set_message_user_tag): "
+ (camel_folder_get_message_info): "
+ (camel_folder_free_message_info): "
+ (camel_folder_get_uids): "
+ (camel_folder_free_summary): "
+ (camel_folder_get_unread_message_count): "
+ (get_unread_message_count): Check we got info, no big deal, but
+ the summary might change while we're counting, and upset the count
+ slightly.
+ (camel_folder_get_message_count): Remove locks.
+
+ * camel-folder.h (struct _CamelFolder): Added CamelFolderSummary
+ to the base folder object. Sigh, this is going to be a lot of
+ work ...
+
+ * camel-service.c (camel_service_init, finalise): changed
+ connect_lock to be recursive e_mutex.
+
+ * camel-remote-store.c (camel_remote_store_init, finalise): Changed
+ stream_lock to recursive e_mutex.
+
+ * camel-private.h (RemoteStorePrivate, ServicePrivate): Use
+ recursive mutexes for connect_lock & stream_lock. Ick. Because
+ of the imap code.
+
+ * providers/imap/camel-imap-private.h: Change the command_lock to
+ be an EMutex.
+
+ * providers/imap/camel-imap-store.c (connect_to_server): Removed
+ the command_lock stuff. If we are just connected again, it should
+ be safe to assume we have exclusive access at this point without
+ it (and yes, removes a deadlock).
+ (imap_create): Remove a lock that wasn't even supposed to be
+ there.
+ (camel_imap_store_finalize, init): g_mutex->e_mutex(E_MUTEX_REC).
+ Use a recursive mutex since the imap code is multiply recursivly
+ calling some functions (sigh, it would be nice to fix this).
+
+2000-12-20 Not Zed <NotZed@HelixCode.com>
+
+ * camel-folder.c (folder_changed): Change the locks to inside the
+ if. Stops a deadloc,k and we dont need a lock to read a value.
+ (message_changed): Likewise.
+
+ * camel.c (camel_init): Blah, comment out g_thread_init, leave it
+ to the caller, since it can only ever be done once.
+
+ * camel-folder-thread.c (camel_folder_thread_messages_new): Ref
+ and save the folder in the thread return. Also get the summary
+ once, and access that for the messageinfo's. Added bonus that now
+ threads should come out in a similar order. We need to do this so
+ that the messageinfo's dont get unref'd under us, and using the
+ summary directly simplifies memory management.
+ (camel_folder_thread_messages_destroy): Free the summary/unref the
+ folder.
+
+ * camel-folder-thread.h: Add a folder to CamelFolderThread struct.
+
+2000-12-19 Not Zed <NotZed@HelixCode.com>
+
+ * providers/imap/camel-imap-utils.c (imap_translate_sexp): Unref
+ using e_sexp_unref, since it is no longer an object.
+
+ * tests/lib/camel-test.c: Added a global lock, and made it
+ thread-aware.
+
+ * camel-exception.c: Add a global lock. Not sure its really
+ needed here, but it doesn't really hurt.
+ (camel_exception_clear): Lock around access.
+ (camel_exception_set): Same.
+ (camel_exception_setv): "
+ (camel_exception_xfer): "
+
+ * providers/local/Makefile.am (noinst_HEADERS): Added, for
+ camel-local-private.h
+
+ * camel-folder.c (camel_folder_search_by_expression): Removed
+ locking here, now upto the implementing class to lock.
+ (camel_folder_search_free): Removed the folder lock here too, for
+ consistency really, and the locking probably wasn't needed.
+
+ * providers/local/camel-local-folder.c (local_get_summary):
+ Changed to copy/ref the summary items.
+ (local_free_summary): Unref the summary items/free the array.
+ (local_get_unread_message_count): Free info lookups.
+ (local_search_by_expression): Perform more fine-grained locking,
+ and dont lock the whole folder while searching, just the search
+ object. Dum de dum, it *would* be possible to not even have to
+ lock the search, by using our own copy of the search object each
+ time. Could be investigated.
+ (local_init): Init priaate data/lock.
+ (local_finalize): Free private data/lock.
+ (local_search_free): Also lock around the search object, because
+ it accesses global data inside.
+
+ * README.mt: Some info about the mt code development.
+
+ * camel-folder-search.c (match_message): Put in a warning, this
+ plain deadlocks so far, but i'm going to bed now.
+ (camel_folder_search_finalize): Use e_sexp_unref() since its no
+ longer an object.
+
+ * camel-session.c (camel_session_init): Init private data/lock.
+ (camel_session_finalise): Free private data/lock.
+ (camel_session_register_provider): Lock hash insert.
+ (service_cache_remove): Lock.
+ (camel_session_list_providers): "
+ (camel_session_get_service): Lock the whole function.
+
+ * camel-session.h (struct _CamelSession): Added private data.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_init): Setup
+ private data.
+ (camel_imap_store_finalize): Free private data.
+ (connect_to_server): Lock around command calls. I dont think its
+ needed, but it shouldn't hurt either.
+ (imap_connect): Lock around command calls. Again, I don think it
+ is needed, but wont hurt.
+ (imap_disconnect): ditto for this one.
+ (imap_create): Lock around command.
+ (get_folder): "
+ (get_folder_info): "
+ (subscribe_folder): "
+ (unsubscribe_folder): "
+ (imap_keepalive): "
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Lock
+ around calling a command.
+ (imap_refresh_info): Likewise.
+ (imap_sync): "
+ (imap_append_message): "
+ (imap_copy_message_to): "
+ (imap_move_message_to): "
+ (imap_get_message): "
+ (imap_update_summary): "
+ (imap_search_by_expression): ", also minor logic cleanup.
+ (imap_get_summary): Copy/ref the summary items.
+ (imap_free_summary): And free it now too.
+
+ * providers/imap/camel-imap-auth.c (imap_try_kerberos_v4_auth):
+ Lock the command stream for the command session.
+
+ * providers/imap/camel-imap-private.h: Private (locking info)
+ stuff for imap provider.
+ (CAMEL_IMAP_STORE_UNLOCK): Fix to call unlock, rather than lock!
+
+ * camel-service.c (camel_service_query_auth_types): Lock also for
+ the connection here, incase the service needs to connect.
+
+ * camel-remote-store.c (camel_remote_store_init): Init private
+ data/lock.
+ (camel_remote_store_finalise): Readded, free private data/lock.
+ (remote_send_stream): Changed to return the number of bytes
+ written, like a good little stream function should.
+ (camel_remote_store_send_string): Lock for stream access.
+ (camel_remote_store_send_stream): Same here.
+ (camel_remote_store_recv_line): And here.
+ (camel_remote_store_refresh_folders): Lock the store for cache
+ access.
+ (timeout_cb): Lock for stream access.
+
+2000-12-18 Not Zed <NotZed@HelixCode.com>
+
+ * camel-service.c (camel_service_init): Init private data.
+ (camel_service_finalise): Free private data.
+ (camel_service_connect): Lock around connection access.
+ (camel_service_disconnect): "
+
+ * camel-service.h (struct _CamelService): Added private field.
+
+ * camel-store.c (camel_store_init): Init private data/lock.
+ (camel_store_finalize): Free private data/lock.
+ (camel_store_get_folder): Lock internal calls.
+ (camel_store_delete_folder): "
+ (camel_store_rename_folder): "
+ (camel_store_get_root_folder): "
+ (camel_store_get_default_folder): "
+ (camel_store_get_folder_info): "
+ (camel_store_folder_subscribed): "
+ (camel_store_subscribe_folder): "
+ (camel_store_unsubscribe_folder): "
+ (lookup_folder): Lock accesses to the folder cache.
+ (cache_folder): "
+ (uncache_folder): And here too.
+
+ * camel-store.h (struct _CamelStore): Added a private field.
+
+ * Makefile.am (noinst_HEADERS): Add camel-private.h. There is a
+ comment in that header as to why it ins't installed.
+
+ * camel-private.h: New header for private data, that subclasses
+ can get to.
+
+ * tests/lib/camel-test.c (camel_test_init): If we do have threads
+ enabled already, dont call g_thread_init().
+
+ * tests/lib/folders.c (test_folder_counts): Add free of info.
+ (test_folder_message): And here too.
+
+ * providers/local/camel-maildir-summary.c (remove_summary): Free
+ info.
+ (maildir_summary_check): Free info lookups.
+
+ * providers/local/camel-mh-summary.c (message_info_new): Removed,
+ didn't add value.
+ (remove_summary): free info after being used.
+ (mh_summary_check): Free info lookups.
+ (mh_summary_sync): and here too.
+
+ * providers/local/camel-mbox-summary.c (summary_update): Free info
+ lookups.
+ (mbox_summary_sync_full): Likewise.
+ (mbox_summary_sync_quick): And here.
+ (mbox_summary_sync): ... and here.
+
+ * providers/local/camel-maildir-folder.c (maildir_get_message):
+ Free messageinfo lookups.
+
+ * providers/local/camel-mh-folder.c (mh_get_message): Free
+ messageinfo lookups.
+
+ * providers/local/camel-mbox-folder.c (mbox_get_message): Free
+ messageinfo lookups.
+
+ * providers/local/camel-local-summary.c
+ (message_info_new_from_message): Removed, since it wasn't doing
+ anything useful.
+ (message_info_new_from_parser): Same. And some other dead code.
+
+ * providers/local/camel-local-folder.c (local_get_message_info):
+ deconstify.
+ (local_free_message_info):new func to free info.
+ (local_get_uids):
+ (local_get_message_flags):
+ (local_set_message_flags):
+ (local_get_message_user_flag):
+ (local_set_message_user_flag):
+ (local_get_message_user_tag):
+ (local_set_message_user_tag): Free all info lookups.
+ (local_expunge): Dont call camel_folder_* functions, to avoid a deadlock.
+
+ * providers/nntp/camel-nntp-folder.c
+ (nntp_folder_get_message_info): deconstify.
+ (nntp_folder_free_message_info): Free summary item.
+ (nntp_folder_get_message_flags): Free summary lookup.
+ (nntp_folder_set_message_flags): and here.
+ (nntp_folder_get_uids): And here.
+
+ * providers/imap/camel-imap-auth.c: Make base64_*_simple optional
+ with the HAVE_KRB4 flag.
+
+ * providers/imap/camel-imap-folder.c (imap_free_message_info):
+ Added a free of the message info.
+ (imap_refresh_info):
+ (imap_sync):
+ (imap_refresh_info):
+ (imap_get_unread_message_count):
+ (imap_get_uids):
+ (imap_get_message_flags):
+ (imap_set_message_flags): Free any summary lookups.
+ (imap_get_message_flags): Get the message info directly from the
+ summary, not via the folder interface.
+ (imap_move_message_to): Dont call folder functions directly
+ (delete_message), as it will deadlock since we already have the
+ lock.
+
+ * providers/vee/camel-vee-folder.c (vee_free_message_info): Free/unref
+ the messageinfo.
+ (vee_get_message_info): First ref the internal copy, then return it.
+ (folder_changed): Free all got message info's.
+ (message_changed): And here.
+ (get_real_message): And here.
+ (vee_folder_build): and here.
+ (vee_folder_build_folder): ... and here.
+
+ * camel-folder-summary.c (camel_folder_summary_info_new):
+ Initialise the messageinfo refcount to 1.
+ (camel_folder_summary_info_free): Down the refcount till we need
+ to free.
+ (camel_folder_summary_info_ref): New function to up the refcount.
+ (camel_message_info_dup_to): Sewt the refcount of the dest to 1.
+ (camel_message_info_new): Set refcount to 1.
+ (camel_message_info_new_from_header): Dont allocate the mi
+ ourselves.
+ (camel_message_info_free): Handle refcounting.
+ (camel_message_info_ref): New function.
+ (camel_folder_summary_index): Ref the messageinfo before returning
+ it.
+ (camel_folder_summary_uid): Likewise.
+ (camel_folder_summary_save): Access the messageinfo array
+ directly, rather than through accessors (saves ref/unref).
+ (camel_folder_summary_clear): Likewise.
+ (camel_folder_summary_remove_index): Likewise.
+ (main): Free lookups.
+
+ * camel-folder-summary.h (CamelMessageInfo): Added a refcount
+ value.
+
+ * camel-folder.c (camel_folder_free_message_info): New function to
+ 'free' a message info.
+ (camel_folder_get_message_info): Deconstify return.
+ (camel_folder_lock): New (internal) function to thread-lock the
+ folder.
+ (camel_folder_unlock): Likewise for unlocking.
+ (freeze):
+ (thaw): Lock around access to folder->frozen/changed_frozen.
+ (folder_changed): Likewise.
+ (message_changed): Likewise.
+ (camel_folder_init): Init private data, locks and moved frozen
+ info.
+ (camel_folder_finalize): Free new private data, locks and moved
+ frozen info.
+ (copy_message_to): Free the messageinfo after we've used it.
+ (move_message_to): And here too.
+ (camel_folder_sync): Lock around virtual method invocation. Just
+ locking around any virtual method that is known to need it. This
+ is the first cut at locking.
+ (camel_folder_refresh_info): "
+ (camel_folder_expunge): "
+ (camel_folder_get_message_count): "
+ (camel_folder_get_unread_message_count): "
+ (camel_folder_append_message): "
+ (camel_folder_set_message_flags): "
+ (camel_folder_get_message_flags): "
+ (camel_folder_get_message_user_flag): "
+ (camel_folder_set_message_user_flag): "
+ (camel_folder_get_message_user_tag): "
+ (camel_folder_set_message_user_tag): "
+ (camel_folder_get_message): "
+ (camel_folder_get_uids): "
+ (camel_folder_free_uids): "
+ (camel_folder_get_summary): "
+ (camel_folder_search_by_expression): "
+ (camel_folder_free_summary): "
+ (camel_folder_search_free): "
+ (camel_folder_move_message_to): "
+ (camel_folder_copy_message_to): "
+ (copy_message_to): Dont call any of our own folder functions
+ directly, otherwise we will deadlock.
+ (move_message_to): Likewise.
+
+ * camel-folder.h (CamelFolder): Added free_message_info() function
+ & deconstify get_message_info()'s return.
+ (CamelFolder): Add a private field (for locks).
+ (struct _CamelFolder): Moved changed_changed/frozen into private
+ data, since it really is private and now needs locked access.
+
+2000-12-15 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-utils.c (header_fold): When checking to see if we
+ need to fold the header, when we come accross a \n, make sure to
+ start at p + 1 the next time through the loop or else we get into
+ an infinite loop.
+
+2000-12-13 Dan Winship <danw@helixcode.com>
+
+ * Namespace cleanup: change a bunch of IS_CAMEL_* macros to
+ CAMEL_IS_*
+
+2000-12-13 Chris Toshok <toshok@helixcode.com>
+
+ * providers/imap/camel-imap-auth.c: add #include <sys/types.h> for
+ freebsd.
+
+2000-12-12 Christopher James Lahey <clahey@helixcode.com>
+
+ * camel-folder-summary.c, camel-folder-summary.h: Added #ifndef
+ NO_WARNINGS around a #warning. Added (void) to the prototype and
+ declaration of camel_message_info_new.
+
+ * camel-mime-message.h: Added an include for
+ camel-mime-filter-bestenc.h. Added a prototype for
+ camel_mime_message_set_best_encoding. Reformatted prototypes to
+ line up.
+
+ * camel-mime-parser.c: Added #if d(!)0 around the states string
+ lookup table since it's only used in debugging output.
+
+ * camel-seekable-substream.c (stream_flush): Added a cast.
+
+ * providers/imap/camel-imap-auth.c: Added #include <netinet/in.h>.
+
+ * providers/imap/camel-imap-folder.c (imap_refresh_info): Made uid
+ and flags const to fix warnings here.
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Made p
+ const to fix warnings here.
+
+2000-12-12 Dan Winship <danw@helixcode.com>
+
+ * tests/lib/Makefile.am: Add missing .h file. (From campd.)
+
+2000-12-11 Not Zed <NotZed@HelixCode.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Remove use of
+ linewrap filter. Headers are now wrapped. encode_8bit already
+ enforces a 998 octet line limit.
+ (smtp_data): Also fixed a memleak, we always have to unref our own
+ copy of the filters. We also dont need to remove them manually,
+ so dont bother. The type's an int too ...
+
+ * camel-internet-address.c (internet_unformat): When scanning past
+ quotes, remove them also.
+ (camel_internet_address_format_address): If the name contains "'s,
+ or ','s then strip and quotes and wrap the whole lot in one set of
+ quotes.
+
+ * Makefile.am (noinst_HEADERS): We dont want to install
+ camel-charset-map-private.h, ever. There are probably other
+ similar files ..?
+
+ * camel-mime-part.c (write_to_stream): Fold header lines
+ appropriately as we're writing them out.
+
+ * camel-mime-utils.c (header_fold): Add a new argument, headerlen,
+ tells it how long the associated header token is.
+ (header_fold): Also,k check to see if we need to fold first, using
+ a better algorithm, and also accept already-folded lines, and
+ re-process accordingly.
+ (rfc2047_decode_word): Add a little buffer space to iconv output
+ for shifting overheads?
+ (rfc2047_decode_word): finish the iconv with a null call, to flush
+ shift state, etc.
+ (rfc2047_encode_word): Attempt to break up long words into
+ appropriately sized, independent, chunks. See rfc2047, section 2.
+ (header_decode_mailbox): Dont add in extra spaces into the output
+ if we are decoding adjacent encoded words. We can only guess this
+ case, as some broken mailers put encoded words inside quoted
+ words.
+ (header_encode_phrase): Dont merge words if they are going to end
+ up too long. Also change back ot only merge consecutive words of
+ the same type. e.g. 'foo. blah fum.' -> "foo." blah "fum." or
+ 'iam an. idiot' -> iam "an." idiot
+
+ * camel-medium.c (camel_medium_set_header): Hrm, we actually want
+ to call set_header, not add_header here, probably explains some
+ duplicate X-Evolution headers i was trying to track down. Also
+ changed the api to handle a NULL value == remove the header.
+
+ * providers/local/camel-maildir-summary.c
+ (maildir_summary_decode_x_evolution): Always return error, we dont
+ use x-evolution for maildir.
+ (maildir_summary_encode_x_evolution): Always return a NULL string,
+ likewise.
+ (maildir_summary_add): Hook in here, since the _new function
+ doesn't have access to any flags from the caller. If we have
+ flags, then update the filename again. Not ideal, but should
+ work.
+
+2000-12-08 JP Rosevear <jpr@helixcode.com>
+
+ * tests/message/Makefile.am: Remove test3 from build until the files
+ show up
+
+2000-12-09 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-message.c (camel_mime_message_set_date): Change the
+ sign of the default date offset when none is supplied.
+ (camel_mime_message_set_date): Also do dst if its dst (forward 1
+ hour). Fixes #928 + some.
+
+2000-12-06 Not Zed <NotZed@HelixCode.com>
+
+ * tests/lib/camel-test.h (check): Change line no format so that
+ emacs can detect it.
+
+2000-12-06 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_refresh_info): We want
+ to bitwise-or the server and cached flags here so that we keep the
+ flags that we have set locally and set any additional flags that a
+ parallel connection may have set.
+
+2000-12-05 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): If the data
+ wrapper fails to be written to the stream, unref it and the
+ filters before returning.
+
+2000-12-05 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): use
+ BODY.PEEK[] rather than RFC822, so the message doesn't get marked
+ as \Seen.
+ (imap_refresh_info): Fix a really really really dumb bug.
+
+2000-12-05 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_set_message_flags): Fix
+ the check for "flags aren't actually changing".
+
+ * providers/local/camel-local-folder.c (local_set_message_flags,
+ local_set_message_user_flag, local_set_message_user_tag): Don't
+ emit message_changed unless the flags actually changed.
+
+ * providers/nntp/camel-nntp-folder.c
+ (nntp_folder_set_message_flags): Don't emit message_changed unless
+ the flags actually changed. Fix the check for marked as seen.
+
+2000-12-05 Not Zed <NotZed@HelixCode.com>
+
+ * camel-seekable-substream.c (stream_flush): stream_flush does
+ make sense for a substream afterall (if you have a stream_write).
+ (stream_write): Implement this.
+ (stream_seek): Change the STREAM_END behaviour to be more sane.
+ if bounded go from the end of the bound, if unbounded, go from the
+ end of the parent stream.
+
+ * camel-stream-mem.c (stream_read): Dont return error if reading
+ past the end of data, just return 0.
+
+ * camel-stream-fs.c (camel_stream_fs_init): Initialise the stream
+ to be unbound.
+ (stream_seek): Fix the logic when seeking from the end of an
+ unbounded stream.
+ (camel_stream_fs_new_with_fd): If the fd is invalid (-1), then
+ return NULL immediately.
+ (stream_seek): Range check a SEEK_END so it fits within
+ bound_start.
+
+2000-12-01 Not Zed <NotZed@HelixCode.com>
+
+ * tests/lib/folders.c (test_folder_basic): New test to perform
+ basic store operations on folders (taken from folders/test1).
+ (test_folder_message_ops): Tkane the guts out of folders/test2.
+
+2000-12-04 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): i18n-ize
+ exception strings.
+ (get_name): And here.
+ (_send_to): Here too.
+ (smtp_helo): And here and there...
+ (smtp_mail): And around the square...
+ (smtp_rcpt): Saying catch me if you can...
+ (smtp_data): And here three.
+ (smtp_rset): And here.
+ (smtp_quit): And finally here.
+
+2000-12-01 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-folder-search.h: Added system_flag to CamelFolderSearchClass
+
+ * camel-folder-summary.c (camel_system_flag_get): Convenience
+ function to return whether or not a flag is set using a string as
+ the flag name.
+ (camel_system_flag): Return the integer value of the flag string.
+
+ * camel-folder-search.c (search_system_flag): New ESExp callback
+ for allowing vfoldering on CamelMessageInfo flags.
+
+2000-12-01 Dan Winship <danw@helixcode.com>
+
+ * camel-service.c (camel_service_disconnect): Don't
+ g_return_if_fail if the service is already disconnected. Just
+ return.
+
+ * providers/pop3/camel-pop3-store.c (pop3_try_authenticate):
+ Return FALSE (don't try again) if we get CAMEL_POP3_FAIL.
+ (pop3_connect): If we don't succeed, disconnect.
+
+2000-11-30 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c
+ (parse_list_response_as_folder_info): Fix a possible bug where
+ 'name' could be uninitialized.
+
+ * camel-folder-summary.c (camel_message_info_new): New convenience
+ function, doesn't do much but it sure makes code cleaner to read.
+ (camel_message_info_new_from_header): This one makes my life heaven.
+
+2000-11-30 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-summary.c (camel_imap_summary_new):
+ Handle the case where the summary failed to load - clear the
+ summary and then set the dirty bit so that it is sure to save
+ later. Is this the right fix?
+
+2000-11-30 Dan Winship <danw@helixcode.com>
+
+ * camel-exception.c (camel_exception_setv): Remove unused
+ variable.
+
+2000-11-30 Not Zed <NotZed@HelixCode.com>
+
+ * providers/local/camel-mbox-folder.c (mbox_get_message): Remove
+ assertion that content is there, when it no longer can be.
+
+ * camel-folder-summary.h: Removed pos/bodypos/endpos from
+ camelmeessagecontentinfo.
+ (CamelMessageFlags): Added an attachments flag.
+
+ * providers/local/camel-local-summary.h: Added load virtual
+ function.
+
+ * tests/lib/folders.c (test_message_info): Accessors.
+ (test_folder_message): "
+
+ * camel-folder-thread.c (get_root_subject): Fix accessors.
+ (dump_tree_rec): "
+
+ * camel-folder-search.c (camel_folder_search_execute_expression):
+ Accessors for messageinfo.
+ (search_match_all): "
+ (search_header_contains): "
+ (search_header_contains): "
+ (search_body_contains): "
+ (camel_folder_search_execute_expression): Use mepool_strdup.
+
+ * providers/local/camel-mbox-summary.c (summary_update): Accessors
+ for messageinfo.
+ (mbox_summary_sync_full): "
+
+ * providers/local/camel-mh-summary.c (remove_summary): Accessors
+ for messageinfo.
+ (mh_summary_check): "
+ (mh_summary_sync_message): "
+ (mh_summary_sync): "
+
+ * providers/local/camel-mh-folder.c (mh_append_message): Use
+ accessor for uid.
+
+ * providers/local/camel-local-summary.c
+ (local_summary_decode_x_evolution): Use accessor to uid.
+ (local_summary_encode_x_evolution): Likewise.
+ (message_info_new): And here.
+ (camel_local_summary_load): Call virtual load function.
+ (local_summary_load): Default load function, load summary.
+ (camel_local_summary_load): Check file exists before trying to
+ load.
+ (camel_local_summary_construct): Turn off building content info!
+ (CAMEL_LOCAL_SUMMARY_VERSION): Bump, since we dont build content
+ info anymore.
+ (camel_local_summary_load): After a successful load/check, do a
+ save too so we dont have to go through it again randomly.
+
+ * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Use
+ accessors for messageinfo.
+
+ * providers/nntp/camel-nntp-folder.c (nntp_folder_get_uids): Use
+ accessors for uid.
+
+ * providers/imap/camel-imap-folder.c (imap_refresh_info): Use
+ accessor for uid.
+ (imap_sync): Likewise.
+ (imap_get_uids): Likewise.
+ (imap_update_summary): And here.
+
+ * providers/vee/camel-vee-folder.c (vfolder_remove_match): Use
+ accessor for uid.
+ (vfolder_add_match): Handle estrv stuff.
+ (vfolder_change_match): Accessor for uid.
+ (get_real_message): "
+ (vee_get_uids): "
+ (vee_folder_build): " + estrv.
+ (vee_folder_build_folder): "
+
+ * providers/local/camel-maildir-folder.c (maildir_append_message):
+ Use acccessors for uid's.
+ (maildir_get_message): Here too.
+
+ * providers/local/camel-maildir-summary.c
+ (camel_maildir_summary_init): Setup the string count for us.
+ (message_info_new): Access the string array directly.
+ (message_info_free): No need to free string if using array.
+ (camel_maildir_summary_info_to_name): Use accessor to get to uid.
+ (remove_summary): And here.
+ (maildir_summary_check): Likewise.
+ (maildir_summary_sync): And here.
+ (maildir_summary_load): Load up a cache of uid->filename mappings
+ before loading the actual summary file. This saves us having to
+ waste the diskspace storing the filenames in the summary itself,
+ and also helps us sync the summary better on load.
+ (message_info_load): If we have the load_map setup, and the uid
+ exists, then set the filename cache from it, and update the flags
+ from the name, incase our summary mismatches it.
+
+ * camel-folder-summary.c (camel_folder_summary_init): Setup string
+ count for compressed info record. An optional compile mode which
+ stores all strings for a given messageinfo into a packed array,
+ which should save 36-50 bytes/record.
+ (camel_folder_summary_info_new): Init the string array.
+ (message_info_new): Set the string array items, as required.
+ (message_info_load): And here too.
+ (message_info_save): Use accessors to get to strings.
+ (message_info_free): Free strings as one.
+ (camel_message_info_dup_to): Handle packed array case.
+ (camel_folder_summary_add): Use accessors. And pack the strv
+ before storing it.
+ (summary_assign_uid): New function to assign a unique uid to a
+ message, if it doesn't have one.
+ (camel_folder_summary_add): Call assign_uid instead of doing it
+ ourselves.
+ (camel_folder_summary_info_new_from_parser): "
+ (camel_folder_summary_info_new_from_message): "
+ (camel_folder_summary_encode_string): constify.
+ (camel_folder_summary_encode_token): "
+ (summary_build_content_info_message): Fix accessors to messageinfo.
+ (CAMEL_FOLDER_SUMMARY_VERSION): Bumped, for removal of
+ contentinfo->pos data.
+ (camel_folder_summary_info_new_from_parser): Calculate the size
+ based on the parser position, not the removed contentinfo stuff.
+ (camel_folder_summary_info_new_from_message): Remove size stuff.
+ (camel_folder_summary_offset_content): Removed, no longer means anything.
+ (content_info_new):
+ (content_info_load):
+ (content_info_save):
+ (summary_build_content_info): Remove stuff for contentinfo->pos*.
+ (summary_build_content_info): Take a msginfo argument, set
+ attachments flag if we find any attachments.
+ (summary_build_content_info_message): set attachments flag if we
+ find any attachments.
+ (camel_folder_summary_info_new_from_parser): Always scan the
+ content info, even if we dont save it.
+ (camel_folder_summary_info_new_from_message): And here too.
+ (summary_build_content_info): Only create the contentinfo stuff if
+ we have it turned on, otherwise just parse and discard.
+ (summary_build_content_info_message): Likewise.
+
+2000-11-29 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-store.c (camel_store_get_folder): Updated the gtk-doc
+ comment.
+
+2000-11-29 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c:
+ * camel-mime-filter-charset.c: Use iconv instead of unicode_iconv.
+
+ * providers/imap/camel-imap-command.c (imap_read_untagged): Fix
+ some off-by-one-ness.
+
+ * camel-stream-buffer.c (stream_read): Fix another bug found in
+ previously-unused code here.
+
+2000-11-29 Ettore Perazzoli <ettore@helixcode.com>
+
+ * tests/lib/Makefile.am (INCLUDES): `$(top_srcdir)' for builddir
+ != srcdir compilation.
+
+2000-11-29 Not Zed <NotZed@HelixCode.com>
+
+ * tests/message/test2.c (main): Add a missed unref.
+
+ * camel-stream-mem.c (camel_stream_mem_set_buffer): We must set
+ ourselves as the owner of the byte-array.
+ Weird, someone has modified this file (its been reindented), but i
+ can't see any changelogs ...
+
+ * tests/lib/messages.c (content_finalise): Fix memleak in tester,
+ free byte array when our content object is deleted.
+
+ * camel-folder-search.c (camel_folder_search_finalize): Yeah
+ great, so the sexp is a gtk object, not a camel object. Isn't
+ that going to be fun to fix?
+
+ * camel-session.c (camel_session_finalise): Free the storage path.
+
+ * providers/local/camel-local-store.c (camel_local_store_init): If
+ store->folders is setup, free it first, then overwrite. Hmm,
+ this seems a bit crappy to me.
+
+ * camel-store.c (camel_store_init): Dont setup store->folders if
+ its already setup.
+
+ * camel-exception.c (camel_exception_setv): Removed a memleak. no
+ need to strdup after a strdup_printf!!!
+
+ * camel-address.c (camel_address_finalize): Free the address
+ ptrarray, once finished.
+
+ * providers/local/camel-local-folder.c (local_finalize): Make sure
+ we dont leave the folder locked on close.
+ (local_finalize): Free summary/search.
+
+ * providers/local/camel-mh-summary.c (mh_summary_next_uid_string):
+ Small memleak, always free name after using it.
+
+ * camel-mime-part.c (set_content_object): Free txt after setting
+ the header.
+
+ * providers/local/camel-maildir-summary.c (maildir_summary_check):
+ Fix a memleak, close the dir after scanning new.
+ (message_info_free): Added so we can free the filename cached in
+ the messageinfo.
+ (camel_maildir_summary_finalise): Free the hostname.
+
+ * tests/folder/test[12].c (main): Clear out camel-test before
+ starting.
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync_quick):
+ Because encode_x_evolution folds the line (sigh, because
+ encode_param does, unlike every other function in
+ camel-mime-utils), unfold the encoded result before comparing.
+ (mbox_summary_sync_quick): Another small memleak, free xevnew once
+ finished with it.
+
+ * camel-mime-utils.c (header_decode_quoted_string): Removed a
+ redundant check for c=0.
+ (header_unfold): New function to un-fold headers.
+
+ * providers/local/camel-local-summary.c
+ (local_summary_encode_x_evolution): some problems with encoding
+ tags, using the wrong output strings.
+ (local_summary_encode_x_evolution): We dont need to append a ;
+ either, param_list_format_append() will do it for us.
+
+2000-11-28 JP Rosevear <jpr@helixcode.com>
+
+ * camel-lock.c: No longer hard code the enabled lock types
+
+2000-11-28 Dan Winship <danw@helixcode.com>
+
+ * camel-remote-store.c (remote_recv_line): Don't set exception to
+ g_strerror (errno) when nread == 0, because it won't have been
+ set.
+
+ * providers/pop3/camel-pop3-folder.c (pop3_finalize): Don't try to
+ free things if they haven't been set yet.
+
+2000-11-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): Clear the
+ exception if EHLO fails before trying HELO in the cases where the
+ SMTP provider doesn't announce its ESMTPness.
+
+2000-11-28 Not Zed <NotZed@HelixCode.com>
+
+ * providers/local/camel-maildir-summary.c
+ (camel_maildir_summary_init): Set the info size's properly, oops!
+
+ * tests/lib/folders.[ch]: Folder testing helpers.
+
+ * tests/folder/test2.c: Test basic message ops on folders.
+
+ * tests/folder/test1.c (main): Test basic folder ops on (local)
+ stores.
+
+ * providers/local/camel-local-provider.c
+ (camel_provider_module_init): Removed some debug.
+
+ * providers/local/camel-maildir-folder.c
+ (camel_maildir_folder_class_init): fix parent class.
+
+ * providers/local/camel-mh-folder.c (camel_mh_folder_class_init):
+ Fix parent class (damn cut & paste).
+
+ * providers/local/camel-maildir-store.c (get_folder): Call parent
+ impl.
+ (camel_maildir_store_class_init): Fix parent class setup.
+ (delete_folder): Check the folder exists before trying to delete
+ it.
+ (delete_folder): Try and make the delete operation atomic/rollback
+ failures. e.g. if one directory isn't empty, then create the
+ other empty ones back. Also clear the tmp directory fully first.
+
+ * providers/local/camel-mbox-store.c (get_folder): Call parent
+ impl.
+ (camel_mbox_store_class_init): parent class is camel_local_store,
+ not camel_folder, oops.
+ (delete_folder): Return an error if it doesn't exist, rather than
+ covering it up.
+
+ * providers/local/camel-mh-store.c (get_folder): Call parent impl.
+ (camel_mh_store_class_init): fix parent class setup.
+ (delete_folder): Error if it doesn't exist now.
+
+ * camel-folder.c (camel_folder_move_message_to):
+ (camel_folder_copy_message_to): Added warnings as these functions
+ are going to be removed later.
+
+ * camel-store.c (camel_store_get_root_folder): Fix for an early
+ api change. We want CAMEL_STORE_FOLDER_CREATE, not TRUE, since
+ its a flag.
+ (camel_store_get_default_folder): And here too.
+
+ * providers/local/camel-local-store.c (xrename): Handle renaming
+ folders differently to renaming files.
+ (get_default_folder_name): local stores dont have a default
+ folder, so make it so. Or at least, it doesn't seem to make sense
+ to have one.
+ (get_root_folder_name): Same for root.
+ (get_folder): Added parent implementation, that makes sure the
+ service path exists, if we are creating a new folder (but doesn't
+ create the folder).
+
+2000-11-27 Not Zed <NotZed@HelixCode.com>
+
+ * providers/local/camel-local-store.c (xrename): Fixed races. Use
+ link/unlink, rather than rename, to properly detect overwriting
+ another file. And allow some files to be missing.
+
+2000-11-28 Radek Doulik <rodo@helixcode.com>
+
+ * providers/local/camel-local-summary.c
+ (local_summary_decode_x_evolution): add scan = scan->next; to
+ avoid infinite loop
+
+2000-11-27 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-command.c (imap_read_untagged): Make
+ this gratuitously more complicated. No wait, I mean, fix bugs. Now
+ fully handles NULs in the data stream (which "can't happen" but
+ do) and also handles responses containing multiple literals. Also
+ does less copying than the original code.
+
+ * camel-stream-buffer.c (stream_read): Fix a bug that could make
+ it lose sync and/or overrun buffers.
+
+2000-11-27 JP Rosevear <jpr@helixcode.com>
+
+ * providers/local/.cvsignore: shush
+
+2000-11-27 Not Zed <NotZed@HelixCode.com>
+
+ * providers/Makefile.am: Removed mh, mbox, added local, to the default.
+
+2000-11-24 Not Zed <NotZed@HelixCode.com>
+
+ * tests/data/getaddr.pl: little util to scan mailboxes for any and
+ every address they contain.
+
+ * tests/message/test2.c (main): Added a bunch of stuff to test
+ decoding/reencoding/etc of internationalised addresses.
+
+ * tests/message/lib/address-data.h: Copy of some unicode/other
+ testing data. **Beware** of editing this file in emacs, it'll
+ probably try and convert all the characters to something
+ unusable.
+
+ * tests/lib/camel-test.c (camel_test_break): Add a debugger hook
+ point.
+
+ * camel-mime-utils.c (quoted_encode): Check for space and convert
+ to _ separately.
+ (header_decode_mailbox): Fixed the 'check comments for realname'
+ code, problem was the domain getting code was skipping all
+ whitespace/comments before we could get a look-in. This is
+ approximate but fairly robust.
+ (header_decode_text): Dont use the c-type isspace func here, we
+ want a specific whitespace only.
+ (header_decode_text): If we have decoded words next to each other,
+ do not insert whitespaces between them, which is what rfc2047 requires.
+ (header_decode_text): Make c unsigned too.
+
+ * tests/README: Added at least some explanation of all this stuff.
+
+ * tests/lib/camel-test.h (check_msg): Added a non-gcc version of
+ the fail command, we dont get the expression that failed, but no
+ matter. Should be (more) portable now.
+ (check, check_msg): Put the file/lineno in the default message.
+
+ * Makefile.am (SUBDIRS): Add tests.
+
+ * camel-mime-filter-basic.c (filter): Well, I'll add the extra
+ bytes here too, lathough not strictly needed, might save a
+ re-malloc when we get to complete().
+
+ * camel-mime-filter-charset.c (filter): Make sure we have room if
+ we only convert very short data.
+ (complete): and here too.
+
+ * tests/Makefile.am: Initial test harness & tests. Requires gcc
+ for this.
+
+ * camel-internet-address.c (d): Turn off debug.
+
+ * camel-charset-map.c (camel_charset_step): Oops, & masks for set
+ intersection, not | them. Dunno how this got even close to
+ working.
+
+2000-11-23 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-filter-basic.c (filter): For base64 encoding, the
+ output size for 0, 1, or 2 bytes of input can exceed input*2, so
+ make sure we account for that as well.
+ (complete): And here.
+ (complete): Similarly for qp encoding, if we have a trailing
+ space, we need some extra bytes (not needed for 'filter()', as any
+ such bytes are stored in state/save).
+
+ * camel-mime-utils.c (quoted_decode_step): Removed fixme not required.
+ (quoted_encode_close): Dont append a trailing afterall. Otherwise
+ a pass through the encode/decode will grow the message each time.
+
+2000-11-22 Radek Doulik <rodo@helixcode.com>
+
+ * camel-mime-utils.c (header_msgid_generate): check for return
+ values
+
+2000-11-21 Dan Winship <danw@helixcode.com>
+
+ * camel-lock.c:
+ * camel-movemail.c: add #ifdef HAVE_ALLOCA_H
+
+2000-11-21 Not Zed <NotZed@HelixCode.com>
+
+ * providers/local/camel-mh-summary.c (mh_summary_sync_message):
+ Shite, -1 on error, >=0 on success. So i've just been truncating
+ all the messages I touched, good one zed.
+ (mh_summary_sync_message): Sigh, and write to the right damn fd as
+ well.
+ (mh_summary_sync_message): Argh, and we need to compare the length
+ of the old xev -1 to the new xev, to check if we can optimise it.
+
+ * camel-folder.c (camel_folder_change_info_new): Init the pool.
+ (camel_folder_change_info_add_source): Allocate string in the
+ pool.
+ (camel_folder_change_info_add_source_list):
+ (camel_folder_change_info_add_update): No longer free the key, as
+ it cannot be yet.
+ (change_info_add_uid): Add a new arg, copy, telling it whether to
+ copy the uid argument or not, and copy using mempool_strdup.
+ (change_info_cat): Tell add_uid to copy the string.
+ (camel_folder_change_info_add_update): Call add_uid directly.
+ (change_info_remove): Call add_uid directly, with no copy, and
+ dont free the key.
+ (change_info_free_update): No longer required since we dont malloc
+ the keys.
+ (camel_folder_change_info_add_uid): Fix for add_uid change.
+ (camel_folder_change_info_remove_uid):
+ (camel_folder_change_info_change_uid):
+ (change_info_clear): No longer needed, just set the size to 0 on
+ the array directly.
+ (camel_folder_change_info_clear): Empty the arrays directly, and
+ flush the mempool too, and also clear uid_source, incase anyone
+ was silly enough to call us in the wrong order.
+ (camel_folder_change_info_free): Dont bother clearing the array's
+ contents, just free the pool and throw away all the indexes.
+
+ * camel-folder.h: Added a mempool to CamelFolderChangeInfo to
+ store the uid's we get.
+
+ * camel-folder-search.c (search_match_all): If we are only
+ matching a single info, just use that/do the search.
+ (camel_folder_search_match_expression): New function. Matches a
+ single message info against an expression.
+ (camel_folder_search_init): Init a hash table used to map the
+ returned gptrarrays' to mempools.
+ (camel_folder_search_execute_expression): Store all of the string
+ data in a mempool, slightly faster, less wasted space (usually),.
+ (camel_folder_search_free_result): Check for the mempool that
+ stores the data for the list, and free that if we have it,
+ otherwise assume we need to use g_free() (which should only happen
+ if the list is empty at the moment).
+ : commented out the debugging prints. Got sick of 'executing
+ header search' crap.
+
+ * providers/vee/camel-vee-folder.c (camel_vee_folder_init): Init
+ changes.
+ (camel_vee_folder_finalise): Free changes.
+ (vfolder_add_match): Simple helper to add a new matching info
+ record.
+ (camel_vee_folder_add_folder): Only trigger a changed event if we
+ have changes.
+ (vfolder_change_match): New function, changes our local vfolder
+ info to match the source.
+ (vfolder_add_match): Add a new info to the vfolder list.
+ (vfolder_remove_match): Remove a no-longer matching info from the
+ vfolder summary.
+ (message_changed): check if the message still matches, and
+ remove/etc as required.
+ (camel_vee_folder_finalise, init): init/free search object.
+ (vee_folder_build_folder): Build the changes to the folder into
+ the changes data, as we go.
+ (folder_changed): If the folder gave us an explicit list of
+ changes, then process each one separately (unless there's a lot
+ added/changed).
+
+ * providers/vee/camel-vee-folder.h: Added a changes field to the
+ folder.
+
+ * Makefile.am (libcamel_la_SOURCES): Added
+ camel-folder-thread.[ch].
+
+ * camel-folder-thread.c: message-threading algorithm, taken from
+ evolutions' mail component, as it is generally more useful than
+ just for evolution itself. Changed to use e-memchunks as well to
+ speed it up a little and use less mem.
+
+2000-11-20 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-remote-store.c (remote_recv_line): Fixed to return the
+ correct bytecount in all cases which is the real fix to
+ imap_parse_nstring.
+
+ * providers/imap/camel-imap-command.c (imap_read_untagged): Again,
+ don't use strlen for the post-data, use 'n'.
+
+ * providers/imap/camel-imap-utils.c (imap_parse_nstring): Undo my
+ previous temp-fix.
+
+2000-11-20 Not Zed <NotZed@HelixCode.com>
+
+ * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Fixes for
+ the summary messageid changes. Hash the messageid and store it.
+ (get_XOVER_headers): Use camel_folder_summary_info_new() to create
+ the summary item before adding it.
+
+ * camel-folder-summary.h (CamelMessageInfo): Changed the
+ messgae-id to be an 8 byte md5 hash, and the references list to be
+ an array of these.
+
+ * providers/local/camel-mh-summary.c (mh_summary_sync_message):
+ New function, sync out the message info stuff. Only updates the
+ X-Ev header if it can get away with it, otherwise writes out a
+ whole new message.
+ (mh_summary_sync): Added more functionality. All summary info is
+ now written to the X-Ev header, etc, and new messages re-written
+ if required during the sync process.
+
+ * providers/local/camel-local-folder.c
+ (local_set_message_user_flag): Set the XEVCHANGE flag.
+ (local_set_message_user_tag): And here too.
+
+ * providers/local/camel-local-summary.h: New flag
+ CAMEL_MESSAGE_FOLDER_XEVCHANGE to indicate the XEV header has
+ probably changed size and needs to be rewritten in whole.
+
+ * camel-folder-summary.c (next_uid_string): Want this static, not
+ const.
+ (message_info_new): Store the references and message-id values as
+ 64 bit, binary hashes.
+ (message_info_load): fix for message-id/references changes.
+ (message_info_save): Likewise.
+ (camel_message_info_dup_to): And here.
+ (camel_message_info_free): And here too. No longer free
+ message_id, and simple free for references array.
+ (CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision.
+ (camel_folder_summary_init): Init memchunk allocators to empty.
+ (camel_folder_summary_finalize): Free memchunk allocators if
+ there.
+ (message_info_new): Use the chunk allocator to allocate message
+ info's.
+ (camel_folder_summary_info_new): New helper to allocate the
+ message info, and setup the memchunk if required.
+ (content_info_alloc): Likewise for content info's.
+ (message_info_load): Use summary_info_new_empty.
+ (content_info_new): Use content_info_alloc.
+ (content_info_load): "
+ (content_info_free): Free the content info as a memchunk.
+ (message_info_free): Free everything directly and the base as a
+ memchunk, rather than calling camel_message_info_free(), which
+ assumes a malloc'd array.
+
+ * providers/local/camel-local-summary.c: Include ctype.h, kill a
+ warning.
+ (local_summary_decode_x_evolution): If we get a NULL message info,
+ then dont try and set anything, just check for validity.
+ (camel_local_summary_write_headers): New function to write a set
+ of headers to an fd.
+ (camel_local_summary_check): Added some statistic generation
+ stuff for memory profiling.
+
+ * providers/local/camel-mbox-summary.c (header_write): Changed to
+ use stdoi functions to write out the header to a buffered stream,
+ instead of using writev, which is apparently slow (and writing
+ each line separately is slow anyway).
+ (mbox_summary_sync_full): New implementation. Does things
+ differently, doesn't use or require the content info stuff.
+ (summary_rebuild): Dont return an error if we start scanning at
+ the end of file.
+ (mbox_summary_sync_full): If we are not writing out new headers,
+ make sure we copy the From line as we go, and update frompos
+ appropriately.
+ (mbox_summary_sync_full): Always copy the From line from the
+ existing one, rather than trying to make one up ourselves.
+ (mbox_summary_sync): If we can get by with a quick-sync, then try
+ it, if that fails, then try a full sync anyway.
+ (mbox_summary_sync_quick): Quick sync. Only update system flags,
+ etc.
+ (mbox_summary_sync_full): Use the proper local summary encode_xev
+ function.
+ (header_evolution_decode): Removed, no longer needed.
+ (header_evolution_encode): Same.
+ (copy_block): No longer needed, removed.
+ (header_write): Removed, replaced with
+ camel_local_summary_write_headers.
+ (mbox_summary_sync_full): Fixed for header_write change.
+
+ * camel-mime-parser.c (folder_scan_step): Implement the new
+ optional parser state HSCAN_PRE_FROM, that returns the (currently
+ unfiltered) input data.
+ (folder_scan_drop_step): Do the right thing for the PRE_FROM
+ state.
+ (camel_mime_parser_scan_from): Update the doco.
+ (camel_mime_parser_scan_pre_from): Ok, make this behaviour
+ optional, it simplifies a lot of loops that dont otherwise need to
+ know about it.
+ (folder_scan_step): Made the PRE_FROM state optional.
+ (struct _header_scan_state): Made the bool vars 1 bit.
+ (folder_pull_part): Free the from_line buffer if it is there.
+ (folder_scan_skip_line): Added a new arg, can save the skpped data
+ to a byte_array, as we go.
+ (folder_scan_step): Fixed calls to skip_line approrpiately. Now
+ we save the from line as we parse it.
+ (camel_mime_parser_read): New function to read from the mime
+ parser buffer directly. Useful if you use the parser to read the
+ first/some headers, then need to scan the rest of the data,
+ without needing to use a seek(), or allocate your own buffers.
+
+ * camel-mime-parser.h (struct _header_state): Added a new parser state,
+ pre-from which returns any data found before a from line during
+ parsing (all other data can be retrieved by the caller except
+ this).
+
+2000-11-17 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-utils.c (imap_parse_nstring): When
+ extracting a literal string, capture up until the end of the last
+ line - this we we don't lose any data if the byte count is off.
+
+ * providers/imap/camel-imap-command.c (imap_read_untagged): Use
+ the byte-read count to decrement the number of bytes left to read
+ rather than using strlen. Not only does this protect against a DoS
+ (embedded NUL chars in the literal string would make strlen
+ inaccurate) but it also improves performace a little.
+
+ * camel-remote-store.c (remote_recv_line): *Sigh* Return the
+ number of bytes read on success rather than 0. Also don't use
+ camel_stream_buffer_read_line since we can't get an accurate octet
+ count.
+
+2000-11-17 Not Zed <NotZed@HelixCode.com>
+
+ * providers/local/camel-local-summary.c (local_summary_add): Clear
+ the NOXEV/FLAGGED bits, since we do have an xev header. um m,
+ maybe this is right, this assumes a write is following. Maybe
+ this should be done in folder::append() instead ...
+
+ * camel-stream-buffer.c (camel_stream_buffer_gets): We should
+ always terminate the string. No need to check outptr is in range,
+ its already been checked.
+
+ * providers/local/camel-mbox-summary.c (mbox_summary_sync): When
+ we update the summary, do it from mbox_summary->folder_size, not
+ the content info endpos (which isn't any good anymore anyway).
+
+ * providers/local/camel-mbox-folder.c (mbox_append_message): Set
+ the frompos from the current folder size, since summary_add wont
+ have initialised it to anything useful.
+
+2000-11-16 Not Zed <NotZed@HelixCode.com>
+
+ * providers/local/camel-local-summary.c
+ (local_summary_encode_x_evolution): Check the uid string is all
+ digits before trying to write a 'standard' x-ev header.
+
+ * providers/local/camel-maildir-summary.c
+ (camel_maildir_summary_info_to_name): Convert an info into a
+ maildir name:info filename.
+ (camel_maildir_summary_name_to_info): Convert a name:info filename
+ into an info, and tell us if it didn't match it.
+ (message_info_new): When creating a new filename, gets its info
+ from the flags field. Likewise if creating from an existing file,
+ extract the flags.
+ (maildir_summary_sync): Remove a small memleak. Also, if our
+ flags and that requires a filename change, perform that here.
+ (message_info_new): Get the received date from the filename.
+ Also, dont overwirte the uid if we have one.
+ (maildir_summary_check): Sort the summary in received order before
+ completion.
+ (maildir_summary_next_uid_string): Test the name for collusions
+ before we give it out. Retry, and if that fails, well, I guess we
+ collide :(
+
+ * providers/local/camel-mbox-folder.c (mbox_lock): Implement mbox
+ locking.
+ (mbox_unlock): And unlocking.
+ (mbox_append_message): Lock the folder for write before doing
+ anything.
+ (mbox_get_message): Lock the folder for read before doing
+ anything.
+
+ * providers/local/camel-local-folder.c (camel_local_folder_lock):
+ Implement something here. We handle the recursive ability but
+ pass the locking to the folder itself.
+ (camel_local_folder_unlock): Likewise for unlocking.
+ (local_lock): Default - do nothing, return success.
+ (local_unlock): Same.
+ (local_sync): Changed slightly for locking api changes, and also,
+ only lock around the sync process itself.
+
+ * camel-lock.c: New file - utility functions for locking using
+ different strategies and/or for locking folders safely.
+
+ * Makefile.am (libcamel_la_SOURCES): Adde camel-lock.[ch]
+
+2000-11-15 Radek Doulik <rodo@helixcode.com>
+
+ * camel-mime-utils.c: mime_guess_type_from_file_name moved back to
+ composer as it introduced unwanted VFS dependency
+ removed #include <libgnomevfs/gnome-vfs.h>
+
+2000-11-15 Not Zed <NotZed@HelixCode.com>
+
+ * providers/Makefile.am: Removed local again, not quite ready.
+
+2000-11-14 Not Zed <NotZed@HelixCode.com>
+
+ * camel-folder-summary.c (message_info_new_from_message): Use
+ message_info_new to create the summary from headers, instead of
+ getting directly from the message.
+ (format_recipients): No longer required.
+
+ * providers/Makefile.am (SUBDIRS): Added local.
+
+2000-11-11 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-parser.c (folder_push_part): Make sure 'atleast' is
+ at least 1, always. This is possibly a temporary fix for a
+ bad failure mode on bad multipart messages.
+ (folder_scan_content): Go until inend, not inend+1. Changed the
+ continuation and retry logic to be simpler and more robust. If we
+ can't find a marker within
+ the atleast we need, just set it to 1, and try again, rather than
+ just going to the next smaller limit (boundary check checks the
+ length anyway).
+ (header_append): streamline the empty line case. And strip
+ trailing \r's if there are any (\n's already stripped).
+ (folder_scan_header): Reordered and cleaned up a lot. Check for
+ continuation only once, and compress lwsp then. Assume the header
+ buffer already has end of line's stripped, and simplify some things:
+ Only check for end of headers once and easier.
+ Dont check to remove end of line character
+ Dont bother testing inptr-start if we get a boundary match - it is
+ always zero.
+ (folder_scan_header): Removed the unused part variable, and a few
+ pointless assignments.
+ (folder_scan_header): Change the end limit to be 1 higher, to make
+ sure we get all content.
+ (folder_scan_content): And here too.
+ (folder_scan_header): Killed a warning.
+ (folder_push_part): Removed a bad comment. Actually
+ boundarylenfinal can be zero for a new message not in a
+ multipart. So we fix that here.
+
+2000-11-09 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.c (header_decode_param_list): Renamed from
+ header_param_list_decode.
+ (header_param_list_decode): New external function to decode a
+ parameter list.
+ (header_param_list_format_append): Made public.
+ (header_param_list_format): Another new public helper function for
+ formatting just a param list.
+
+ * camel-folder-summary.c (next_uid_string): Default implementation
+ is the same as before.
+ (camel_folder_summary_class_init): And set it up.
+
+ * camel-folder-summary.h: Make next_uid_string a virtual function.
+
+ * camel-folder.c (camel_folder_change_info_changed): New function
+ to return true if the changeset contains any changes.
+
+2000-11-14 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-stream.c (camel_stream_printf): Don't cast an int to a
+ ssize_t.
+
+2000-11-10 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_build_from): put a space before a single-digit
+ day of the month since it seems some mailers are fantastically
+ picky about this. (bugs.gnome.org #27232)
+
+2000-11-10 Radek Doulik <rodo@helixcode.com>
+
+ * camel-mime-utils.c (header_msgid_generate): fix ids ending with '.'
+
+2000-11-09 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-auth.c (imap_try_kerberos_v4_auth):
+ Fix error handling. (Only send a "*" to bail out of authentication
+ if the server hasn't already bailed on us.)
+
+2000-11-08 Radek Doulik <rodo@helixcode.com>
+
+ * camel-mime-utils.c (mime_guess_type_from_file_name): new
+ function, moved from composer
+
+2000-11-08 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-message.c (find_best_encoding): Keep track of the
+ caller bestenc flags that make sense.
+
+ * camel-mime-filter-bestenc.c (filter): Added code to detect when
+ we have "^From " lines in the sequence of text.
+ (camel_mime_filter_bestenc_get_best_encoding): Added a new flag
+ CAMEL_BESTENC_NO_FROM: if set, it will not allow any lines
+ matching "^From " to appear in the output - currently forcing
+ base64 encoding to achieve this.
+
+ * camel-mime-parser.c (folder_scan_step): Call
+ camel_mime-filter_complete() once we're done, rather than
+ filter_filter().
+ (folder_scan_content): Some fixes for state changing; so that when
+ we do find another boundary it is properly flagged. Since we
+ strip the last \n off all data, we must take that into account
+ too. Sigh. Fixes a rather nasty set of bugs where multipart
+ messages could start including following messages as parts, etc.
+ (struct _header_scan_stack): Added new parameter,
+ boundarylenfinal, which holds the length of the final boundary, if
+ it is different (e.g. for From lines, whihc aren't)
+ (folder_scan_step): Setup teh boundarylenfinal value when creating
+ a new boundary.
+ (folder_scan_content): Hmm, if we hit the end-of-buffer sentinal,
+ reset the scanner back to leave 'atleast' chars in the buffer
+ still, dump that content, and retry again. Stops us losing a
+ check for a boundary on some data we haven't really looked at yet!
+ (folder_scan_content): Use boundarylenfinal to calculate
+ 'atleast'.
+ (folder_scan_header): And here too.
+ (folder_boundary_check): Use the atleast value directly, dont
+ truncate it. Use the boundarylen/boundarylenfinal values directly
+ too.
+ (struct _header_scan_stack): Add an atleast parameter to cache the
+ atleast info.
+ (folder_push_part): Determine/set 'atleast', every time we add a
+ new part.
+ (folder_scan_header): Get the cached atleast info from the current
+ part.
+ (folder_scan_content): And here too.
+ (folder_scan_header): Fix a problem where a part starting with
+ " text" would be interpreted as a followon header wrongly.
+
+ * camel-mime-filter-charset.c (complete): Add some assertions to
+ find a bug.
+
+2000-11-07 Ettore Perazzoli <ettore@helixcode.com>
+
+ * camel-service.c (get_name): Strdup the "???" string you return,
+ so that the expected semantics for `::get_name()' is respected.
+
+2000-11-07 Dan Winship <danw@helixcode.com>
+
+ * camel-stream-filter.c (d): Kill debugging, as it causes lots of
+ evolution-mail spewage.
+
+2000-11-07 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-filter-bestenc.c (complete): Implement a complete()
+ function, now we need one.
+ (filter): Upgraded to match rfrc2045 properly. Checks also for
+ length of line and valid CRLF sequences.
+ (camel_mime_filter_bestenc_get_best_encoding): Do the work of
+ working out what is the best encoding given what we found about
+ the stream.
+
+ * camel-mime-part.c (camel_mime_part_encoding_to_string): Use a
+ lookup table to get the encoding naem, and add the binary type.
+ (camel_mime_part_encoding_from_string): Likewise for the reverse.
+
+ * camel-mime-part.h: Added the binary encoding type, see rfc2045.
+
+ * camel-mime-utils.c (header_param_list_format_append): Dont put a
+ space before ;'s in parameter lists, makes them more
+ readable/consistent.
+
+ * camel-mime-message.c (multipart_has_8bit_parts): Cleaned up the
+ old stuff, well removed it.
+ (camel_mime_message_set_best_encoding): Added another argument
+ that lets you select what you want to set the best of. i.e. for
+ smtp transport we only need 7 bit, and dont need to optimise the
+ charset (although of course, we should always).
+ (find_best_encoding): Implement this feature, if we are not
+ getting the best charset, use the one we have.
+ (best_encoding): Set the charset on the part appropriately. Sigh,
+ the interfaces for this are nonexistant.
+ (find_best_encoding): Tell the bestenc filter that lf should be
+ treated as crlf for the purposes of determining encodings.
+
+2000-11-06 Not Zed <NotZed@HelixCode.com>
+
+ * camel-charset-map.c (camel_charset_init): Init function for an
+ iterative charset determinator.
+ (camel_charset_step): Iterate another buffer.
+ (camel_charset_mask): Removed, since it couldn't have worked.
+ (camel_charset_best): Use the iterative interface to do the work.
+ (camel_charset_best_name): Get the best name for a charset so far.
+
+ * camel-mime-filter-bestenc.c: New class, a stream
+ filter that can be used to memory-efficiently determine the best
+ encoding and/or charset to use for a given stream of bytes.
+
+ * Makefile.am (libcamelinclude_HEADERS): Added stream-null*.
+ (libcamel_la_SOURCES): Added bestenc*
+
+ * camel-stream-null.c: New class, a null-stream, that always
+ succeeds, and never has any contents.
+
+ * camel-stream.c: Minor pointless changes. Was going to do
+ something else but changed my mind. Added trivial default
+ implementations for all callbacks.
+
+ * camel-mime-message.h: Cleaned up some old cruft.
+
+ * camel-folder-summary.c (camel_folder_summary_format_address):
+ address_list_format() no longer encodes, so we dont need to decode
+ it.
+
+ * camel-address.c (camel_address_unformat): New function, attempts
+ to reverse the formatting process on display addresses.
+ (camel_address_length): New function to get the number of
+ addresses, without having to peek the structure.
+
+ * camel-mime-message.c (camel_mime_message_set_from): Fix a typo.
+ (camel_mime_message_finalize): Only unref from/reply_to if we have
+ it.
+ (camel_mime_message_set_recipients): New function - set the
+ recipients as a CamelInternetAddress. This function effectively
+ deprecates the older recipient setting functions.
+ (camel_mime_message_add_recipient): What the hell, i'll bite the
+ bullet. Terminate this function. The old api was ambiguious and
+ inefficient and didn't work right anyway.
+ (camel_mime_message_remove_recipient_address): And this one.
+ (camel_mime_message_remove_recipient_name): And this one too.
+ (camel_mime_message_set_recipients): If we set an empty header,
+ then remove it from the header list. Allow a null receipient
+ object to clear a header.
+ (camel_mime_message_set_from): Likewise, if setting an empty from
+ address.
+ (camel_mime_message_encode_8bit_parts): Eeek!!
+ camel_stream_mem_new_with_byte_array owns the byte_array we give
+ it, so make sure we dont free any of it!
+ (camel_mime_message_encode_8bit_parts): Infact, i'll just rewrite
+ the whole lot, its a bit of a mess. Should really rename it and
+ make it a little more useful too, lets see ...
+ (best_encoding): This has a string interface? Oh boy.
+ (camel_mime_message_foreach_part): New experimental function to
+ iterate over all message parts. Might not remain.
+ (camel_mime_message_has_8bit_parts): New implementation using
+ foreach_part. Fixed a couple of problems.
+ (find_best_encoding): New function, that finds the best encoding
+ for a given part (will probably be moved to camel-mime-part), and
+ also the best charset to use if it is a text part. Since one
+ affects the other it is a two pass process, but uses streams and
+ not memory to achieve this.
+ (camel_mime_message_set_best_encoding): Uses the function above to
+ configure an entire message for the best encoding possible given
+ transport constraints.
+ (camel_mime_message_encode_8bit_parts): Reimplemented to use the
+ function above to perform the work.
+
+ * camel-internet-address.c
+ (camel_internet_address_format_address): Dont put <> around a lone
+ address with no real name.
+ (camel_internet_address_encode_address): Similarly.
+ (internet_decode): Actually return the count of decoded addresses.
+ (internet_unformat): Implement the unformatting routine.
+
+2000-11-05 Not Zed <NotZed@HelixCode.com>
+
+ * providers/smtp/camel-smtp-transport.c (_send_to): Changed to get
+ the internetaddress directly, rather than having to parse it
+ itself.
+
+ * camel-address.c (camel_address_format): Added a new function
+ which will format address, suitable for display.
+ (camel_address_cat): Concatentate 1 camel address onto another.
+ It is upto the caller to ensure the addresses are of compatible
+ types.
+ (camel_address_new_clone): New function to create a new address by
+ copying an existing one of the same type.
+ (camel_address_copy): New helper function to copy an address.
+
+ * camel-mime-message.h (struct _CamelMimeMessage): Removed cached
+ copy of date string.
+ (struct _CamelMimeMessage): Added date_received info.
+
+ * camel-mime-message.c (camel_mime_message_get_date_string):
+ Removed. Nothing uses it anyway, and it is redundant.
+ (camel_mime_message_finalize): No more date_str.
+ (camel_mime_message_init): No more date_str, initialise
+ date_received*
+ (write_to_stream): Change the check for a date header.
+ (process_header): No longer track the date_str.
+ (camel_mime_message_get_received_date): Removed. totally invalid
+ anyway.
+ (camel_mime_message_get_sent_date): Removed. Redundant. The only
+ 'date' is the sent date, the received date is just made up.
+ (camel_mime_message_get_date): Args changed to be more consistent
+ with utility functions.
+ (camel_mime_message_get_date): Dont set the date when we're asked
+ for it (if its not set by the time its written, it'll be set
+ then).
+ (camel_mime_message_get_date_received): Actually do 'the right
+ thing' here, if we have a received header, use that to determine
+ the received date. And return the data in the same format as
+ get_date.
+ (camel_mime_message_set_from): Changed the api to better match
+ what we should be doing. Pass a camelinternetaddress, etc.
+ (camel_mime_message_set_reply_to): Cahnged similarly to take an
+ internetaddress.
+ (camel_mime_message_get_reply_to): Likewise.
+ (camel_mime_message_finalize): Unref the from/reply_to objects.
+ (format_address): Removed, no longer needed.
+ (process_header): Changed to store the from/reply_to as
+ internetaddress's.
+ (write_to_stream): Set the from header directly to empty, if we
+ dont have one. Maybe we should just abort, and/or create one
+ based on the current user.
+
+ * camel-mime-utils.c (header_address_list_format): Renamed to
+ header_address_list_encode, which is what it is actually doing.
+ (header_address_list_format_append): Similarly.
+ (encoding_map[]): Removed, no longer used.
+ (header_address_list_encode_append): Take another arg, do we
+ encode the address (for internet), or not (for display - utf8
+ only).
+ (header_address_list_format): Re-added this function, but now it
+ generates a display version only. Surprise surprise, that is all
+ anythign needs to generate anyway. Sigh.
+
+ * camel-internet-address.c (camel_internet_address_get): Return
+ false if we get an invalid index only.
+ (camel_internet_address_encode_address): Helper function to encode
+ a single address for mailing.
+ (internet_encode): Use the above function to format it.
+ (camel_internet_address_format_address): Format a single address
+ for display.
+ (internet_format): Implement the display version.
+ (camel_internet_address_class_init): Init the internet_format
+ virtual function.
+ (internet_cat): Implement virtual function to concatenate
+ addresses.
+
+ * camel-folder-summary.c
+ (camel_folder_summary_info_new_from_header): new function, only
+ build the summary info, dont add it.
+ (camel_folder_summary_info_new_from_parser): Likewise, for new
+ info from parser.
+ (camel_folder_summary_add_from_parser): Cahnged to call function
+ above to build info.
+ (camel_folder_summary_add_from_header): Changed to call function
+ above, to build info.
+ (camel_folder_summary_info_free): New function to free the summary
+ message info.
+ (camel_folder_summary_clear): Changed to clal above to free info.
+ (camel_folder_summary_remove): Likewise.
+ (camel_folder_summary_add): Cleaned up the clashing uid
+ re-assignment logic a little bit.
+ (camel_folder_summary_decode_uint32): Fixed a typo, 01 != -1.
+ (camel_folder_summary_decode_time_t): Return -1 on error.
+ (camel_folder_summary_encode_off_t): New function to encode an
+ off_t type.
+ (camel_folder_summary_decode_off_t): And likewise for the reverse.
+ (CAMEL_FOLDER_SUMMARY_VERSION): Bumped the summary version, since
+ we're now encoding time/off_t's right.
+ (summary_header_save): Use time_t encoder to save the timestamp.
+ (summary_header_load): Likewise for decoding the timestamp.
+ (content_info_load): Decode off_t types directly, now we can.
+ (content_info_save): And likewise for encoding.
+ (camel_folder_summary_add_from_message): New function, create a
+ summary item from an existing message and add it.
+ (camel_folder_summary_info_new_from_message): New function, create
+ a summary item from an existing message.
+ (summary_build_content_info_message): New function to do the dirty
+ work of building the conent info/indexing, from a message source.
+ (format_recipients): Format an internetaddress suitable for the
+ summary.
+ (message_info_new_from_message): Build a new summary item from a
+ mime message.
+ (content_info_new_from_message): Build a new conent info from a
+ mime part.
+ (camel_folder_summary_class_init): Init the new class functions.
+ (message_info_new_from_message): Fixed for message api change.
+
+ Added documentation to the functions.
+
+2000-11-03 Radek Doulik <rodo@helixcode.com>
+
+ * camel-mime-utils.c (header_msgid_generate): new function,
+ generates simple message/content id
+
+2000-11-04 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Set the
+ preface/postface from the parser into the multipart object.
+
+ * camel-multipart.c (camel_multipart_set_postface): Function to
+ set the postface text on a multipart.
+ (camel_multipart_set_preface): Similarly for preface text.
+
+ * camel-mime-parser.c (folder_scan_content): If we scan until a
+ boundary, then we do not include the \n that starts the boundary
+ line in the content.
+ (struct _header_scan_stack): Added a ByteArray to store the
+ multipart pre/post-text as we're scanning.
+ (folder_pull_part): Free pre/posttext if they are allocated.
+ (folder_scan_step): Build into the pre/posttext arrays as we
+ encounter data.
+ (camel_mime_parser_preface): REturn the multipart preface text, if
+ there is any scanned.
+ (camel_mime_parser_postface): Likewise for postface text.
+ (byte_array_to_string): helper function for above.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message): Change
+ the from line to be "\nFrom ..." always, so no need to
+ check/append a \n to messages.
+ (mbox_append_message): Open the output stream with append mode
+ [assuming this is more efficient than seeking to the end]
+ And dont prepend \n on the From line if its the first in the
+ mbox.
+ (mbox_append_message): Pass the offset of the real start of the
+ "From " line when we perform the update (which may != 'seek')
+
+ * camel-mime-filter-charset.c (complete): Removed the terminating
+ NUL 'fix'.
+
+ * camel-stream-filter.c (do_read): Added some debug.
+ (do_flush): And here.
+ (do_write): And here too.
+ (do_write): ARGH!!! ARGH! Ok, so the filter stream was writing a
+ different number of bytes than the requester was asking it to
+ write (because of filtering, of course!). So instead of returning
+ the true number of written bytes, we'll return what they asked us
+ to write - unless there is an error in which case we return -1.
+
+ * camel-mime-utils.c (base64_encode_close): Sigh, forgot to make
+ it unsigned. I think this is actually a gcc bug as (48 >> 2)
+ somehow ended up negative, when it obviously should not, even if
+ the data load was signed.
+
+2000-11-03 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-url.c: Undo my incorrect fix - I misunderstood danw -
+ sorry!
+
+2000-11-03 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (camel_pop3_store_expunge):
+ Unbreak this.
+
+2000-11-03 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-url.c (camel_url_to_string): If show_pass, then base64 the
+ password before writing it to the output string.
+ (camel_url_new): Assume password has been base64 encoded and
+ decode accordingly.
+
+2000-11-03 Dan Winship <danw@helixcode.com>
+
+ * camel-provider.h: Add an "url_flags" field to CamelProvider.
+ Move the CAMEL_SERVICE_URL_* defines here and remove the SERVICE_
+ part of the name.
+
+ * camel-service.h: Remove CAMEL_SERVICE_URL_* flags and
+ service->url_flags field.
+
+ * camel-service.c (check_url, get_path): Get URL flags from
+ service->provider, update for changed flag names.
+
+ * providers/*/camel-*-provider.c: Add URL flags to provider
+ structures.
+
+ * providers/*/camel-*-{store,transport}.c, camel-remote-store.c:
+ Remove service->url_flags initialization.
+
+2000-11-02 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Quote
+ foldernames when sending to the IMAP server because the folder
+ name might contain spaces.
+
+2000-11-02 Not Zed <NotZed@HelixCode.com>
+
+ * Merged in camel-incremental-branch.
+
+2000-11-01 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Remove old
+ subbed folders from hash table after freeing them.
+
+ * providers/imap/camel-imap-folder.c (imap_get_full_name): Deal
+ correctly with namespace == ""
+
+2000-11-01 Gediminas Paulauskas <menesis@delfi.lt>
+
+ * camel-charset-map.c, camel-charset-map-private.h: synced all charsets
+ with ones found in libunicode. Just include more "iso/*.h" and rebuild
+ ...private.h with this.
+
+2000-10-31 Dan Winship <danw@helixcode.com>
+
+ * camel-service.c (service_disconnect): Add a new argument, clean,
+ that says whether or not to try to disconnect cleanly.
+
+ * camel-remote-store.c (remote_send_string, remote_send_stream,
+ remote_recv_line): disconnect uncleanly on failure to prevent
+ infinite loops when providers would normally send commands from
+ disconnect(). Remove some unneeded CamelException goo.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_disconnect):
+ * providers/pop3/camel-pop3-store.c (pop3_disconnect):
+ * providers/nntp/camel-nntp-store.c (nntp_store_disconnect):
+ * providers/imap/camel-imap-store.c (imap_disconnect): Don't send
+ QUIT/LOGOUT if !clean.
+
+2000-10-30 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-auth.c: New file with code for IMAP
+ authentication mechanisms. (Currently just krb4, and without
+ integrity/privacy protection).
+
+ * providers/imap/Makefile.am: Add camel-imap-auth.[ch] and krb4
+ CFLAGS/LDFLAGS
+
+ * providers/imap/camel-imap-store.c (connect_to_server): Split out
+ from imap_connect. Just does the basic connect and CAPABILITY
+ check. Redo the CAPABILITY code more robustly.
+ (query_auth_types_connected): Do this right rather than punting to
+ query_auth_types_generic. Check for KERBEROS_V4 if compiled with
+ krb4 support.
+ (query_auth_types_generic): Mention KERBEROS_V4 if compiled with
+ krb4 support.
+ (imap_connect): Use connect_to_server().
+
+ * camel-mime-utils.c (base64_encode_step, base64_encode_close):
+ Take an additional argument, "break_lines", saying whether or not
+ to add '\n's to the output.
+
+ * camel-multipart.c (set_boundary):
+ * camel-mime-filter-basic.c (filter, complete): Update for base64
+ api change.
+
+2000-10-30 Peter Williams <peterw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (unsubscribe_folder): Correct
+ parameters to g_hash_table_lookup_extended.
+
+2000-10-29 Dan Winship <danw@helixcode.com>
+
+ Improved IMAP namespace handling: leave the namespace in the
+ folder names rather than constantly prepending it and stripping it
+ off. Also some subscription fixes.
+
+ * camel-store.c (camel_folder_info_build): Fix for the case where
+ @top isn't in @folders.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Add
+ a "short_name" argument rather than figuring it out ourselves.
+ (imap_get_full_name): Implementation of CamelFolder::get_full_name
+ that strips off namespace so the user doesn't have to see it.
+ (imap_append_message, imap_copy_message_to, imap_move_message_to):
+ Use folder->full_name rather than calling
+ camel_imap_store_get_folder_path.
+
+ * providers/imap/camel-imap-utils.c (imap_parse_list_response):
+ Update this: make @flags a bitmask and @sep a char rather than a
+ string. Make all of the out arguments optional. Handle literals in
+ the server response.
+
+ * providers/imap/camel-imap-store.c (imap_connect): Do a better
+ job of getting the correct dir_sep for the namespace we're using.
+ Construct a base_url here that will be used by get_folder_info.
+ (camel_imap_store_folder_path): Removed
+ (imap_folder_exists): Add an argument to return the short name of
+ the folder (parsed out of the LIST response). Update for
+ imap_parse_list_response change.
+ (get_folder): Update for the various other changes.
+ (get_folder_info): Update for the various other changes. Be more
+ consistent about the returned layout: put everything underneath
+ the "namespace" directory, including INBOX, even if it doesn't
+ belong there. Don't destroy the list of subscribed folders until
+ we've actually gotten the new list.
+ (folder_subscribed, subscribe_folder, unsubscribe_folder): Use
+ folder_name directly rather than camel_imap_store_folder_Path.
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): Update
+ for folder name changes.
+
+2000-10-29 Dan Winship <danw@helixcode.com>
+
+ * camel.h: Remove md5-utils.h include since it's not part of Camel
+ any more.
+
+ * camel-charset-map.c: Kill some warnings.
+
+ * providers/nntp/camel-nntp-grouplist.c
+ (camel_nntp_get_grouplist_from_file, camel_nntp_grouplist_save):
+ Clean up warnings about time_t casts.
+
+ * providers/smtp/camel-smtp-transport.c: Remove unused md5-utils.h
+ include.
+
+ * providers/pop3/camel-pop3-store.c: Undefine the "_" macro
+ defined by krb4's des.h when compiling with krb support.
+ Fix md5-utils.h include.
+
+2000-10-27 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c (header_param_list_format_append): Only quote
+ Content-type parameters when the quoting is mandatory, and deal
+ with embedded quotes/backslashes when quoting.
+
+2000-10-27 JPR <jpr@helixcode.com>
+
+ * providers/pop3/Makefile.am: Tidy up build
+
+ * providers/smtp/Makefile.am: ditto
+
+ * Makefile.am: Move md5-utils.[hc] to e-util because the
+ addressbook is going to use md5 hashes for pilot syncing.
+ Maybe the calendar conduits as well because this is a good idea
+ Chris had.
+
+2000-10-26 Kjartan Maraas <kmaraas@gnome.org>
+
+ * camel-exceptions-list.def: Add newline to kill warnings.
+
+2000-10-25 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Fix folder
+ listing code infinite loop.
+
+ * camel-store.h: Add a "parent" field to CamelFolderInfo.
+
+ * camel-store.c (camel_folder_info_build): Deal with "parent"
+ (camel_store_folder_subscribed, camel_store_subscribe_folder,
+ camel_store_unsubscribe_folder): Add g_return_if_fails checking
+ that the folder supports subscriptions.
+
+ * providers/imap/camel-imap-store.c (folder_subscribed,
+ subscribe_folder, unsubscribe_folder): Remove "+ 1"s since the
+ mail subscribe UI won't prepend / to the folder names now.
+ (get_folder_info): Clear the "parent" field of the folderinfos
+ when removing an empty top level.
+
+ * providers/nntp/camel-nntp-store.c (nntp_store_folder_subscribed,
+ nntp_store_subscribe_folder, nntp_store_unsubscribe_folder):
+ Remove "+ 1"s since the mail subscribe UI won't prepend / to the
+ folder names now.
+
+2000-10-24 Chris Toshok <toshok@helixcode.com>
+
+ * providers/imap/camel-imap-store.h: add subscribed_folders.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_class_init):
+ fill in vtable entries for subscription functions.
+ (camel_imap_store_finalize): new function, so we can free up our
+ subscribed_folders hashtable.
+ (camel_imap_store_init): set CAMEL_STORE_SUBSCRIPTIONS in the
+ CamelStore flags, and create our subscribed_folders hashtable.
+ (camel_imap_store_get_type): camel_imap_store_finalize is our
+ finalize function.
+ (get_folder_info): if we're looking at subscribed_only, clear out
+ the subscribed_folders hashtable, use LSUB instead of LIST, and
+ insert folder paths (prepended by their namespace if there is one)
+ into subscribed_folders. INBOX subscription support needs work,
+ since we always show it, regardless of it's subscribed state.
+ (folder_subscribed): new function. just look up the folder_path
+ in the hashtable.
+ (subscribe_folder): new function. use the imap SUBSCRIBE command,
+ and if successful add it to the hashtable.
+ (unsubscribe_folder): new function. use the imap UNSUBSCRIBE
+ command, and if successful remove it from the hashtable.
+
+2000-10-24 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Fill in the
+ message_count and unread_message_count flags (if !fast).
+
+2000-10-23 Dan Winship <danw@helixcode.com>
+
+ * camel-object.h: #include gnome-i18n.h (and gnome-defs.h since
+ the former depends on it.)
+
+ * *: Add lots of _() and N_().
+
+2000-10-23 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add
+ camel-nntp-types.h.
+
+2000-10-23 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-command.c (imap_read_untagged): Fix a
+ "how could this have been working before" memory overrun bug
+ found by Vlad.
+
+ * camel-op-queue.[ch], camel-thread-proxy.[ch]: These should have
+ gone away a long time ago.
+
+2000-10-20 Chris Toshok <toshok@helixcode.com>
+
+ * providers/Makefile.am (SUBDIRS): re-enable the nntp provider.
+
+2000-10-20 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-store.c (build_folder_info): add
+ function to build a tree from the nntp group names (using '.' as a
+ heirarchy separator.) #ifdefed INFO_AS_TREE only.
+ (build_folder_info_from_grouplist): if INFO_AS_TREE is selected,
+ call build_folder_info instead of appending a new CamelFolderInfo
+ to our list.
+ (ensure_news_dir_exists): use e_mkdir_hier instead of failing if a
+ parent directory (~/evolution/news generally) isn't there.
+
+2000-10-19 Chris Toshok <toshok@helixcode.com>
+
+ * camel-folder-search.c: #include <sys/types.h> before <regex.h>
+
+2000-10-19 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-utils.c (imap_parse_list_response):
+ Fix a bug with "INBOX" (or anything else with NIL hierarchy
+ separator) as the namespace.
+
+ * providers/imap/camel-imap-folder.c (imap_refresh_info): Emit
+ message_changed and folder_changed as appropriate.
+
+2000-10-19 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c (camel_folder_refresh_info): Update comment here
+ so refresh_info isn't just for reconnects any more. Make the
+ default implementation a no-op rather than an error.
+
+ * providers/nntp/camel-nntp-folder.c: Move refresh_info impl into
+ camel_nntp_folder_new, since it would have leaked memory and not
+ done anything useful if it was called later.
+
+ * providers/mbox/camel-mbox-folder.c: Remove no-longer-necessary
+ refresh_info impl.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ Update imap_folder->exists, but don't actually load the new
+ messages. This is a temporary workaround to deal with the IMAP
+ provider stealing the message list focus at annoying times.
+ (imap_copy_message_to, imap_move_message_to): Emit a
+ folder_changed by hand, for now.
+
+2000-10-19 Ettore Perazzoli <ettore@helixcode.com>
+
+ * providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Add
+ `camel-imap-stream.h'.
+
+ * Makefile.am (libcamelinclude_HEADERS): Add `camel-charset-map.h'
+ and `camel-charset-map-private.h'.
+
+2000-10-18 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-part.c (camel_mime_part_set_description): The correct
+ fix this time - the description should be encoded here and not in
+ the camel-medium layer.
+
+2000-10-30 Not Zed <NotZed@HelixCode.com>
+
+ * camel-folder.c (camel_folder_change_info_add_update): Fixed the
+ changeset logic, which was completely wrong.
+
+2000-10-27 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.c (quoted_encode_step): Removed is_blank() stuff.
+ (header_decode_init): When we set the 'space' bit, dont clear all
+ the others.
+ (quoted_encode): Put back the safemask. Yes we totally need it,
+ see rfc 2047 section 5, parts (1) and (3).
+ (CHARS_PSPECIAL): Remove '=' and '_' from the list of allowed
+ characters (this is an allowed list, not a not-allowed list, like
+ the ESPECIAL).
+ (camel_mime_special_table): Updated for fixes to definitions.
+ (CHARS_ESPECIAL): Added '_' to list of characters that should be
+ encoded.
+
+2000-10-26 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_update):
+ Use the new camel_folder_change_info_* stuff to build the update
+ diff, rather than doing it ourselves.
+
+ * camel-folder.c (camel_folder_change_info_add_source): Add a
+ 'source' list, used to create change lists.
+ (camel_folder_change_info_add_source_list): Add a list of uid's,
+ convenience function.
+ (camel_folder_change_info_add_update): Add a uid to the list of
+ uid's in the new updated list.
+ (camel_folder_change_info_add_update_list): Add a bunch of uid's
+ at once for the same purpose.
+ (camel_folder_change_info_build_diff): Take the source list, the
+ update list, and find the differences, building on the added or
+ removed list as appropriate.
+
+2000-10-20 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-summary.c (removed_uids): REnamed from
+ add_uid.
+ (camel_mbox_summary_update): Oops, fix the reversed logic for
+ determining the uid changesets.
+
+ * camel-folder.c (message_changed): Oops, we want to change the
+ uid, not add it.
+
+2000-10-19 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Added a
+ change list argument, and add expunged uid's to it.
+
+ * providers/mh/camel-mh-folder.c (mh_init): Setup the change list.
+ (mh_finalize): And free it.
+ (mh_sync): Track changes, and send a folder_changed signal as
+ appropriate.
+ (mh_expunge): Likewise.
+ (mh_append_message): Add the new uid to the change list and
+ trigger a folder_changed event.
+
+ * providers/mbox/camel-mbox-folder.c (camel_mbox_folder_new):
+ Setup a mbox list of changes structure.
+ (mbox_finalize): And free it.
+ (mbox_expunge): Include the change list with the folder_changed
+ event, and clear it off.
+ (mbox_sync): And the same for when we are just syncing the folder.
+ (mbox_append_message): And do the same here, after we've updated
+ the folder.
+
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_build_from): Use gmtime_r to get the time
+ thread-safely.
+ (camel_mbox_summary_sync): Added a changeinfo argument. Add any
+ removed or changed messages to the changelists as appropriate.
+ (camel_mbox_summary_update): Added a changeinfo argument.
+ Genereate a list of added/removed uid's based on the difference
+ before and after rebuilding the summary.
+
+ * camel-folder.c (camel_folder_change_info_new):
+ (camel_folder_change_info_add_uid):
+ (change_info_add_uid):
+ (camel_folder_change_info_remove_uid):
+ (camel_folder_change_info_change_uid):
+ (change_info_clear):
+ (camel_folder_change_info_clear):
+ (camel_folder_change_info_free):
+ (change_info_cat):
+ (camel_folder_change_info_cat): Bunch of utility functions for
+ working with change info lists.
+ (camel_folder_init): Init the change info list.
+ (camel_folder_finalize): And free it.
+ (thaw): Changed to pass through a list of changes, or to get the
+ changed message uids from the camelfolderchangeinfo struct, and
+ reset it.
+ (folder_changed): Add the changed lists to the frozen change list
+ if we are frozen.
+ (message_changed): Add the message to the changed list if we are
+ in the frozen state.
+
+ * camel-folder.h (CamelFolderChangeInfo): New structure to hold
+ information for the folder_changed event.
+
+2000-10-18 Ettore Perazzoli <ettore@helixcode.com>
+
+ * camel-mime-filter-charset.c (complete): Put a zero at the start
+ of the outbuf.
+
+2000-10-18 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-part.c (add_header): No, we must not encode the
+ headers here. These interfaces ARE raw interfaces as they are
+ defined in camel_medium. Also removed a bogus/meaningless FIXME.
+ (set_header): Likewise here, we must not.
+ (process_header): Removed another bogus comment.
+
+ * camel-object.c (shared_is_of_type): Comment out the spitting of
+ a big warning when we're trying to determine types from code.
+
+ * providers/mbox/camel-mbox-summary.c
+ (message_info_new_from_parser): Only call ibex funcitons if we
+ have an index.
+
+ * providers/mh/camel-mh-summary.c (camel_mh_summary_add): Only
+ call ibex functions if we have an index.
+ (remove_summary): Likewise.
+ (camel_mh_summary_check): Likewise.
+
+ * providers/nntp/camel-nntp-store.c (nntp_store_get_folder):
+ get_folder -> flags argument.
+
+ * providers/vee/camel-vee-store.c (vee_get_folder): create->flags.
+
+ * providers/pop3/camel-pop3-store.c (get_folder): Changed create
+ -> flags.
+
+ * providers/imap/camel-imap-store.c (get_folder): Added flags
+ argument.
+
+ * providers/mh/camel-mh-folder.c (camel_mh_folder_new): Added
+ flags argument, and fixed code appropriately.
+
+ * providers/mh/camel-mh-store.c (get_folder): Added flags argument.
+
+ * camel-folder-search.c (message_body_contains): Perform a regex
+ match on the contents of messages. This wont quite work yet as
+ message contents are encoded when written to a stream.
+ (build_match_regex): Converts a number of strings into a regex
+ matching pattern, escaping special chars.
+ (match_message): match a single message from a folder, by uid.
+ Slow.
+ (search_body_contains): Changed to support matching where no index
+ is supplied. Matches are performed by retrieving message
+ contents, etc.
+ () WTF? camel should not be including any widget headers.
+
+ * providers/mbox/camel-mbox-folder.c (camel_mbox_folder_new):
+ Added flags argument.
+ (mbox_refresh_info): Changed into a NOP, the refresh info code
+ moved into the new function.
+ (camel_mbox_folder_new): If we have an index requested, build one,
+ otherwise, remove an old one, or just dont do anything.
+
+ * providers/mbox/camel-mbox-store.c (get_folder): Changed create
+ to flags, changed code to suit.
+
+ * camel-store.c (camel_store_get_folder): Changed create to flags.
+ (get_folder_internal): And here.
+ (get_folder): And here too.
+
+ * camel-store.h (camel_store_get_folder): Change the create
+ argument to be a flags argument.
+
+2000-10-17 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_refresh_info): Remove
+ cached info at the end of the summary when the folder shrinks
+ between sessions. Also remove an untrue comment.
+ (camel_imap_folder_new): Move the summary creation to after the
+ folder selection again, since it depends on the uidvalidity
+ having been set.
+
+ * providers/imap/camel-imap-store.c (get_folder): Fix up
+ summary_file to not include the namespace twice.
+
+2000-10-17 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-part.c (set_header): Encode the header value.
+ (add_header): Same.
+
+2000-10-17 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-filter.c: Added some malloc check debugging stuff.
+
+ * camel-mime-parser.c
+ (struct _header_scan_state): Removed top_part, top_start, and
+ pending. I can't even remember why they were there, and they're
+ not used anymore.
+
+ * camel-mime-filter-basic.c (filter): Forgot to up the space here
+ too.
+
+2000-10-14 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-filter-basic.c (complete): Ok, so we hit a fixme, 3x
+ just wasn't enough for some sequences.
+
+2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-command.c
+ (imap_read_response): Don't imap_next_word(respbuf + 2), instead
+ use imap_next_word(respbuf) or else we'll skip over the second
+ token.
+
+2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-command.c
+ (camel_imap_response_extract): Don't free 'resp' as it doesn't
+ point to the beginning of the allocated data, instead free
+ response->untagged->pdata[i]. Also, if '*resp' is equal to a space
+ character, then set resp = imap_next_word (resp) rather than
+ expecting resp++ to work (there's a list broken IMAP daemons that
+ like to put extra spaces between tokens).
+ (imap_read_response): Don't expect 'respbuf+2' to be where the
+ untagged number response to start (see above fix for an
+ explanation).
+
+2000-10-16 Chris Toshok <toshok@helixcode.com>
+
+ * camel-service.c (get_path): when using the construct (flags &
+ CAMEL_SERVICE_URL_NEED_*) make sure to do ((flags &
+ CAMEL_SERVICE_URL_NEED_*) == CAMEL_SERVICE_URL_NEED_*)
+ (check_url): same.
+
+2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_disconnect): Only send
+ the LOGOUT command if the store is connected.
+ (imap_connect): Set the 'connected' state to TRUE when we
+ successfully connect.
+ (get_folder_info): if (!topfi), 'topfi' was allocated but then
+ 'fi' was set. I think Dan meant to set topfi since fi is an
+ uninitialized value at this point.
+
+ * providers/imap/camel-imap-command.c (imap_read_response): Check
+ for the untagged BYE response and set the 'connected' state to
+ FALSE if we receive the BYE response. Return NULL if we get a BYE
+ response.
+
+2000-10-16 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_info): Deal with
+ the possibility of not getting a LIST response back for the top
+ level.
+
+2000-10-12 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-summary.c: Simple subclass of
+ CamelFolderSummary that also keeps a UIDVALIDITY value (and
+ doesn't, for the moment, build content info).
+
+ * providers/imap/camel-imap-folder.c:
+ (various): Use a CamelImapSummary to store/fetch summary info.
+ (camel_imap_folder_new): Take a path to a file to use for the
+ summary. Set the folder's permanent_flags correctly according to
+ the server response. Read in the summary (checking the
+ UIDVALIDITY) and update it if it's out of date.
+ (imap_refresh_info): Just fetch UIDs and flags. If the UIDs all
+ match, update the flags as needed and be done with it. Otherwise,
+ delete messages that have been expunged from the server and fetch
+ full summary info for any new messages.
+ (imap_sync): Save the summary to disk.
+ (imap_update_summary): Renamed from imap_get_summary_internal. Can
+ now be told to get summary for only a subset of messages. Use
+ camel-mime-utils functions rather than rolling our own header
+ parsing.
+ (imap_get_message_info_internal): Merged into imap_update_summary.
+ (imap_set_message_flags): Don't marked the message FOLDER_FLAGGED
+ if we're not actually changing the value of any of the flags.
+ (camel_imap_folder_changed): Deal with EXISTS rather than RECENT.
+
+ * providers/imap/camel-imap-store.c (imap_connect): Call
+ camel_session_get_storage_path and save the value.
+ (get_folder): Create a local directory to store summary
+ information and pass a summary file name to camel_imap_folder_new.
+ Don't call camel_folder_refresh_info from here any more since
+ camel_imap_folder_new does it again.
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): Add a
+ special case to this to make it possible to get the repsonses from
+ a SELECT and still have store->current_folder be updated
+ correctly.
+ (imap_read_response): parse EXISTS rather than RECENT
+
+ * camel-session.c (camel_session_get_storage_path): Use
+ e_mkdir_hier.
+
+ * camel-folder-summary.c (camel_folder_summary_remove_index): New
+ function.
+
+ * camel-mime-utils.c (header_raw_append_parse): fix this.
+ (camel-mime-parser.c doesn't use this code because of the MEMPOOL
+ optimization, so nothing was ever actually calling it before.)
+
+2000-10-11 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-part.h (struct _CamelMimePart): Removed
+ temp_message_buffer, and content_input_stream fields which seem to
+ have come from nowhere, and are unused.
+
+ * camel-mime-utils.c: Added a note about touching this file.
+ Nobody is to touch it without asking me first. That goes for you
+ too Jeff.
+ (header_decode_text): In what way is this broken?
+
+2000-10-10 Not Zed <NotZed@HelixCode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary_internal):
+ Fix camel_summary_* function rename
+ (imap_get_message_info_internal): Likewise.
+
+ * camel-mime-parser.c (camel_mime_parser_finalise): Fixed a spelling mistake.
+
+ * camel-folder-summary.c (camel_summary_format_address): Uh, why
+ do we encode and then decode here ... sigh. This is not the way
+ to fix this.
+ (camel_folder_summary_format_address): Renamed to a proper name,
+ this was only supposed to be a private function.
+ (camel_folder_summary_format_string): Likewise. Oh i see why it
+ was made public, code reuse by cut & paste. Joy.
+
+2000-10-11 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-store.c (nntp_store_unsubscribe_folder): remove the leading '/'.
+ (nntp_store_subscribe_folder): same.
+ (nntp_store_folder_subscribed): same.
+
+2000-10-11 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_move_message_to): Quote
+ the mailbox name as it may contain spaces.
+ (imap_copy_message_to): Same.
+
+2000-10-10 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-store.c
+ (build_folder_info_from_grouplist): fill in message_count and
+ unread_message_count properly.
+
+ * providers/nntp/camel-nntp-newsrc.h: reformat.
+
+ * providers/nntp/camel-nntp-grouplist.c
+ (camel_nntp_get_grouplist_from_file): remove spew.
+
+ * providers/nntp/camel-nntp-newsrc.c
+ (camel_nntp_newsrc_group_get_num_articles_read): new function.
+ (camel_nntp_newsrc_group_get_highest_article_read): robustification.
+
+2000-10-10 Joe Shaw <joe@helixcode.com>
+
+ * providers/imap/camel-imap-store.c
+ (parse_list_response_as_folder_info): Check before dereferencing the
+ sep pointer.
+
+2000-10-10 Jacob "Ulysses" Berkman <jacob@helixcode.com>
+
+ * camel-*.c: teach camel about "its" vs. "it's"
+
+2000-10-09 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-store.c (finalize): write out the
+ newsrc.
+ (nntp_store_get_name): if @brief, just return host.
+
+ * providers/nntp/camel-nntp-newsrc.c: robustification and bug
+ fixes.
+
+2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-folder-summary.c (camel_summary_format_address): Decode
+ the resulting string.
+
+2000-10-06 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-grouplist.c: new file.
+
+ * providers/nntp/camel-nntp-grouplist.h: new file.
+
+ * providers/nntp/camel-nntp-types.h: new file.
+
+2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-utils.c (quoted_encode): Fix so that we don't encode
+ every single char in the word. Also, do we need a safemask? I
+ don't see why we would.
+ (header_encode_string): Don't strip off the last char!!
+
+2000-10-06 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add
+ camel-nntp-grouplist.h
+ (libcamelnntp_la_SOURCES): add camel-nntp-grouplist.c
+
+ * providers/nntp/camel-nntp-provider.c: add our own hash functions
+ for nntp urls.
+
+ * providers/nntp/camel-nntp-newsrc.c
+ (camel_nntp_newsrc_group_is_subscribed): new function.
+ (camel_nntp_newsrc_subscribe_group): new function.
+ (camel_nntp_newsrc_unsubscribe_group): new function.
+
+ * providers/nntp/camel-nntp-newsrc.h: add prototypes for
+ _group_is_subscribed, _subscribe_group, and _unsubscribe_group.
+
+ * providers/nntp/camel-nntp-store.c
+ (build_folder_info_from_grouplist): new function.
+ (nntp_store_get_folder_info): add subscribed_only_parameter. if
+ it's FALSE, load the grouplist and call
+ build_folder_info_from_grouplist.
+ (nntp_store_folder_subscribed): implement.
+ (nntp_store_subscribe_folder): implement.
+ (nntp_store_unsubscribe_folder): implement.
+ (camel_nntp_store_init): add CAMEL_STORE_SUBSCRIPTIONS to the
+ store's flags.
+
+ * providers/mh/camel-mh-store.c (get_folder_info): add
+ subscribed_only parameter.
+
+ * providers/mbox/camel-mbox-store.c (get_folder_info): add
+ subscribed_only parameter.
+
+ * providers/imap/camel-imap-store.c (get_folder_info): add
+ subscribed_only parameter.
+
+ * camel-store.c (camel_store_supports_subscriptions): new function.
+ (camel_store_folder_subscribed): new function.
+ (camel_store_subscribe_folder): new function.
+ (camel_store_unsubscribe_folder): new function.
+
+ * camel-store.h: add prototypes and virtual functions for the
+ subscribe implementation. also, add a subscribed_only argument to
+ camel_store_get_folder_info.
+
+2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-utils.c (header_address_list_format_append): Encode
+ the name part of the address and don't quote the name.
+ (header_decode_text): Rewrote from scratch, the old code was badly
+ broken.
+
+2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-message.c (camel_mime_message_set_reply_to): Use the
+ camel_address_encode function again.
+ (camel_mime_message_set_from): Same.
+
+2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-utils.c (quoted_encode_step): Modified to not encode
+ space chars in the middle of a line.
+ (isblank): New macro if we're not on a system with the GNU isblank
+ extension.
+
+ * camel-mime-message.c (camel_mime_message_set_from): Reversed my
+ changes, don't header_encode_phrase - it generates broken headers.
+ (camel_mime_message_set_reply_to): Same.
+
+2000-10-04 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-utils.c (camel_nntp_get_headers):
+ revert to old method (only use XOVER if OVER is supported.)
+
+ * providers/nntp/camel-nntp-store.c
+ (camel_nntp_store_get_overview_fmt): handle the case where the
+ OVER extension isn't listed but LIST OVERVIEW.FMT works (again,
+ INN 2.2). enable the OVER extension in this case.
+
+2000-10-04 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): return a
+ gboolean so we can tell if this command worked. we can't key off
+ the OVER extension being present because at least one server (INN
+ 2.2) doesn't report the OVER extension but implements the XOVER
+ command. This could of course just be because I'm a loser for
+ thinking they were related in the first place.
+ (camel_nntp_get_headers): always try XOVER first, and if it fails
+ revert to the slow method.
+
+2000-10-04 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/camel-mbox-store.c (get_folder): Fix a case where
+ a variable was free'd and then possibly used in an error message.
+
+2000-10-04 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-provider.c
+ (camel_provider_module_init): news: -> nntp:.
+
+2000-10-04 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-store.c (nntp_store_get_folder_info):
+ use "nntp:" instead of "news:" since "news:" urls aren't supposed
+ to have host/user/port info in them. also, if there's a user
+ defined in the url, put it in the urls for our folders.
+
+2000-10-04 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-auth.c (camel_nntp_auth_authenticate):
+ borrow some code from the imap provider to query the user for
+ their password, and pass the user/passwd to nntp. be extra
+ paranoid and zero out the password before freeing it.
+
+ * providers/nntp/camel-nntp-store.c (camel_nntp_store_init): add
+ ALLOW_USER/ALLOW_PASSWORD/ALLOW_AUTH to the url flags.
+ (nntp_store_query_auth_types_generic): return our list of
+ auth_types.
+ (nntp_store_query_auth_types_connected): broken, return same as in
+ query_auth_types_generic.
+
+2000-10-04 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect): IMAP4
+ (pre-rev1) doesn't support the 'LIST "" ""' idiom, so don't use
+ it. Just assume the dir_sep is '/'. Shrug.
+
+2000-10-04 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-message.c (camel_mime_message_set_reply_to): Use
+ header_encode_phrase instead.
+ (camel_mime_message_set_from): Same.
+
+2000-10-04 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.c (header_content_type_is): Handle the case
+ where ct != NULL, but type and subtype are, and also match that
+ against text/plain.
+
+ * camel-folder-summary.c: Bump summary file version.
+ (message_info_save): Save the size from the messageinfo.
+ (message_info_load): Load the size from the summary file.
+ (message_info_load): Fixed up the time_t saving/loading. There
+ was a reason the warning was left there ... obviously nobody could
+ read the comment "/* warnings, leave them here */", why do i even
+ bother.
+ (camel_folder_summary_decode_time_t): Decode a time_t value from
+ the summary file.
+ (camel_folder_summary_encode_time_t): Encode a time_t value to the
+ summary file.
+
+2000-10-03 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-command.c (camel_imap_command): Quote
+ the mailbox name when sending a SELECT request otherwise mailboxes
+ with spaces in their names will cause problems.
+
+ * camel-mime-message.c (camel_mime_message_set_reply_to): encode
+ before setting.
+ (camel_mime_message_set_from): Same.
+
+2000-10-03 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-command.c: New file containing
+ camel_imap_command and friends. Major camel_imap_command rewrite
+ to remove duplicated code, make the parsing of literals be
+ more safe/correct, deal with RECENT/EXPUNGE responses more
+ consistently, and make it possible to implement the AUTHENTICATE
+ command.
+
+ * providers/imap/camel-imap-utils.c (imap_parse_nstring): New
+ function, to parse an IMAP "nstring".
+
+ * providers/imap/camel-imap-store.c: Move command stuff to
+ camel-imap-command.c. Update for camel_imap_command changes.
+
+ * providers/imap/camel-imap-folder.c: Update for
+ camel_imap_command changes.
+ (imap_append_message): CRLF filter the message before sending it.
+
+ * providers/imap/Makefile.am: Add camel-imap-command.[ch], remove
+ camel-imap-stream.[ch] for now.
+
+2000-10-02 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-message.c (camel_mime_message_has_8bit_parts): New
+ convenience function to determine if there are any 8bit mime parts
+ in a mime message.
+ (camel_mime_message_encode_8bit_parts): New convenience function
+ to recursively reencode all 8bit mime parts to either
+ quoted-printable or base64 depending on which would be the best
+ encoding for that part.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): If the mime
+ message contains 8bit parts and the server doesn't support 8bit
+ transfers, reencode those parts before proceding with the send.
+ (smtp_mail): If the mime message contains 8bit parts and the
+ server supports the 8BITMIME extension to SMTP, notify the server
+ that we'll be sending it 8bit mime parts.
+ (_send_to): Find out if the message contains 8bit parts.
+
+2000-10-02 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (_send_to): Use the
+ CamelInternetAddress parser.
+ (smtp_get_email_addr_from_text): deprecated.
+
+2000-10-02 Dan Winship <danw@helixcode.com>
+
+ * camel-provider.h: Remove default_ports.
+
+ * camel-remote-store.c (remote_connect): Get default_port from
+ CamelRemoteStore rather than CamelProvider.
+
+ * providers/{imap,nntp,pop3}/camel-*-store.c: Initialize
+ CamelRemoteStore::default_port
+
+ * providers/*/camel-*-provider.c: Remove default_ports.
+
+2000-10-02 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.[ch]: Remove
+ camel_folder_{get,free}_subfolder_info, as we want to be able to
+ scan the whole subfolder tree without having to open any folders,
+ so this needs to be in CamelStore. Remove can_hold_folders and
+ can_hold_messages flags; things that don't hold messages are no
+ longer considered CamelFolders.
+
+ * camel-folder-summary.[ch]: Remove CamelFolderInfo stuff.
+
+ * camel-store.[ch]: Add camel_store_{get,free}_folder_info, as
+ well as camel_store_free_folder_info_full and ..._nop for default
+ implementations, and camel_folder_info_free and
+ camel_folder_info_build as convenience functions. Turn
+ CamelFolderInfo into a tree structure and also add an "url"
+ member.
+
+ * providers/*/camel-*-folder.c: Remove subfolder_info and can_hold
+ stuff.
+ * providers/*/camel-*-store.c: Add folder_info stuff.
+
+ * providers/imap/camel-imap-folder.c (imap_summary_free): Free the
+ summary elements with camel_message_info_free, not
+ camel_folder_info_free. Oops.
+
+ * providers/imap/camel-imap-utils.c: const poison
+
+2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c: Fixed some memory leaks.
+ (camel_smtp_transport_init): Initialize supports_8bit to FALSE.
+ (smtp_helo): If server supports 8bit, set supports_8bit to TRUE.
+
+ * camel-transport.h (struct _CamelTransport): Added variable
+ gboolean supports_8bit (we'll need this eventually? - see bugzilla
+ bug #53)
+
+ * providers/smtp/camel-smtp-transport.c
+ (smtp_get_email_addr_from_text): Ugh, no wonder people were
+ getting illegal seek warnings *sigh*. I guess I can only blame
+ myself for this one though :-(
+
+2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (_send_to): Don't send the
+ recipient data through smtp_get_email_addr_from_text - this is a
+ complete waste. In fact, we don't want to have to use that
+ function ever.
+
+ * camel-internet-address.c, camel-address.c: Added some gtk-doc
+ comments.
+
+2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-utils.c (header_encode_string): Make sure to add the
+ space char after an encoded word when the encoding is iso-8859-1.
+
+2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): When
+ getting a literal string response, don't include the \r\n after
+ the closing } (as in: "... {798}\r\n...")
+
+ * providers/imap/camel-imap-stream.c (stream_read): Same.
+
+2000-09-28 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.c (header_fold): New function to fold headers.
+
+2000-09-27 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-parser.c (folder_scan_header): If we had an empty
+ header, then it must be end of the headers too.
+ (folder_scan_init): No we dont need to init the outbuf with a nul
+ terminator.
+
+ * camel-folder-summary.c (camel_folder_summary_set_uid): New
+ function to reset the uid to a higher value.
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
+ "something failed (yo!)" what sort of crap is this? Fixed all the
+ indenting again, what wanker keeps running stuff through indent?
+ (message_info_new): Check the uid we loaded off the disk, if it
+ existed already, assign a new one. If it didn't then make sure
+ the nextuid is higher.
+
+ * camel-charset-map.c: New file, used to build a large unicode
+ decoding mapping table, and use it to determine what is the
+ lowest charset a given word can be encoded with. Uses tables from
+ libunicode's source.
+
+ * camel-internet-address.c (internet_encode): Use
+ header_phrase_encode to properly encode the fullname, as required.
+ refixed indenting. Who keeps doing that?
+ (camel_internet_address_find_address): Changed fatal return/warnings
+ into assertions.
+
+ * camel-mime-utils.c (header_raw_append_parse): Check : explicitly
+ (removed from is_fieldname() macro).
+ (camel_mime_special_table): Changed to short, so we can represent
+ more bit types.
+ (quoted_encode): Take a mask of the safe chars for this encoding.
+ (header_address_decode): Removed a #warning that makes no sense
+ anymore.
+ (header_decode_date): Fixed the 'broken date' parser code, if it
+ ever decoded it it just threw away the result.
+ (header_encode_string): Use better charset matching for encoding
+ strings as well.
+
+2000-08-31 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Save
+ the index if we do a sync.
+ (camel_mh_summary_check): Save the index here too. Probably.
+
+2000-09-27 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_command_extended):
+ Return untagged data in a GPtrArray rather than a string, since it
+ saves processing time and is much easier to deal with for several
+ commands. Update for camel_imap_folder_changed change.
+ (camel_imap_fetch_command): Update for camel_imap_folder_changed
+ change.
+ (imap_connect, imap_folder_exists): Update for
+ camel_imap_command_extended change.
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_message_count_internal,
+ imap_get_subfolder_info_internal, imap_search_by_expression):
+ Update for camel_imap_command_extended change.
+
+ (imap_get_summary_internal, imap_get_message_info_internal): Use
+ camel_imap_fetch_command here now to get around the
+ camel_imap_command_extended change.
+
+ (camel_imap_folder_changed): turn expunged into a GArray of ints
+ rather than a GPtrArray of strings representing ints.
+
+2000-09-26 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_message_count_internal): Quote the folder name as it may
+ contain spaces.
+ (imap_get_subfolder_info_internal): Same.
+
+ * providers/imap/camel-imap-utils.c (imap_parse_list_response): Do
+ proper unquoting for folder names.
+ (func_get_current_date): Implemented.
+
+ * providers/imap/camel-imap-store.c
+ (imap_folder_exists): Quote the folder name as it may have spaces.
+ (imap_create): Same.
+ (check_current_folder): Same.
+
+2000-09-22 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_subfolder_info_internal): The root folder's name is "",
+ not the namespace.
+ (camel_imap_folder_new): constify folder_name.
+
+ * providers/imap/camel-imap-store.c (get_folder): Create the
+ folder with folder_name, not folder_path.
+ (camel_imap_command_preliminary): Don't free cmdid here.
+
+2000-09-21 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-utils.c (imap_create_flag_list): New
+ function to convert Camel flags to an IMAP flag_list.
+ (imap_parse_flag_list): Contrariwise.
+
+ * providers/imap/camel-imap-store.c (camel_imap_command_*): Make
+ the @ret arg actually optional, as (mostly) documented.
+ (various): Don't pass "&result" to camel_imap_command_* if we're
+ just going to immediately free it. Don't record status if we're
+ not going to look at it.
+
+ * providers/imap/camel-imap-folder.c: Likewise.
+ (imap_summary_free): Use camel_folder_info_free.
+ (imap_sync): Use imap_create_flag_list. Clear
+ CAMEL_MESSAGE_FOLDER_FLAGGED after syncing so we don't keep
+ re-syncing.
+ (imap_append_message): Use imap_create_flag_list. Don't leak the
+ memstream if the append fails.
+ (imap_move_message_to): Use camel_folder_delete_message rather
+ than doing it by hand.
+ (imap_get_summary_internal, imap_get_message_info_internal): Use
+ imap_parse_flag_list and header_raw_clear.
+ (camel_imap_folder_changed): Use camel_message_info_free.
+
+2000-09-21 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder_name): INBOX is
+ case-insensitive.
+ (get_root_folder_name): Make the root folder "" rather than "/".
+ (get_folder): Update for root folder name change.
+ (camel_imap_store_get_toplevel_dir): Removed. (Unused, unneeded.)
+ (camel_imap_store_folder_path): New function to turn a Camel
+ folder name into the corresponding namespaced IMAP path.
+ (imap_folder_exists): Make this take a store and a path rather
+ than a folder.
+ (imap_create): Likewise
+ (get_folder): Update for camel_imap_store_folder_path and other
+ changes.
+ (check_current_folder): Likewise.
+
+ * providers/imap/camel-imap-folder.c: Change a bunch of CamelStore
+ variables to CamelImapStore (and add a few more) to prevent excess
+ gratuitous casting. Use camel_imap_store_folder_path where
+ appropriate.
+ (camel_imap_folder_new): Update for root folder name change.
+
+2000-09-19 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Use the
+ linewrap filter to achieve full RFC0821 compliance.
+
+ * camel-mime-filter-linewrap.[c,h]: New mime-filter to word-wrap.
+
+2000-09-19 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-internet-address.c (internet_encode): When encoding the
+ internet address, quote the name as the name may have commas or
+ any other token which may later confuse our address parser.
+
+2000-09-19 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_subfolder_info_internal): Fix the case where INBOX
+ isn't returned in the folder listing.
+
+2000-09-19 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c: (init): Removed
+ (camel_folder_init, camel_folder_construct): New object init
+ function and public object constructor to replace the old init
+ method in a more Gtk-like fashion.
+
+ (get_parent_folder, camel_folder_get_parent_folder): Removed. No
+ CamelFolder subclass was ever setting the parent_folder member, no
+ code has ever needed to look at it, and fixing it would actually
+ be pretty hard.
+
+ (get_subfolder_info, camel_folder_get_subfolder_info): Renamed
+ from ..._names. Deals in CamelFolderInfo now.
+ (free_subfolder_info, camel_folder_free_subfolder_info): Likewise.
+
+ (get_subfolder, camel_folder_get_subfolder): Removed.
+ CamelFolderInfo contains the subfolder's full name, so this is
+ unnecessary now, and removing it lets us get rid of the
+ CamelFolder separator member, which is needed for the default
+ implementation of this function, but not otherwise needed for most
+ providers.
+
+ Also, lots of code style fixes.
+
+ * providers/*: Update CamelFolder subclasses for changes, although
+ none of them fill in the message counts in the CamelFolderInfo
+ yet.
+
+2000-09-18 Christopher James Lahey <clahey@helixcode.com>
+
+ * camel-folder-search.c, camel-folder-search.h,
+ camel-remote-store.c, providers/imap/camel-imap-folder.c,
+ providers/imap/camel-imap-store.c: Fixed the #include lines to
+ deal properly with gal.
+
+2000-09-17 Dan Winship <danw@helixcode.com>
+
+ * camel-folder-summary.h: update CamelFolderInfo
+ * camel-folder-summary.c (camel_folder_info_free): New function to
+ free the contents of a CamelFolderInfo
+
+2000-09-15 Dan Winship <danw@helixcode.com>
+
+ * camel.c (camel_init): Set camel_verbose_debug to TRUE if
+ CAMEL_VERBOSE_DEBUG is set in the environment.
+
+ * camel-remote-store.c (remote_send_line, remote_recv_line): only
+ log if camel_verbose_debug is TRUE.
+
+2000-09-14 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder): Don't use
+ dir_sep as top-level directory, use "/".
+
+ * providers/imap/camel-imap-folder.c (imap_expunge): Get rid of
+ unused variable.
+
+2000-09-13 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_expunge): Don't look at
+ the response of the command. camel_imap_command_extended()
+ processes EXPUNGE responses itself, so if we do it here too we
+ remove twice as many summary items as we should.
+
+2000-09-13 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_folder_exists): Rewrote
+ to take a third argument (gboolean *selectable) so that we can
+ find out if the folder is selectable or not as we look to see if
+ it exists. Also, don't use EXAMINE because that will not work on
+ non-selectable folders, so use LIST instead.
+ (get_folder): Check to see if the folder exists even vefore
+ calling imap_create as this will save time. If the folder does
+ exist, find out if it's selectable. Moved the call to refresh_info
+ here.
+
+ * providers/imap/camel-imap-folder.c (imap_get_uids): Check for a
+ NULL summary.
+ (camel_imap_folder_new): Don't call refresh_info here - call it in
+ get_folder() because we don't know if this folder even exists on
+ the server yet! And even if it does, we don't know if it can hold
+ messages or not yet.
+
+2000-09-12 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-parser.c (folder_scan_step): Make sure *datalength is
+ > 0 before calling camel_mime_filter_filter otherwise we will get
+ a segfault if the filter calls iconv().
+
+2000-09-08 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/nntp/camel-nntp-auth.c,
+ providers/nntp/camel-nntp-auth.h: Fixed a warning.
+
+2000-09-07 Dan Winship <danw@helixcode.com>
+
+ * camel-session.c (camel_session_get_storage_path): Make this not
+ leak.
+
+2000-09-07 Dan Winship <danw@helixcode.com>
+
+ * camel-session.c (camel_session_new): Make this take a path to a
+ directory that Camel can use for its own nefarious purposes.
+ (camel_session_get_storage_path): New function to return a path
+ that a service can use for its own nefarious sub-purposes.
+
+ * camel-service.c (camel_service_get_path): New method (and
+ useful default implementation) to get a (relative) pathname
+ corresponding to the service.
+
+2000-09-06 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (connect_to_server): Make KPOP
+ work again.
+
+2000-09-06 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-message.c (camel_mime_message_get_received_date):
+ Implemented (someone added these to camel-mime-message.h but never
+ implemented them!!) - though it may not be right.
+ (camel_mime_message_get_sent_date): Same.
+
+2000-09-05 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-part.c (camel_mime_part_get_filename): If a MIME part
+ has no Content-Disposition, but does have a "name" on the
+ Content-Type, return that as the filename.
+ (process_header): strstrip the Content-Description
+
+2000-09-05 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-utils.c (get_OVER_headers): care about
+ response code.
+ (get_HEAD_headers): same.
+ (camel_nntp_get_headers): same.
+
+ * providers/nntp/camel-nntp-store.h: get rid of
+ CAMEL_NNTP_OK/ERR/FAIL.
+
+ * providers/nntp/camel-nntp-store.c
+ (camel_nntp_store_get_extensions): take CamelException arg and
+ pass along to camel_nntp_command.
+ (camel_nntp_store_get_overview_fmt): same.
+ (nntp_store_connect): convert to using constants in
+ camel-nntp-resp-codes.h
+ (nntp_store_get_folder): make use of camel_nntp_folder_new.
+ (camel_nntp_command_send_recv): new function to deal with auth
+ challenge.
+ (camel_nntp_command): split out most of this function into
+ camel_nntp_command_send_recv. also, return the actual response
+ code instead of CAMEL_NNTP_OK/ERR/FAIL.
+
+ * providers/nntp/camel-nntp-resp-codes.h: new file.
+
+ * providers/nntp/camel-nntp-folder.h: prototype for
+ camel_nntp_folder_new.
+
+ * providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new): new
+ convenience function.
+ (nntp_folder_get_message): care more about the actual response
+ code.
+
+ * providers/nntp/Makefile.am (libcamelnntp_la_SOURCES): add
+ camel-nntp-auth.c.
+ (libcamelnntpinclude_HEADERS): add camel-nntp-auth.h.
+
+ * providers/nntp/camel-nntp-auth.h: new file.
+
+ * providers/nntp/camel-nntp-auth.c: new file.
+
+2000-09-05 Peter Williams <peterw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_folder_exists): Don't free the
+ result on error; the exception will have the relevant info.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Check for
+ exceptions here.
+
+ * providers/imap/camel-imap-store.c (imap_connect): Check the exception
+ on the refresh_folders call.
+
+ * providers/imap/camel-imap-store.h: Clean up some now-unused fields.
+
+ * camel.c (camel_init): Call unicode_init again, now that libunicode
+ will not initialize itself twice.
+
+2000-09-02 Lauris Kaplinski <lauris@helixcode.com>
+
+ * camel-folder-search (search_header_contains): Use e_utf8_strstrcase
+
+2000-09-01 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/imap/camel-imap-utils.c: Removed some unused
+ functions.
+
+2000-09-01 Peter Williams <peterw@helixcode.com>
+
+ * providers/nntp/camel-nntp-store.c (camel_nntp_command): Initialize
+ the statically-allocated CamelException so that it doesn't contain
+ junk data that camel_exception_set() may try to free.
+ (camel_nntp_store_get_extensions): Same.
+ (camel_nntp_store_get_overview_fmt): Same.
+
+ * providers/pop3/camel-pop3-store.c (camel_pop3_command): Typo
+ fix (if (*ret) -> if (ret)).
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Set the
+ port # back to what was specified ASAP, so that the hash of
+ the URL doesn't change (which causes a failure in
+ service_cache_remove that leads to a segfault).
+
+ * providers/imap/camel-imap-store.c (imap_connect): Clear the
+ exception after a failed LOGIN so that it doesn't pass through
+ to the upper level and make mail think that the login failed.
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): As above.
+
+2000-08-31 Peter Williams <peterw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (camel_pop3_store_get_type):
+ Implement POP3 with the CamelRemoteStore now.
+ (connect_to_server): Hack this a bit to get KPOP to work. Obey
+ the new connection semantics of the remote store (implicitly).
+ (query_auth_types_connected): Clear exceptions after attempts
+ to connect; the code at the bottom will catch hard errors.
+ Use camel_service_connect.
+ (camel_pop3_command): Take a CamelException; now, when an error
+ occurs, ret is set to NULL and the exception passes back the
+ appropriate information.
+ (pop3_get_response): Same as above.
+ (pop3_try_authenticate): Give camel_pop3_command its exception
+ and handle it properly.
+ (pop3_connect): Call the parent classfuncs. Don't disconnect
+ on error (done for us).
+
+ * providers/pop3/camel-pop3-folder.c: Obey the camel_pop3_command
+ semantics.
+
+ * camel-remote-store.c (remote_query_auth_types_connected): Don't
+ warn; just return NULL.
+ (remote_query_auth_types_generic): Same.
+ (remote_send_string): Filter out passwords in debugging output.
+
+ * providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Also
+ set the ALLOW_AUTH flag.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_init): Same.
+
+2000-08-31 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-store.c (camel_nntp_store_class_init):
+ remove get_folder_name.
+ (nntp_store_get_folder_name): remove.
+
+2000-08-31 Lauris Kaplinski <lauris@helixcode.com>
+
+ * camel-mime-part.c (write_to-stream): Use filter only if we have one
+
+2000-08-31 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-utils.c (get_OVER_headers): use
+ camel_remote_store_recv_line.
+
+ * providers/nntp/camel-nntp-folder.c (nntp_folder_get_message):
+ use camel_remote_store_recv_line to build message. also, free our
+ buffer so we don't leak like mad.
+
+ * providers/nntp/camel-nntp-store.c:
+ (camel_nntp_store_get_additional_data) remove.
+ (camel_nntp_store_get_extensions): use
+ camel_remote_store_recv_line.
+ (camel_nntp_store_get_overview_fmt): same. also, don't rely on
+ _get_additional_data anymore since it's easier to parse without.
+ (camel_nntp_command): use camel_remote_store_send_string and
+ camel_remote_store_recv_line.
+
+ * providers/nntp/camel-nntp-store.h: CamelRemoteStore is the
+ parent class now. remove istream/ostream since CamelRemoteStore
+ takes care of that for us. also remove the prototype for
+ camel_nntp_store_get_additional_data.
+
+ * providers/nntp/camel-nntp-newsrc.c (camel_nntp_newsrc_write):
+ make sure to clear dirty bit.
+ (camel_nntp_newsrc_read_for_server): don't worry about continually
+ trying to open the file - if it fails we just return an
+ unpopulated .newsrc file.
+
+2000-08-31 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-newsrc.c
+ (camel_nntp_newsrc_read_for_server): make this a bit more robust.
+ try to create an empty .newsrc file for the server if we can't
+ open it for reading. also, don't allocate everything until we've
+ opened the file.
+
+ * providers/nntp/camel-nntp-utils.c (get_OVER_headers): make use
+ of our overview field indices.
+ (camel_nntp_get_headers): only call get_OVER_headers if the
+ extension is present. warn if it's not - since get_HEAD_headers
+ needs work before it works.
+
+ * providers/nntp/camel-nntp-store.c
+ (camel_nntp_store_get_extensions): new function - query the server
+ for it's extensions.
+ (camel_nntp_store_get_overview_fmt): new function - query the
+ server for the overview format and build our table of the indices
+ we care about. support the "full" suffix on fields.
+ (nntp_store_connect): call camel_nntp_store_get_extensions and
+ camel_nntp_store_get_overview_fmt.
+
+ * providers/nntp/camel-nntp-store.h: add codes for extensions
+ found on news.mozilla.org. only one that we care about is OVER.
+ also, add CamelNNTPOverField and an enum of the overview fields
+ that we care about.
+
+2000-08-31 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-utils.c (imap_translate_sexp):
+ Reimplemented. It should now work correctly for most possible
+ VFolder rules.
+
+2000-08-31 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_command_extended):
+ Don't save any exceptions caused by camel_imap_folder_changed
+ (camel_imap_fetch_command): Same.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ Using a new way of calculating the first recent message that seems
+ more accurate. Also added code to make sure we don't accidently
+ add a duplicate summary.
+
+2000-08-31 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-part.c (write_to_stream): Use the proper type
+ checking function to check for text types.
+ (write_to_stream): If we have a charset on a text type that
+ isn't us-ascii or utf-8, then we need to reencode it, so add a
+ filter to do that too.
+ (write_to_stream): Fix some warnings/use the right constructor,
+ oops.
+ (write_to_stream): Rearrange the logic so it always does charset
+ conversion, and not just if we have a qp/base64 block.
+
+ * camel-mime-utils.c (append_latin1): New function - even though
+ its broken, we'll assume mailers send latin1 headers instead of
+ us-ascii. We just have to encode high chars into utf-8.
+ (header_decode_text): Call append_latin1 for appending unencoded
+ text segments.
+ (append_latin1): Do an additional mask for account for c's
+ undefined behaviour for sign extension whilst shifting right.
+
+2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_fetch_command):
+ Rewrote to ignore strings that look like server responses until it
+ is sure that it has finished reading the literal string response.
+
+2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-remote-store.c (remote_send_string): Don't wrap printed
+ strings in quotes, makes things messy
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): Updated
+ to use the camel_imap_fetch_command
+
+ * providers/imap/camel-imap-stream.c (stream_read): Updated to use
+ camel_imap_fetch_command
+
+ * providers/imap/camel-imap-store.c (camel_imap_command_extended):
+ No longer handles FETCH requests so no longer needs to be
+ concerned with checking to make sure that server responses are
+ valid (they have to be).
+ (camel_imap_fetch_command): New convenience function that handles
+ all FETCH requests
+
+2000-08-30 Peter Williams <peterw@helixcode.com>
+
+ * camel-remote-store.c (remote_connect): Unify with remote_post_connect.
+ (remote_disconnect): Unify with remote_pre_disconnect.
+ (camel_remote_store_class_init): Don't use the post_connect and
+ pre_disconnect classfuncs anymore ; they weren't especially useful.
+
+ * providers/imap/camel-imap-store.c (imap_connect): Use this again
+ instead of implementing post_connect.
+ (imap_disconnect): Analogous to above.
+
+ * camel-session.c (camel_session_get_service_connected): New function.
+ Like camel_session_get_service() but also connects to the service
+ if needed. camel_session_get_{store,transport} (defined in the header)
+ used this now, preventing annoying when-to-connect problems.
+
+ * camel-service.c (camel_service_new): Revert to the old behavior
+ of not connecting until told to do so. Otherwise doing auth
+ testing correctly is really hard.
+ (camel_service_connect): Fix behavior here (set the connected
+ flag).
+ (camel_service_disconnect): Unset the connected flag.
+
+2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c: General cleanup / moving
+ stuff around to make things easier to follow.
+
+2000-08-30 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-remote-store.c: Prevent exceptions from being overwritten
+
+ * providers/imap/camel-imap-folder.c (imap_expunge): Beautified
+ (imap_get_subfolder_names_internal): Removed old code as the
+ replacement code has now been tested and proven to work
+
+2000-08-29 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-utils.c: Removed old code that will
+ never be needed again
+
+ * providers/imap/camel-imap-store.c: Removed old code for
+ try_connect - will never need this code
+ (slurp_response): Update to make sure we aren't falsely detecting
+ EXPUNGE flags
+
+2000-08-29 Peter Williams <peterw@helixcode.com>
+
+ * camel-service.c (camel_service_connect): Uncomment this.
+ (camel_service_disconnect): Same.
+
+ * camel-remote-store.[ch]: New files. Abstract remote storages
+ (IMAP, POP3, NNTP) and hides the lower-level networky stuff.
+
+ * camel-service.c (camel_service_new): Take an extra argument, the
+ provider that created us, cause it's useful.
+ (camel_service_finalize): Unref our new provider member.
+
+ * camel-session.c (camel_session_get_service): Pass the proper number of
+ arguments to camel_service_new().
+
+ * camel-imap-store.c: Massive update: 1) use the CamelRemoteService to
+ make our life Very Easy (TM). 2) Change the semantics of all
+ camel_imap_command* functions to take exceptions, centralize tons of
+ duplicate code, and use the handy RemoteStore utility functions
+
+ * camel-imap-folder.c: Use the new semantics of camel_imap_command*
+
+ * camel-imap-stream.c: Same.
+
+2000-08-29 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_command_extended):
+ Updated to check for EXPUNGE notifications
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ Updated to account for messages which have been expunged (now
+ takes a new arg, a GPtrArray of message id's that have been
+ expunged)
+ (imap_expunge): Updated (we may want to just use the code in
+ folder_changed now instead of doing our own summary
+ expunging...but that can be fixed later)
+ (imap_append_message): Updated.
+ (imap_copy_message_to): Updated.
+ (imap_move_message_to): Updated.
+
+2000-08-28 Peter Williams <peterw@helixcode.com>
+
+ * camel-folder.c (camel_folder_refresh_info): New member function,
+ refresh_info, used for rereading folder state after its state has
+ somehow become unknown. Tries to preserve last-known status of
+ messages.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_refresh_info): Implement
+ ::refresh_info (split up ::init)
+
+ * providers/mbox/camel-mbox-store.c (get_folder): Call ::refresh_info.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Call
+ ::refresh_info once initialized.
+ (imap_refresh_info): New member function; reads the summary from
+ the server (used to be in camel_imap_folder_new; split out).
+
+ * providers/imap/camel-imap-store.c (imap_connect): Set
+ CamelService::connected a little early so that
+ camel_imap_command won't try to connect while already
+ connnecting.
+ (camel_imap_command*): Try to connect if not connected already.
+
+ * providers/pop3/camel-pop3-folder.c (pop3_refresh_info): Same as above.
+
+ * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Same
+ as above.
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Set
+ CamelService::connected a little early so that
+ camel_pop3_command won't try to connect while already
+ connecting
+ (connect_to_server): Same.
+
+ * providers/nntp/camel-nntp-folder.c (nntp_folder_refresh_info): Same
+ as above.
+
+2000-08-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): Fixed the
+ hack around quoted string responses - should now handle them
+ according to the specifications in the RFC
+
+ * providers/imap/camel-imap-stream.c (stream_read): Updated to
+ match the code currently used in camel-imap-folder.c
+
+2000-08-28 Ettore Perazzoli <ettore@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
+ Never ever free `tmpname' as it comes from `alloca()'!
+
+2000-08-26 Ettore Perazzoli <ettore@helixcode.com>
+
+ * camel-mime-utils.c (header_decode_text): Use `g_free()', not
+ `free()', to free `decword'.
+
+2000-08-25 Peter Williams <peterw@helixcode.com>
+
+ * camel.c (camel_init): Don't call unicode_init; code in e-util
+ will do it, and if unicode_init is called twice, you get an
+ infinite loop when looking up nonexistant encodings (patch
+ has been submitted to libunicode's maintainer).
+
+ * camel-provider.h: Add a new field, default_ports, which
+ helps the configuration code guess about how to make CamelURL's
+ from providers.
+
+ * providers/*/camel-*-provider.c: Specify default ports.
+
+2000-08-25 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_subfolder_names_internal): If the url path is "/" and
+ the folder path is "/", just LIST "" "*" (this should fix some
+ cyrus imapd problems). Also, INBOX is case insensitive so use
+ g_strcasecmp
+
+2000-08-24 Lauris Kaplinski <lauris@helixcode.com>
+
+ * camel-folder-summary.c (summary_build_content_info):
+ Use UTF-8 as default
+ * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser):
+ Use UTF-8 as default
+ * camel-mime-utils.c (rfc2047_decode_word): Use UTF-8
+
+2000-08-17 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mh/camel-mh-folder.c (mh_finalize): And here too.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_finalize): Close index
+ on exit.
+
+2000-08-23 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c (header_address_list_format_append): put
+ commas between addresses.
+
+2000-08-22 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c
+ (imap_protocol_get_summary_specifier): use BODY.PEEK, not BODY, so
+ we don't set the message \Seen.
+
+2000-08-22 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c: Fixed a small warning.
+
+2000-08-22 Peter Williams <peterw@helixcode.com>
+
+ * camel-service.c (camel_service_new): Connect automatically if the
+ URL is not empty.
+ (finalize): Disconnect automatically if connected.
+ (camel_service_query_auth_types): Split into two functions; one to
+ be called if we're connected to an actual server (_connected), one
+ to be called if we're just gauging the general authtypes supported
+ (_generic).
+ (is_connected): Remove.
+
+ * camel-store.c (camel_store_get_folder): Don't connect explicitly to
+ the service.
+
+ * providers/nntp/camel-nntp-store.c (query_auth_types_generic): Split
+ the query_auth_types function. Hook it up in _new.
+ (finalize): Don't try to disconnect here.
+
+ * providers/pop3/camel-pop3-store.c (query_auth_types_generic): Same.
+ (finalize): Don't try to disconnect here.
+
+ * providers/imap/camel-imap-store.c (query_auth_types_generic): Same.
+ (finalize): Don't try to disconnect here.
+
+ * providers/smtp/camel-smtp-transport.c (query_auth_types_generic): Split
+ the query_auth_types (dummy, in this case) function. Hook it up in _new.
+ (finalize): Don't try to disconnect here.
+
+2000-08-21 JP Rosevear <jpr@helixcode.com>
+
+ * providers/nntp/camel-nntp-folder.c (nntp_folder_get_subfolder_names):
+ Make sure newsrc is not null
+ (nntp_folder_get_subfolder_names): ditto
+
+ * providers/nntp/camel-nntp-newsrc.c
+ (camel_nntp_newsrc_get_subscribed_group_names): Programming check
+ for newsrc == NULL
+ (camel_nntp_newsrc_get_all_group_names): ditto
+ (camel_nntp_newsrc_write_to_file): ditto
+ (camel_nntp_newsrc_write): ditto
+
+2000-08-21 JP Rosevear <jpr@helixcode.com>
+
+ * providers/nntp/camel-nntp-store.c (camel_nntp_command):
+ Make sure respbuffer is not null before manipulating it.
+ If it is null, return CAMEL_NNTP_FAIL and a decent error
+ message.
+
+2000-08-18 Peter Williams <peterw@helixcode.com>
+
+ * camel-internet-address.c (internet_encode): If the name is "" we
+ weren't outputting anything; output the address at least.
+
+2000-08-16 Peter Williams <peterw@helixcode.com>
+
+ * camel-internet-address.c (internet_encode): Fix a leak when
+ name = "". It's a single-byte leak, but it's the little things
+ that count.
+
+ * camel-object.c (camel_type_lock_up): Don't leave the type
+ system locked when a bad unlock happens.
+
+ * providers/mbox/camel-mbox-store.c (get_folder): Fix a leak.
+
+2000-08-15 Peter Williams <peterw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_copy_message_to): Typo fix.
+
+2000-08-14 Peter Williams <peterw@helixcode.com>
+
+ * camel-folder-search.c (search_get_sent_date): New search function;
+ returns the time_t when the message was sent.
+ (search_get_receive_date): Same for when it was received.
+ (search_get_current_date): Gets the current time for use with the
+ above two. Is this in the right place?
+
+ * camel-folder-search.h: Add the new functions above to the class.
+
+2000-08-13 Dan Winship <danw@helixcode.com>
+
+ * providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): Add
+ camel-nntp-utils.h
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_subfolder_names_internal): do a strcasecmp rather than
+ just a strcmp when checking if a folder is "INBOX", since it is
+ a case-insensitive name.
+
+2000-08-12 Dan Winship <danw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary_internal):
+ Don't assume the FETCH results will come back in the order they
+ were requested.
+ (imap_get_subfolder_names_internal): Add "INBOX" to the list as
+ g_malloc'ed memory, not a static string.
+
+2000-08-12 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c
+ (camel_imap_command_continuation): Now takes a char * parameter
+ rather than a stream
+ (camel_imap_command_continuation_with_stream): Same function as
+ above but takes a stream parameter instead
+
+ * providers/imap/camel-imap-folder.c (imap_append_message): Use
+ camel_imap_command_continuation_with_stream
+
+2000-08-12 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (pop3_try_authenticate): New
+ function to do one round of attempted authentication.
+ (pop3_connect): Move a bunch of code out into
+ pop3_try_authenticate and fix some bugs in the edge cases.
+
+2000-08-12 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (query_auth_types): No longer
+ calls try_connect() to get authtypes
+
+2000-08-11 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c
+ (camel_imap_command_continuation): Changed param order a bit and
+ fixed some logic
+
+ * providers/imap/camel-imap-folder.c (imap_append_message): Use
+ the new multi-transactional convenience functions
+
+2000-08-11 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c
+ (camel_imap_command_preliminary): New convenience function for
+ multi-transactional commands (opening request)
+ (camel_imap_command_continuation): New convenience function for
+ multi-transactional commands (followup data)
+
+2000-08-11 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/mh/camel-mh-folder.c: Fixed a warning.
+
+2000-08-11 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-folder.c
+ (camel_nntp_folder_class_init): remove get_name and get_full_name
+ assignments, since the camel-folder.c implementation does what we
+ need.
+
+2000-08-11 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-store.c
+ (camel_nntp_store_get_toplevel_dir): use g_get_home_dir, since
+ evolution_dir isn't available in the providers.
+
+2000-08-11 Peter Williams <peterw@helixcode.com>
+
+ * camel-folder.c (thaw): Fix a bug where the message_changed
+ signal wasn't being emitted.
+
+2000-08-11 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mh/camel-mh-folder.c (mh_set_message_user_tag):
+ Implement.
+ (mh_get_message_user_tag): Implement.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_get_message_user_tag):
+ (mbox_set_message_user_tag): Implement.
+
+ * camel-folder.c (move_message_to): Yay so lets fix an already
+ fixed fix, again.
+ (copy_message_to): and here too ... update for api change to append().
+ And removed another warning.
+ (camel_folder_set_message_user_tag): Routine to set message tags.
+ (camel_folder_get_message_user_tag): And accessor.
+
+2000-08-10 Christopher James Lahey <clahey@helixcode.com>
+
+ * camel-folder-search.c, camel-folder-summary.c, camel-medium.c,
+ camel-mime-filter-charset.c, camel-mime-filter.c,
+ camel-mime-filter.h, camel-mime-message.c, camel-mime-parser.c,
+ camel-mime-part-utils.c, camel-mime-part.c, camel-mime-utils.c,
+ camel-movemail.c, camel-multipart.c, camel-object.c,
+ camel-stream-mem.c, providers/mbox/camel-mbox-folder.c,
+ providers/mbox/camel-mbox-summary.c,
+ providers/mh/camel-mh-folder.c,
+ providers/smtp/camel-smtp-transport.c: Fixed some warnings.
+
+2000-08-11 Not Zed <NotZed@HelixCode.com>
+
+ * providers/vee/camel-vee-folder.c (vee_folder_build_folder): Free
+ the search properly.
+ (vee_folder_build): And here too.
+
+2000-08-10 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ If we go over the max number of messages, don't keep requesting
+ new message summaries, just break.
+
+2000-08-11 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-parser.c (folder_scan_header): A better way to
+ compress leading whitespace. The code is probably invalid anyway,
+ I dont think it will work across buffer boundaries.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message): And
+ write out proper format From lines here too.
+
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_build_from): New function to build a more
+ compatible mbox "From " line.
+ (camel_mbox_summary_sync): Write From lines in the proper format.
+
+2000-08-10 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mh/camel-mh-store.c (get_folder): Remove warnin g.
+
+ * providers/mbox/camel-mbox-store.c (xrename): Kill some warnings
+ with constification.
+
+ * providers/imap/camel-imap-folder.c (imap_append_message): Fixed
+ for append api change. Eek this routine seriously wastes memory.
+
+ * providers/mh/camel-mh-folder.c (mh_search_free): Impelemnt.
+ (mh_append_message): Fix for api change, and include user flags
+ and tags in new message.
+
+ * providers/vee/camel-vee-folder.c (vee_search_by_expression): Fix
+ for search api change.
+
+ * camel-folder.c (camel_folder_search_free): New function for
+ freeing search results.
+ (search_free): Changed my mind, implement a default that actually
+ does something. Free as to the old interface.
+ (camel_folder_append_message): Changed to accept a
+ camelmessageinfo rather than flags, which just doesn't have enough
+ info in it.
+ (copy_message_to): Change for append_message api change.
+ (move_message_to): Likewise.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_search_free):
+ Implement.
+ (mbox_append_message): Fix for api change, and also copy user
+ flags/tags across to new summary.
+
+ * camel-folder-search.c (search_user_tag): A search expression
+ that returns the current use flag by name.
+ (camel_folder_search_free_result): New function to free the result
+ of a search.
+
+ * camel-folder-summary.c: Bump summary version.
+ (message_info_new):
+ (message_info_load):
+ (message_info_save):
+ (camel_message_info_dup_to):
+ (camel_message_info_free): Added support for arbitrary tag/value
+ pairs (CamelTag's).
+ (camel_tag_get):
+ (camel_tag_set):
+ (camel_tag_list_size):
+ (camel_tag_list_free): Operations for working with CamelTags.
+
+2000-08-09 Peter Williams <peterw@helixcode.com>
+
+ * camel-store.c (camel_store_get_folder): Connect beforehand, if
+ necessary.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_init): Default
+ the dir_sep to "/" so that certain functions can safely assume that
+ dir_sep is valid (at least, nonnull).
+
+2000-08-09 Ettore Perazzoli <ettore@helixcode.com>
+
+ * providers/nntp/camel-nntp-folder.c
+ (nntp_folder_set_message_flags): Get rid of an unused variable.
+
+ * providers/nntp/Makefile.am (INCLUDES): Fix includes so that we
+ don't use installed headers anymore. [I copied this over from the
+ IMAP provider, that does not seem to have this problem.]
+
+2000-08-09 Not Zed <NotZed@HelixCode.com>
+
+ * camel-folder-search.c (camel_folder_search_execute_expression):
+ Reorder search result in summary order if we searched with a
+ summary.
+
+2000-08-08 Dan Winship <danw@helixcode.com>
+
+ * camel-uid-cache.c: New code to keep an on-disk cache of what
+ UIDs have been seen in a folder.
+
+ * camel-provider.h: Add new flags CAMEL_PROVIDER_IS_SOURCE (mail
+ can arrive in it by non-Camel means) and CAMEL_PROVIDER_IS_STORAGE
+ (you can work with mail directly without needing to copy it local).
+
+ * providers/*/camel-*-provider.c: Add flags as needed: imap and
+ mbox are SOURCE and STORAGE. mh and nntp are just STORAGE, pop3 is
+ just SOURCE.
+
+ * camel-mime-message.c (process_header): Add another subject
+ g_strstrip that fejj's earlier commit missed.
+
+2000-08-08 Peter Williams <peterw@helixcode.com>
+
+ * camel-provider.h: Remove some GTK stuff that I missed.
+
+ * providers/imap/camel-imap-store.c (imap_noop): Turn this
+ back on with the new timeout interface in CamelSession.
+
+ * camel-session.[ch] (camel_session_register_timeout): New
+ interface for Camel to register timeouts. Basically the
+ GTK timeout interface is copied. We do this because Camel isn't
+ allowed to use GTK anymore.
+
+2000-08-07 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mh/camel-mh-folder.c (mh_append_message): Only retry
+ another uid if we had a name clash, otherwise fail.
+
+2000-08-07 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_subfolder_names_internal): If we are trying to get a
+ subfolder listing of the root folder, always make sure INBOX is
+ there...
+
+ * providers/imap/camel-imap-utils.c (imap_parse_list_response):
+ Check for NIL as a directory separator.
+
+2000-08-07 Peter Williams <peterw@helixcode.com>
+
+ * providers/nntp/Makefile.am: Reorder the INCLUDES to pull
+ in the camel headers from the local source tree before
+ the ones in $(includedir). This was causing compile problems
+ because the installed, Gtk-based camel-object.h was included
+ before the uninstall Camel-based one.
+
+2000-08-07 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-utils.c (imap_translate_sexp): Strip
+ all \n's from the expression
+
+ * string-utils.c (strip): New convenience function to strip
+ occurences of a single char from a string
+
+ * camel-mime-message.c (camel_mime_message_set_subject): Do a
+ g_strstrip on the subject so we can stop getting those annoying
+ leading spaces
+
+2000-08-07 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c (camel_folder_free_deep): Fix this to not require
+ NULL-termination of the array.
+
+2000-08-04 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect): If we fail to
+ get a dir_sep, then supply the default of "/".
+ (get_folder): Undo changes by Peter
+
+2000-08-04 Peter Williams <peterw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder): Prevent a coredump
+ when get_folder()ing from a store with dir_sep = NULL.
+
+2000-08-04 Peter Williams <peterw@helixcode.com>
+
+ * camel-store.h: Include camel-object.h. Ettore said this wasn't
+ compiling.
+
+2000-08-04 Not Zed <NotZed@HelixCode.com>
+
+ * camel-url.c (camel_url_set_protocol):
+ (camel_url_set_host):
+ (camel_url_set_path):
+ (camel_url_set_port): Url editing functions.
+
+2000-08-04 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-folder.c (pop3_set_message_flags):
+ (pop3_sync): Indexes into the flags array are message_number minus
+ 1, not just message_number.
+
+ * providers/pop3/camel-pop3-store.c: add a debugging macro for
+ doing protocol tracing.
+
+2000-08-03 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Only
+ call imap_get_summary_internal if the folder can hold messages
+
+ * providers/nntp/camel-nntp-provider.c (camel_provider_module_init):
+ Initialize the service_cache for the news/nntp providers
+
+2000-08-03 Peter Williams <peterw@helixcode.com>
+
+ * providers/nntp/Makefile.am (INCLUDES): Add -I$(top_srcdir) to
+ pull in libibex/ibex.h
+
+2000-08-02 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Expunge
+ from the end, so the index isn't messed up when you remove a
+ message.
+
+ * providers/mh/camel-mh-folder.c (mh_append_message): Fix a bug
+ where it would never open an output file/uid.
+
+ * providers/mbox/camel-mbox-store.c (rename_folder):
+ Implementation for mbox as well.
+
+ * camel-store.c (camel_store_rename_folder): New method to rename folders.
+ (rename_folder): Default implementation.
+
+ * providers/mh/camel-mh-store.c (delete_folder): Implement this.
+ (rename_folder): Implement a rename operation.
+
+2000-08-02 Dan Winship <danw@helixcode.com>
+
+ * providers/MH: Kill this. It doesn't have any code to do anything
+ the new mh provider doesn't do better.
+
+ * providers/Makefile.am: Remove reference to MH subdir, and
+ promote nntp to fully-supported status, since it does compile and
+ all.
+
+ * camel-mime-message.c (camel_mime_message_set_subject): Trim
+ trailing space from the subject. I've now seen replies from two
+ different people that tricked the threading code by (a) not having
+ References/In-Reply-To, and (b) adding an extra space to the end
+ of the subject line so the subject-based threading fails too. Who
+ writes these broken mailers anyway?
+
+2000-08-01 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_helo): When forced
+ to use the IP, place it in square brackets.
+
+ * providers/imap/camel-imap-utils.c (imap_translate_sexp): New and
+ improved sexp parser. An honest try at using e-sexp is wrapped in
+ a #ifdef at the bottom of the file but is currently not used
+
+ * providers/imap/camel-imap-folder.c (imap_search_by_expression):
+ We want to do a UID SEARCH so we get UIDs back instead of sequence
+ numbers
+
+2000-08-01 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mh: New mh provider implementation.
+
+ * providers/Makefile.am (SUBDIRS): Added mh provider.
+
+2000-07-31 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message_info_internal):
+ Some IMAP servers don't wrap the UID in ()'s so don't depend on that
+ (imap_get_summary_internal): Same
+
+ * providers/imap/camel-imap-utils.c (free_sexp_node): Oops, forgot to
+ free node->function - not good.
+
+2000-07-31 Peter Williams <peterw@helixcode.com>
+
+ * providers/vee/camel-vee-folder.c (vee_search_by_expression): Add
+ a NULL to the matches pointer array so that g_strfreev knows where
+ the end is.
+
+2000-07-31 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-utils.c (imap_translate_sexp): New
+ convenience function to translate a Camel sexp into the equivalent
+ IMAP sexp.
+
+ * providers/imap/camel-imap-store.c: More places now use
+ imap_next_word
+
+ * providers/imap/camel-imap-folder.c (imap_search_by_expression):
+ Implemented initial version (this may or may not work quite right)
+
+2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_expunge): Make sure
+ the third word/token (whatever) is "EXPUNGE" and not something
+ else like "EXISTS" or "RECENT". When removing the message from
+ the summary also make sure to free that data to avoid leakage.
+ Also make sure to subtract 1 from the 'id' since IMAP starts
+ at 1 and our summary starts at 0 :-)
+
+2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_status): Cleaned
+ up a bit, now uses imap_next_word()
+ (camel_imap_command_extended): Now uses imap_next_word(). When
+ checking for RECENT, allow the first digit of the recent-count
+ be between 0 and 9 inclusive instead of exclusive.
+
+ * providers/imap/camel-imap-folder.c (imap_expunge): Optimized.
+ No longer will it need to reload the summary as it now instead
+ removes the appropriate message summaries from the cache.
+ (camel_imap_folder_changed): If recent == 0 then return. If
+ recent < 0 then just emit the folder_changed signal, don't reload
+ summaries.
+
+2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_message_count_internal): Get message count when STATUS
+ is not available.
+ (imap_init): folder->has_search_capability is required for IMAP so
+ should always be set to TRUE (is currently being set to FALSE as
+ I've not yet implemented SEARCH support).
+ (camel_imap_folder_changed): Seem to have fixed my optimization
+ hack
+
+2000-07-28 Jon K Hellan <hellan@acm.org>
+
+ * providers/imap/camel-imap-store.h (CamelImapServerLevel): New
+ enum.
+ (CamelImapStore): Added server_level and has_status_capability
+ members.
+
+ * providers/imap/camel-imap-store.c (imap_connect): Detect
+ IMAP4REV1, IMAP4 and STATUS in capability response.
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_message_count_internal): Use STATUS only if server
+ supports it. TODO: Get message count when STATUS not supported.
+ (imap_get_message, imap_get_summary_internal,
+ imap_get_message_info_internal): Handle IMAP4 as well.
+ (imap_protocol_get_summary_specifier): New function: Make a data
+ item specifier for the header lines we need, appropriate to the
+ server level.
+
+2000-07-27 Peter Williams <peterw@helixcode.com>
+
+ * camel-mime-utils.c (header_decode_lwsp): More
+ checks for end of string.
+
+ * providers/imap/camel-imap-store.c:
+ (imap_command_extended): Free the elements of our
+ array (huge mem leak)
+
+ * providers/imap/camel-imap-folder.c:
+ (summary_get_internal): Same as above.
+
+2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ Fixed my routine to only fetch new headers, my IDs were off by 1
+ on the high end, so when it would fetch the last newly arrived
+ message it would fail and end up fetching all of the summaries
+ because of the corruption.
+
+2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-url.c (camel_url_to_string): If the path doesn't begin
+ with a / and there is a host, prepend a / to the path.
+
+2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/Makefile.am: Added camel-imap-utils.[c,h]
+
+ * providers/imap/camel-imap-utils.[c,h]: Utilities for parsing
+ server responses for use in both camel-imap-store.c and
+ camel-imap-folder.c
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary_internal):
+ Free all the pointers in the headers array.
+ (imap_get_subfolder_names_internal): Updated to use
+ imap_parse_list_response
+ (imap_parse_subfolder_list): Removed in favor of
+ imap_parse_list_response
+
+ * providers/imap/camel-imap-store.c (camel_imap_command_extended):
+ Free all the pointers in the data array.
+ (imap_connect): Updated to use imap_parse_list_response and fixed
+ a leak
+ (folder_is_selectable): Updated.
+
+2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message_info): Now
+ uses a hash table for looking up message info rather than a linear
+ search :)
+
+2000-07-27 Peter Williams <peterw@helixcode.com>
+
+ * providers/*/Makefile.am: Don't specify SUBDIRS =
+ [nothing]. Messes up distcheck.
+
+2000-07-26 Peter Williams <peterw@helixcode.com>
+
+ * camel-mime-parser.c (folder_scan_init): Initialize
+ outbuf to be "" -- it's not guaranteed to be zeroed.
+
+ * camel-mime-utils.c (header_references_decode): Return
+ if the header is NULL -> or "" <-. Don't do our stupid
+ mailer trick if we point to \0.
+ (header_decode_quoted_string): Don't rip past end of
+ string!
+
+2000-07-26 Dan Winship <danw@helixcode.com>
+
+ * camel-movemail.c (movemail_external): routine to call an
+ external movemail program.
+ (camel_movemail): Nuke return value, use movemail_external when
+ available and useful, and don't delete "dest" on errors, since
+ it might have started non-empty.
+
+2000-07-26 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-url.c (camel_url_to_string): Should now always prepend a '/'
+ before the path if it doesn't already exist.
+
+ * providers/imap/camel-imap-folder.c: Fixed a few compiler warnings
+
+2000-07-25 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_summary_free): Fixed the
+ real problem that Peter was running into.
+
+2000-07-25 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-message.c (write_to_stream): Don't add a Mime-Version
+ header to a message that already has one.
+
+ * camel-internet-address.c (internet_encode): Don't put <>s around
+ addresses with no name part.
+
+2000-07-25 Peter Williams <peterw@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_expunge): Set
+ imap_folder->summary to NULL after calling imap_summary_free,
+ so we don't get stuck with a junk summary pointer. Should
+ we free it at all?
+
+2000-07-25 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
+ Optimized to try and get the new message headers without reloading
+ the entire summary from scratch.
+ (imap_get_summary_internal): Will now sync() before attempting to
+ reload the summary so that flags are set in the reloaded summary
+ as well.
+
+2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder): Updated to give
+ special attention to the root folder.
+
+ * providers/imap/camel-imap-folder.c
+ (imap_get_subfolder_names_internal): Updated to handle the root
+ folder
+ (imap_get_message_count_internal): return 0 if folder can't hold
+ messages
+ (camel_imap_folder_new): Change so that root folder gets special
+ attention and always gets can_hold_messages set to FALSE
+
+2000-07-24 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c: Remove exceptions from a number of methods that
+ work on what ought to be static data: get_parent_folder,
+ get_parent_store, get_message_count, get_unread_message_count,
+ get_permanent_flags, get_message_flags, set_message_flags,
+ get_message_user_flag, set_message_user_flag, get_uids,
+ get_summary, get_subfolder_names. Turn camel_folder_delete_message
+ into a macro. (Mostly a pull-up from the camel-async branch.)
+
+ * providers/{imap,mbox,nntp,pop3,vee}: Update for CamelFolder
+ changes
+
+2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message_info): Updated
+ to port easily to the new Camel API
+ (imap_init): Don't SELECT INBOX, we don't need to do that
+
+2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
+ Initialize the summary and subfolder listing.
+ (imap_summary_free): Now takes a GPtrArray arg rather than a
+ CamelImapFolder as it increases it's usefullness for free()'ing
+ temporary summaries.
+ (imap_get_message_count_internal): A new convenience function for
+ getting the actual message count on a server to be used by
+ imap_get_summary_internal)
+ (imap_get_message_count): Since the Camel API is on the move again,
+ the future version of this function will not be able to make a
+ call to the store, it must only access previously fetched data (thus
+ the creation of the _internal function)
+ (imap_get_subfolder_names_internal): Again, because the future version
+ of imap_get_subfolder_names will not take an exception, we must rename
+ this function which will be called by camel_imap_folder_new()
+ (imap_get_subfolder_names): We now return the previously collected
+ subfolder listing that the _internal function fetched previously
+ (imap_get_summary_internal): Again, same idea as the previous _internal
+ functions...
+ (imap_get_summary): Again... now returns a previously aquired summary
+
+ * providers/imap/camel-imap-store.c (imap_noop): This will hopefully
+ prevent the imap store from disconnecting.
+ (imap_connect): Modified to add a gtk timeout event that will call
+ imap_noop() every 10 minutes (we may want to change this time value)
+ (imap_disconnect): Modified to remove the NOOP timeout event from the
+ store.
+ (camel_imap_command_extended): Commented out the code that would try
+ and detect if the store was disconnected and then reconnect if it was
+ needed.
+
+2000-07-24 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.[ch]: Remove camel_folder_get_message_uid, which
+ was not used, and not implemented by any provider.
+
+ * providers/nntp/camel-nntp-folder.c: Remove get_message_uid
+ non-implementation.
+
+ * camel-folder-pt-proxy.[ch], camel-arg-collector.c,
+ camel-marshal-utils.[ch]: Bye bye bye.
+
+ * Makefile.am: remove reference to camel-arg-collector.c
+
+2000-07-23 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_disconnect): Made it a
+ little more forgiving. Also set current_folder to NULL as there is
+ no selected folder after a disconnect.
+ (stream_is_alive): Detects whether or not a socket is "alive"
+ (camel_imap_command_extended): Use stream_is_alive() to aid in the
+ detection of a disconnected state.
+
+2000-07-22 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (get_folder): Clear
+ CamelExceptions when appropriate (eg when folder is marked as
+ \NoSelect). Still needs some cleanup and perhaps Dan will have a
+ better way of doing this as this seems like a messy way of
+ handling this.
+
+ * providers/imap/camel-imap-folder.c (imap_get_uids): Took out
+ some debug statements as they are no longer needed.
+
+2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_subfolder_names):
+ Updated to not strip out subfolders that are marked as \NoSelect
+ because this will be correctly handled in store->get_folder from
+ now on.
+
+ * providers/imap/camel-imap-store.c (folder_is_selectable): New
+ convenience function for use in get_folder().
+ (parse_list_response): Now takes a char **flags argument which is
+ needed by folder_is_selectable().
+ (imap_connect): Updated to reflect changes to
+ parse_list_response().
+
+2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-stream.c (stream_read): Updated with
+ some of the same fixes I've made to camel-imap-folder.c like
+ recalculating message part lengths.
+
+ * providers/imap/camel-imap-store.c (camel_imap_command_extended):
+ Rewrote the code to check for "* %d RECENT". Still needs to be
+ modified, but should no longer cause an infinite loop by detecting
+ mis-detecting RECENT messages.
+
+2000-07-20 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary):
+ (imap_get_message_info): Oops. Fix UID parser to allow 0 and 9 to
+ be in the range of valid UID chars.
+
+2000-07-20 Peter Williams <peterw@helixcode.com>
+
+ * camel-object.c (camel_object_unref): Add a new global mutex
+ 'refcount' held when refcounting operations occur.
+
+2000-07-19 Peter Williams <peterw@helixcode.com>
+
+ * camel-object.c (camel_type_lock_up): Correct the recursiveness;
+ the locklevel is stored as a private, so each thread has its own
+ idea of the locklevel. Thus one thread can relock, but a different
+ one will think that it's a level 0 and try to lock the type_system
+ mutex.
+
+2000-07-19 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c: General cleanup working
+ towards getting Actions->Expunge working correctly.
+
+ * providers/imap/camel-imap-store.c
+ (cammel_imap_command_extended): Added code to look for "* %d
+ RECENT" and to emit the folder_changed signal if there are any
+ recent messages. Note: this is a hack and needs to be rewritten
+ badly.
+
+2000-07-19 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary): If the
+ folder's message count is not the same as the number of summaries,
+ free the old summary and create a new summary.
+
+2000-07-18 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c
+ (camel_imap_folder_class_init): Added in
+ imap_[g,s]et_message_user_flag() methods
+ (imap_get_message_info): Rewrote to use the more efficient way of
+ downloading summary information and also added a UID comparison so
+ that if the UID requested doesn't match the UID received, it
+ returns NULL. FIXME: When the mailer gets NULL when it requested
+ message info, it seems that it displays a row for that message and
+ when you try and select the blank row, it segfaults.
+
+ * providers/imap/camel-imap-store.c (get_folder): Oops, this
+ should not be checking against "/", it should be checking against
+ dir_sep.
+
+ * providers/imap/camel-imap-folder.c (imap_parse_subfolder_line):
+ Updated to trim out the leading namespace.
+ (imap_get_subfolder_names): Let the subfolder parser trim the
+ namespace off the folder name.
+
+2000-07-17 Peter Williams <peterw@helixcode.com>
+
+ * camel-object.c (camel_type_lock_up): New function; the
+ Camel type_system lock is now fakey-recursive, being controlled
+ by a semaphore that goes up and down and is protected by another
+ lock. Theoretically all we need is the lock on the semaphore,
+ but this we catch exceptions "better" (by deadlocking).
+ (camel_type_lock_down): Corresponding to above.
+ (all functions): s,G_LOCK,camel_type_lock_up, etc.
+
+2000-07-17 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_disconnect): Send a
+ "LOGOUT" command.
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): Hacks to
+ get IMAP code to work with CommunigatePro and MS Exchange (and any
+ other servers that send back a UID at the end of each FETCH inside
+ of the main body of the message part).
+ (imap_sync): Un-#if 0 the code that sets the flags on the IMAP
+ server for messages that have changed. Oops, don't mask with
+ DELETED to find out if the message has been answered ;-)
+ (imap_expunge): sync before expunging.
+
+2000-07-16 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c: All SELECT calls now pass
+ a NULL folder argument to camel_imap_command_extended() since it's
+ not needed.
+ (imap_connect): Moved service_class->connect() to the point right
+ after a connection is established with the server rather than
+ waiting until the end of the function.
+ (camel_imap_command): Updated the documentation comment
+ (camel_imap_command_extended): Before sending a command, first
+ check to make sure we are connected; if we aren't, then reconnect.
+ Don't strncmp() command with "SELECT" as it's redundant.
+
+ * providers/imap/camel-imap-folder.c: All SELECT calls now pass
+ a NULL folder argument to camel_imap_command_extended() since it's
+ not needed. Also s/camel_imap_command/camel_imap_command_extended as
+ I will probably be doing away with camel_imap_command() or at least
+ only using it for LOGIN and similar commands where the server won't
+ notify us of any recent messages.
+
+2000-07-15 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new):
+ One last fix to get rid of hard-coded "/" directory separators
+
+2000-07-14 Peter Williams <peterw@helixcode.com>
+
+ * camel-object.c : Implement 'events', which are suspiciously
+ like signals except without all the marshalling baggage, and
+ with quasi-thread-safety.
+ (camel_object_class_declare_event): New func.
+ (camel_object_hook_event): Ditto.
+ (camel_object_trigger_event): Ditto.
+ (obj_class_init): Declare the "finalize" event.
+ (obj_class_finalize): Free the hashtable of events->preps
+ (obj_finalize): Free the hashtable of events->hooklists
+ (camel_object_unref): Trigger the finalize event (ourselves,
+ to prevent massively unpleasant looping things.)
+
+2000-07-14 Peter Williams <peterw@helixcode.com>
+
+ * camel-object.c (make_global_classfuncs): Change to return
+ a CamelObjectClass. Change parents to a GSList and free it
+ when done.
+ (camel_object_new): Don't allocate a classfuncs for every object;
+ merely give it a reference to the global_classfuncs. Convert
+ parents to a GSList and free it when done.
+ (camel_object_unref): Don't free the classfuncs. Free the parents
+ list, which is changed to a GSList.
+
+2000-07-14 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * string-utils.c (string_unquote): New convenience function
+ to unquote a string if it's encapsulated by "'s
+
+ * providers/imap/camel-imap-folder.c:
+ * providers/imap/camel-imap-store.c: Made the necessary changes
+ to stop using hard coded directory separators.
+
+2000-07-13 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
+ If the summary is for a smaller mbox, and rebuilding from the
+ last-known end position fails, try rebuilding from the beginning.
+ Deals with the case where the user edits the mbox and makes it
+ bigger, without adding new messages.
+
+2000-07-13 Peter Williams <peterw@helixcode.com>
+
+ * camel-object.c: Rewritten to not be based on GtkObject,
+ but a tiny threadsafe ripoff thereof. Objects still cannot
+ be shared across threads, but ref/unref/destroy/new/etc
+ will work. Signals are not implemented because doing it
+ robustly would be a major pain in the butt, but class
+ functions are. There's a small demonstration that it doesn't
+ crash in ./temp-test.c: build it with ./make-test.sh.
+ * camel-stream.c, camel-seekable-stream.c, camel-stream-mem.c:
+ moved over to CamelObject. Proof of concept: two levels of
+ subclass and class functions, all working without coredumps.
+ To port to CamelObject:
+ - s,GTK_,CAMEL_,g in the cast checks
+ - s,gtk_type_new,camel_object_new,g
+ - s,GtkType,CamelType,g
+ - Change get_type function over to camel_type_declare
+ - instead of hooking to finalize function, it goes into the
+ type declaration.
+ - remove signals.
+ - instead of GTK_OBJECT(so)->klass, CAMEL_OBJECT_GET_CLASS(so)
+ - s,gtk_type_class,camel_type_get_global_classfuncs,g
+ - don't chain finalize handlers; it will be done for you
+
+2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c:
+ * providers/imap/camel-imap-store.c: If a SELECT fails, set
+ imap_store->current_folder to NULL so a SELECT is forced before
+ any message/folder operations are requested. Also, because some
+ users don't use a namespace, make sure that if the url->path is
+ "/" we don't use it when creating the folder_path.
+ (camel_imap_command[_extended]): Since we allow the passing of
+ a NULL folder which we can use to bypass a forced SELECT, no need
+ to check for the individual commands that don't require a folder
+ to be selected.
+
+2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c:
+ * providers/imap/camel-imap-store.c: Updated to use CAMEL_IMAP_OK,
+ CAMEL_IMAP_NO, CAMEL_IMAP_BAD, and CAMEL_IMAP_FAIL rather than the
+ ones copied from the POP3 provider.
+
+2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary): Oops.
+ If the number of messages in the folder is 0, don't fetch
+ summaries 1 thru 0, just return an empty summary.
+ (imap_copy_message_to): Fixed to use message UID and also send
+ the source folder as an arg to camel_imap_command rather than NULL.
+ (imap_move_message_to): Same.
+ (imap_init): If SELECT is successful, we need to set the current
+ folder to the one selected, this was causing problems with move/copy
+
+2000-07-13 Dan Winship <danw@helixcode.com>
+
+ * camel-service.h: define a set of CAMEL_SERVICE_URL_ALLOW_* flags
+ parallel to the _NEED_* flags, and make the _NEED_* flags imply
+ the _ALLOW_* ones.
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_init): imap
+ urls ALLOW_PATH
+
+2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary): New
+ and improved approach to fetching an entire folder summary
+ that should be much much faster than the old way as it gets
+ the entire folder summary in 1 shot rather than requesting
+ message by message. As with the last update, this version
+ also only fetches the minimum number of header fields.
+ (imap_get_summary): Oops, forgot to free the temp
+ GPtrArray *headers
+
+2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary): Don't
+ fetch the entire RFC822 header, just fetch the fields we want.
+ (imap_get_message_info): Same.
+
+2000-07-13 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-filter-basic.c (camel_mime_filter_basic_new_type):
+ Reset filter on setup.
+ (reset): When resetting qp encoding, set the state to -1, instead
+ of 0.
+
+ * camel-mime-utils.c (quoted_encode_step): Actually count the
+ characters output sofar (it never counted any). Bunch of other
+ fixes.
+ (quoted_encode_close): Also flush out final character, if there's
+ one.
+
+2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
+
+ Chris forgot to add #include <e-util/e-util.h> to the source files
+
+ * providers/imap/camel-imap-store.c (imap_connect): Fixed Peter's
+ fix, we don't want to send a string to a %d.
+
+2000-07-12 Christopher James Lahey <clahey@helixcode.com>
+
+ * camel-folder-search.c, providers/imap/camel-imap-store.c:
+ Changed from strstrcase to e_strstrcase.
+
+ * string-utils.c, string-utils.h: Removed strstrcase (in favor of
+ e_strstrcase in e-util/e-util.c.)
+
+2000-07-12 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-folder.c
+ (nntp_folder_set_message_flags): get the article num out of our
+ uid and mark it read in the newsrc.
+ (nntp_folder_get_message): get the message id out of the uid to
+ fetch the article.
+
+ * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): the uid
+ is now <article-num>,<messageid>
+ (get_HEAD_headers): same.
+
+ * camel-mime-parser.c (folder_scan_step): go to HSCAN_MESSAGE
+ state when ct->subtype is "news" as well as "rfc822". this makes
+ attachments of type "message/news" display properly.
+
+2000-07-12 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c (camel_folder_free_deep,
+ camel_folder_free_shallow, camel_folder_free_nop): Useful default
+ implementations for free_{uids,subfolder_names,summary}.
+ (free_subfolder_names, free_uids): Make these g_warning-ing
+ default implementations.
+
+ * providers/*/camel-*-folder.c: Use the new functions where
+ appropriate, remove duplicated code.
+
+2000-07-12 Peter Williams <peterw@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (query_auth_types): Check for
+ NULL parameters when setting the exception so as to not crash on
+ Solaris (can't handle a %s passed NULL).
+ (imap_connect): Same.
+
+2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c (mbox_delete_message): Use
+ mbox_set_message_flags () instead of setting the flags by hand. This
+ fixes the problem of the "message_changed" signal not being emitted
+ at the correct time.
+
+ * providers/imap/camel-imap-folder.c: "folder_changed" signals should
+ pass a third argument (which is ignored).
+
+ * camel-folder.c: Undo gtk signal emits done in set_flags and
+ expunge.
+ (move_message_to):
+ (copy_message_to): Create info as a const CamelMessageInfo
+
+2000-07-12 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/Makefile.am: don't add test-newsrc to the build
+ since it needs libcamel (which isn't built at the time test-newsrc
+ needs linking.)
+
+ * providers/nntp/camel-nntp-utils.c (get_HEAD_headers): fill in
+ MessageInfo->message_id.
+ (get_XOVER_headers): same.
+
+ * providers/nntp/camel-nntp-folder.c (nntp_folder_init): move
+ summary loading here.
+ (nntp_folder_sync): summary/newsrc changes should be stored here.
+ put a comment to that effect.
+ (nntp_folder_set_message_flags): don't save the newsrc here.
+ (nntp_folder_get_uids): use g_ptr_array_index instead of the
+ cast/addition.
+ (nntp_folder_get_summary): no need to check if we should generate
+ the summary here. already done.
+ (nntp_folder_get_message_info): implement.
+
+ * providers/nntp/camel-nntp-store.c
+ (camel_nntp_store_get_toplevel_dir): use evolution_dir instead of
+ computing it ourselves.
+ (nntp_store_disconnect): call camel_nntp_newsrc_write.
+ (ensure_news_dir_exists): new function to create the news/<news
+ server> subdir.
+ (camel_nntp_store_class_init): hook up connect/disconnect and
+ finalize.
+ (nntp_store_connect): if ensure_news_dir_exists fails throw an
+ exception.
+
+2000-07-12 Peter Williams <peterw@helixcode.com>
+
+ * camel-folder.c (camel_folder_set_message_flags): Emit a message_changed
+ signal once the flags are set on the message.
+ (camel_folder_set_user_flag): Ditto.
+ (camel_folder_expunge): Emit a folder_changed if no exception.
+
+2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-stream.c: Use size_t and ssize_t for read/write methods
+
+ * providers/imap/camel-imap-folder.c (imap_set_message_flags):
+ Updated to emit the message_changed signal.
+ (imap_delete_message): Updated to use imap_set_message_flags ().
+ (imap_move_message_to): Updated to use imap_set_message_flags ()
+ and to emit the folder_changed signal on the destination folder.
+ (imap_copy_message_to): Updated to emit the folder_changed signal
+ on the destination folder.
+ (imap_append_message): Updated to emit the folder_changed signal
+ on the destination folder.
+
+2000-07-11 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-folder.c (camel_folder_append_message): Now takes a
+ flags argument to specify the flags to be set on the message
+ since we might not necessarily want the flags to be wiped clean.
+ (move_message_to):
+ (copy_message_to): Updated to send a flags argument to
+ append_message (); currently sends the original message's flags.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message):
+ * providers/imap/camel-imap-folder.c (imap_append_message):
+ Updated.
+
+2000-07-11 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c: Remove exceptions from a number of methods
+ that work on what ought to be static data: get_parent_folder,
+ get_parent_store, get_message_count, get_unread_message_count,
+ get_permanent_flags, get_message_flags, set_message_flags,
+ get_message_user_flag, set_message_user_flag, get_message_uid,
+ get_uids, get_summary, get_subfolder_names. Turn
+ camel_folder_delete_message into a macro.
+
+ * providers/{mbox,pop3,vee}: Update for CamelFolder changes
+
+ * providers/Makefile.am: Disable imap and nntp for now
+
+2000-07-11 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_search_by_expression):
+ This shouldn't return NULL, it should return g_ptr_array_new ()
+ so the mailer gets what it expects.
+
+2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-folder-summary.c (camel_folder_summary_decode_string):
+ Oops, an unsigned integer can never be < 0
+
+2000-07-10 Dan Winship <danw@helixcode.com>
+
+ * providers/vee/camel-vee-folder.c (vee_search_by_expression):
+ Initialize a variable to make this not crash again. And fix a bug
+ so it actually does something.
+
+2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-folder-summary.c: Cleaned up a bunch of compile warnings
+
+2000-07-10 Dan Winship <danw@helixcode.com>
+
+ * providers/vee: kill more debugging messages
+
+2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c (mbox_get_unread_message_count):
+ * providers/vee/camel-vee-folder.c (vee_get_unread_message_count):
+ * providers/imap/camel-imap-folder.c (imap_get_unread_message_count):
+ Implemented.
+
+ * camel-folder.c (camel_folder_get_unread_message_count): New
+ convenience function to allow the mailer to query the number
+ of unread messages in a folder (for displaying message stats
+ in a folder tree?).
+
+2000-07-09 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c (header_references_dup): New function to copy
+ a header_references structure.
+
+ * camel-folder-summary.c (camel_message_info_dup_to): New function
+ to (deep) copy the data from one CamelMessageInfo into another.
+ (camel_message_info_free): And free the data.
+
+ * providers/vee/camel-vee-folder.c (vee_sync): Implement. (empty).
+ (vee_search_by_expression): belatedly update for
+ camel_folder_search change.
+ (vee_folder_build): belatedly update for camel_folder_search
+ change. Use camel_message_info_dup_to and camel_message_info_free
+ (in particular, so that we get message_id and references info so
+ vfolders can be threaded).
+ (vee_folder_build_folder): Ditto.
+
+2000-07-08 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/nntp/camel-nntp-folder.c:
+ * providers/nntp/camel-nntp-utils.c:
+ * providers/nntp/camel-nntp-store.c: Update to reflect past changes
+ in the Camel API. Use gtk macro casts wherever possible and use glib's
+ memory functions instead of standard c's (since they are not
+ compatable)
+
+ * providers/smtp/camel-smtp-transport.c:
+ * providers/imap/camel-imap-store.c: Wrap debug print statements
+ in a macro
+
+ * providers/imap/camel-imap-stream.c (stream_read): Make sure
+ that we get up to and including the last \n of the mime part.
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): Make sure
+ that we get up to and including the last \n of the mime part.
+ Wrap debug print statements in a macro.
+
+ * providers/imap/camel-imap-stream.c (stream_read): Only cache
+ the important data (aka the mime part requested and no extra
+ server response stuff)
+
+2000-07-07 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c (header_references_decode): Work around
+ In-Reply-To's with unquoted punctuation. So many broken mailers.
+
+ * camel-folder.c (camel_folder_search_by_expression): Make this
+ return a GPtrArray rather than a GList.
+
+ * camel-folder-search.c (camel_folder_search_execute_expression):
+ * providers/imap/camel-imap-folder.c (imap_search_by_expression):
+ * providers/mbox/camel-mbox-folder.c (mbox_search_by_expression):
+ * providers/nntp/camel-nntp-folder.c (nntp_search_by_expression):
+ Update to return a GPtrArray rather than a GList.
+
+2000-07-07 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (esmtp_get_authtypes):
+ Fixed the parser to actually work
+
+2000-07-06 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c (header_references_decode): Make this deal
+ with the full RFC822 References/In-Reply-To format rather than
+ just the more-nicely-behaved RFC1036 version. (Needed to parse
+ In-Reply-To headers with extra junk in them.)
+
+2000-07-06 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary): Parse for
+ more header information to allow message threading in IMAP.
+ (imap_get_message_info): Same.
+
+ * camel-folder-summary.c: Renamed summary_format_* to
+ camel_summary_format_* and moved them into public scope.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): Oops. Don't
+ pass port # as a string in the error code (if it fails to connect).
+
+ * providers/imap/camel-imap-folder.c (imap_append_message): Changed
+ over to camel_imap_command_extended as that was the source of the
+ problems - apparently appending replies with more than just 1 line.
+
+2000-07-05 Dan Winship <danw@helixcode.com>
+
+ * camel-folder-search.c (search_header_contains): make header
+ matching case-insensitive
+
+ * camel-folder-summary.c:
+ * camel-session.c:
+ * providers/mbox/camel-mbox-folder.c:
+ * providers/mbox/camel-mbox-summary.c: Remove some non-error case
+ debugging-type messages.
+
+2000-07-05 Ettore Perazzoli <ettore@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c (d): Define to empty so that
+ we get rid of a ton of debugging messages.
+
+2000-07-05 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-utils.h: Added prototype for uudecode_step
+
+ * camel-mime-utils.c (uudecode_step): Cleaned up some junk that
+ should have been cleaned up when debugging printf's were taken out.
+
+2000-07-05 Ettore Perazzoli <ettore@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
+ Update the X-Evolution: header even if the in-memory UID and the
+ saved UID are not the same. Otherwise mboxes with clashing UIDs
+ can never be fixed.
+
+ * camel-folder-summary.c
+ (camel_folder_summary_add_from_parser): Add the message to the
+ summary before doing any ibex stuff. In fact, this might also
+ have the side effect of reassigning the UID so it needs to be done
+ before we start using the UID.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message): Add
+ debugging message to keep track of the UIDs we add.
+
+2000-07-05 Dan Winship <danw@helixcode.com>
+
+ * camel-folder-summary.c: Add "Cc" to summary and bump summary
+ version number.
+
+ * camel-folder-search.c (search_header_contains): make "Cc" a
+ searchable header.
+
+2000-07-03 Ettore Perazzoli <ettore@helixcode.com>
+
+ * camel-folder-summary.c (camel_folder_summary_next_uid_string):
+ New.
+ (camel_folder_summary_add): Use
+ `camel_folder_summary_next_uid_string()' instead of recomputing
+ the UID manually here.
+ (camel_folder_summary_add_from_parser): Likewise.
+
+2000-07-03 Ettore Perazzoli <ettore@helixcode.com>
+
+ * camel-folder-summary.c (camel_folder_summary_set_uid): Removed.
+
+2000-07-03 Dan Winship <danw@helixcode.com>
+
+ * camel-folder-summary.c (message_info_new): Parse In-Reply-To
+ with header_references_decode, not header_msgid_decode.
+
+ * camel-mime-message.c (camel_mime_message_class_init): message
+ headers are case-insensitive.
+
+ * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fix a
+ bug in error-setting code.
+ (pop3_connect): Don't re-prompt for password in the KPOP case.
+ (pop3_get_response): New function, split out from
+ camel_pop3_command.
+ (connect_to_server): Use pop3_get_response to parse the greeting
+ message, and error out appropriately if it's -ERR.
+
+2000-07-02 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c (camel_folder_freeze, camel_folder_thaw): New
+ functions to freeze and thaw a folder (to prevent message/folder
+ changed signals in the middle of a long series of operations).
+ (camel_folder_class_init): Change signals to GTK_RUN_FIRST.
+ (message_changed, folder_changed): Add default implementations
+ that stop the emission and record info for later if the folder is
+ frozen.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_sync): leftover fixes
+ from the close->sync change: don't destroy the ibex, summary, and
+ search when syncing.
+ (append_message): emit "folder_changed" on a successful append.
+
+2000-07-02 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-utils.c (uudecode_step): A rather complex uudecoder
+ written in the spirit of Zucchi-ness, is it up to par? Only the
+ Z-man can tell us :-)
+
+2000-07-01 Dan Winship <danw@helixcode.com>
+
+ * camel-service.c (camel_service_get_name): New method, to return
+ an end-user-friendly name corresponding to a service. (eg, "POP
+ service for danw on trna.helixcode.com").
+
+ * providers/imap/camel-imap-store.c,
+ providers/mbox/camel-mbox-store.c,
+ providers/nntp/camel-nntp-store.c,
+ providers/pop3/camel-pop3-store.c,
+ providers/sendmail/camel-sendmail-transport.c,
+ providers/smtp/camel-smtp-transport.c: Implement.
+
+ * providers/imap/Makefile.am: remove unneeded
+ libcamelimap_la_LDADD.
+
+ * providers/pop3/camel-pop3-store.c (connect_to_server): fix the
+ CAPA-parsing code to not get into an infinite loop.
+
+2000-07-01 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message): Fixed
+ the bug that would sometimes leave part of the server response
+ tacked on to the end of the message.
+
+ * camel-folder.c: Renamed _by_uid methods. Since we no longer
+ have get-by-number methods, no need to have the _by_uid
+ extensions.
+ (get_message_by_uid): Renamed to get_message
+ (delete_message_by_uid): Renamed to delete_message
+ (summary_get_by_uid): Renamed to get_message_info
+
+ * providers/mbox/camel-mbox-folder.c:
+ * providers/pop3/camel-pop3-folder.c:
+ * providers/imap/camel-imap-folder.c:
+ * providers/vee/camel-vee-folder.c: Updated to reflect
+ camel-folder changes.
+
+2000-06-30 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-folder.c (camel_folder_copy_message_to): New function, to
+ copy a message from one folder to another. The default
+ implementation just uses append_message, but providers can
+ implement more efficient versions for use when both folders are on
+ the same store.
+
+ * broken-date-parser.[c,h]: Utilities for parsing broken
+ date strings.
+
+ * providers/imap/camel-imap-folder.c (imap_move_message_to):
+ (imap_copy_message_to): Implemented.
+
+ * camel-mime-utils.c (header_decode_date): Wrote some code to try
+ and un-mangle broken date formats and then parse that new string
+ instead.
+
+2000-06-30 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c (camel_folder_move_message_to): New function, to
+ move a message from one folder to another. The default
+ implementation just uses append_message and delete_message, but
+ providers can implement more efficient versions for use when both
+ folders are on the same store.
+
+2000-06-29 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_expunge): Should now
+ print a meaningful error message when it doesn't succeed
+
+2000-06-28 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect): Changed to
+ keep prompting user for a valid password until it either
+ authenticates or until Canceled by the user.
+ (camel_imap_command_extended): Improved speed (replaced the
+ g_strjoinv call with a faster implementation)
+
+ * providers/pop3/camel-pop3-store.c
+ (camel_pop3_command_get_additional_data): Fixed.
+ (pop3_connect): Changed to keep prompting the user for a
+ password until it either works or until Canceled by the user.
+
+ * providers/mbox/camel-mbox-summary.c: General cleanup
+ (camel_mbox_summary_sync): Fixed a memory leak and added
+ CamelException handling.
+
+ * providers/mbox/camel-mbox-store.c (delete_folder): Fixed a
+ memory leak
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message):
+ Default 'off_t seek' to -1 so as to make sure it's initialized
+ before it's used in the case of a bad stat() call.
+ (mbox_sync): Updated
+ (mbox_expunge): Updated
+
+2000-06-27 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_connect): Move the
+ CAPABILITY command here so we don't have to keep checking
+ each time we open a folder.
+ (camel_imap_command_extended): If we are doing an EXAMINE,
+ don't bother doing a SELECT first.
+
+ * providers/imap/camel-imap-folder.c (imap_init): Update so
+ folder->has_search_capability depends on the parent IMAP store
+ (since this is really dependant on the IMAP implementation and
+ not the folder)
+
+2000-06-27 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c: Don't close the filter
+ stream when done with it (this causes the source stream to close);
+ Instead, just flush it when done.
+
+2000-06-27 Michael Zucchi <zucchi@zedzone.mmc.com.au>
+
+ * camel-folder-search.c (search_header_contains): Make header
+ search 'to' match 'to', and not 'from', small typo, fixes #317.
+
+2000-06-26 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c: Added debugging
+ information.
+
+2000-06-23 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c:
+ * providers/imap/camel-imap-folder.c: Improved folder parsing.
+ Not specifying a namespace should no longer list the entire
+ filesystem.
+
+2000-06-22 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/.cvsignore: ignore test-newsrc
+
+ * providers/nntp/camel-nntp-store.c,
+ providers/nntp/camel-nntp-store.h,
+ providers/nntp/camel-nntp-folder.c,
+ providers/nntp/camel-nntp-folder.h,
+ providers/nntp/camel-nntp-utils.c: Bring the nntp provider up to a
+ state where it builds and is usable with the current camel. there
+ are still warts (semi-broken .newsrc file handling, and a lack of
+ a subscribe ui -- in fact no way to add a new server, really), but
+ it'll display news messages.
+
+ * providers/nntp/Makefile.am (libcamelnntp_la_SOURCES): add
+ camel-nntp-newsrc.c
+ (libcamelnntpinclude_HEADERS): add camel-nntp-newsrc.h
+ also, add test-newsrc stuff.
+
+ * providers/nntp/test-newsrc.c: new file that tests the newsrc
+ stuff by parsing and regurgitating a .newsrc file for a particular
+ server.
+
+ * providers/nntp/camel-nntp-newsrc.c,
+ providers/nntp/camel-nntp-newsrc.h: new files, initial support for .newsrc files.
+
+2000-06-22 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message_count):
+ Oops. Now appends the namespace to the folder before querying
+ for the number of messages.
+
+ * providers/imap/camel-imap-store.c (imap_folder_exists): New
+ convenience function for use by imap_create().
+ (get_folder): If folder is specified as "/", we really want
+ "INBOX".
+
+ * providers/sendmail/camel-sendmail-provider.c:
+ * providers/vee/camel-vee-provider.c:
+ * providers/smtp/camel-smtp-provider.c:
+ * providers/mbox/camel-mbox-provider.c:
+ * providers/pop3/camel-pop3-provider.c:
+ * providers/imap/camel-imap-provider.c: Updated
+
+ * camel-session.c: Moved service_cache hash table into the
+ providers.
+ (service_cache_remove): Updated.
+ (camel_session_get_service): Updated.
+
+ * camel-url.c (camel_url_hash): Took out the hashing of
+ url->passwd. We don't want this anymore.
+
+ * providers/imap/camel-imap-folder.c (imap_init): Took out
+ references to 'namespace'
+ (camel_imap_folder_init): Same
+
+ * providers/imap/camel-imap-folder.h: No more namespace. We are
+ instead going to use url->path as the namespace.
+
+2000-06-21 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (imap_create): Modified to
+ use the "namespace" (url->path) if it exists.
+
+ * providers/imap/camel-imap-folder.c (imap_delete_message_by_uid):
+ Now just sets the deleted flag on the summary rather than speaking
+ directly to the IMAP server. This is both faster and cleaner.
+
+2000-06-21 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (query_auth_types): Fix dumb
+ bug.
+
+2000-06-21 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message_by_uid):
+ We are getting mail in IMAP now!! whoo-hoo!. Stripped out the
+ filtering so messages may have some dot-stuffing, but the
+ filtering can always be added back in later when we know it
+ works and isn't the problem.
+
+2000-06-21 Peter Williams <peterw@curious-george.helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c (mbox_init): Use the basename
+ of the mailbox so we don't get pathnames like ~/evolution/inbox///movemail.ibex
+
+2000-06-21 Dan Winship <danw@helixcode.com>
+
+ * camel-folder-summary.c (message_info_new): Set date_received
+ based on the first (most recent) "Received" header.
+
+2000-06-20 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-part.c (write_to_stream): flush the filter stream
+ before unreffing it, so it will camel_mime_filter_complete.
+
+ * camel-stream-filter.c (camel_stream_filter_class_init): Fix a
+ braino so camel_stream_flush works here.
+
+ * camel-stream-mem.c (stream_seek): Fix a bug that resulted in
+ large attachments being silently dropped.
+
+ * providers/pop3/camel-pop3-store.c
+ (camel_pop3_command_get_additional_data): Don't use g_strjoinv
+ here, since it is O(n^2) on the length of the output string, and
+ we can do O(n).
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): add a CRLF decoder
+ after the QP/B64 decoder if it's text.
+
+2000-06-20 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary): Only
+ fetch the summary if the folder summary doesn't already exist.
+ When the summary *does* exist, start fetching from 1, not 0.
+ (imap_free_summary): Don't do anything here.
+ (imap_finalize): Free the summary here instead of in
+ imap_free_summary().
+ (imap_set_message_flags): Implemented
+ (imap_sync): Added code to set flags on messages that have had
+ their flags changed (however I #if'd it out until we are more
+ confidant in the IMAP code :)
+ (imap_summary_get_by_uid): Now parese flags correctly.
+ (imap_get_summary): Now parese flags correctly. Also correctly
+ parses the UID correctly.
+
+ * camel-url.c (check_equal): No need to check s1 if s2 is NULL
+ (camel_url_equal): Don't check the passwd component of the url.
+
+2000-06-20 Dan Winship <danw@helixcode.com>
+
+ * camel-folder-summary.c (camel_folder_summary_add): mark the
+ message info with CAMEL_MESSAGE_FOLDER_FLAGGED if we change the
+ uid, so the folder will know that it's dirty.
+
+2000-06-20 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_command_extended):
+ Now returns the last line of data that the server sends back as
+ well. This is needed for commands like SELECT (like Peter pointed
+ out).
+ (camel_imap_command): No longer checks for SELECT (no need)
+
+ * providers/imap/camel-imap-folder.c: Added namespace stuff
+ which we will need later on...
+ (imap_parse_subfolder_line): Convenience function for use in
+ get_subfolder_names()
+ (imap_get_subfolder_names): Updated. Also changed it to use LIST
+ instead of LSUB (temporary change).
+
+2000-06-19 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_init): Set
+ summary equal to NULL.
+ (imap_get_summary): Store the summary in the ImapFolder
+ (imap_summary_get_by_uid): If we have a summary cache in the
+ ImapFolder, first check to see if that message info is in the
+ cached summary first, if not fetch it directly from the IMAP
+ server and append it to the summary cache.
+ (imap_get_message_flags): Don't free the message info that we get
+ back from summary_get_by_uid as we don't want to be corrupting our
+ cached summary.
+
+2000-06-19 Peter Williams <peterw@curious-george.helixcode.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_command{,_extended}): When
+ SELECT'ing a folder for an IMAP command, use _extended to grab the entire
+ response (before we just used camel_imap_command and missed the OK codes)
+
+2000-06-18 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_summary_get_by_uid):
+ Now gets the message flags as it should.
+ (imap_get_summary): Same as imap_summary_get_by_uid
+ (imap_get_permanent_flags): Return the permanent flags stored
+ on the folder.
+ (imap_get_message_flags): Return message flags associated with
+ given uid. Note: we may want to somehow cache summary info so
+ that we don't have to keep querying the IMAP provider in
+ imap_summary_get_by_uid().
+
+2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_free_summary): We were
+ leaking memory - but not anymore!
+ (imap_get_summary): We now get the UIDs and the beginnings of the
+ code to get the message flags as well.
+
+2000-06-17 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-parser.c (folder_scan_header): Don't copy newlines
+ into the parsed header text, and turn any number of tabs and
+ spaces after a newline into a single space.
+
+2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_init): Should now
+ correctly do CAPABILITY.
+
+2000-06-17 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c: Add some debugging printfs
+ when rebulding summary to help figure out why people's summaries
+ are always being rebuilt.
+
+2000-06-17 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_search_by_expression):
+ Began to implement, need to get information on how to
+ deconstruct @expression into an IMAP search expression and
+ parse the results.
+ (imap_init): Now queries the IMAP provider for CAPABILITY to
+ determine if SEARCH is implemented or not.
+
+ * providers/imap/imap.c: Removed - no longer a need to have
+ this as an example for anyone interesting to help mecode IMAP
+ support.
+
+2000-06-16 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_sync): Added code
+ to expunge if called for (still need to finish coding this).
+ (imap_get_uids): Implemented.
+ (imap_get_summary): Found a way to get the date
+ (imap_summary_get_by_uid): Same.
+ (imap_free_summary): Implemented.
+
+ * string-utils.c (strstrcase): Fixed a compile warning
+
+ * providers/imap/camel-imap-summary.c: Removed - we don't
+ need a CamelImapSummary structure.
+
+2000-06-16 Dan Winship <danw@helixcode.com>
+
+ Move flag handling from CamelMimeMessage to CamelFolder. This
+ simplifies several flag-handling pieces of code in the mailer, and
+ lets you change a message's flags without having to fetch the
+ message body. It also means that fully-constructed
+ CamelMimeMessages are now essentially constant, which will help
+ simplify locking issues later since it means two threads
+ interested in the same message can just work with separate copies
+ of it.
+
+ * camel-mime-message.h (struct _CamelMimeMessage): Removed flags
+ and user_flags (moved to summary). Removed expunged and
+ message_number which were unused. Removed message_uid and folder
+ which are no longer needed in the new scheme.
+ (struct CamelMimeMessageClass): Removed message_changed signal and
+ get/set_message_number methods.
+
+ * camel-mime-message.c: Updates for CamelMimeMessage changes.
+ (camel_mime_message_get/set_flags,
+ camel_mime_message_get/set_user_flag): Replaced with methods in
+ CamelFolder.
+ (camel_flag_get, camel_flag_set, camel_flag_list_size,
+ camel_flag_list_free): Moved verbatim to camel-folder-summary.c
+
+ * camel-folder.c (camel_folder_get/set_message_flags,
+ camel_folder_get/set_message_user_flag): New methods (and
+ corresponding useless default implementations)
+ (camel_folder_class_init): add a message_changed signal
+
+ * camel-folder-summary.c (camel_flag_get, camel_flag_set,
+ camel_flag_list_size, camel_flag_list_free): Moved here from
+ camel-mime-message.c
+
+ * providers/mbox/camel-mbox-folder.c (message_changed): Removed.
+ (mbox_get_message_flags, mbox_set_message_flags,
+ mbox_get_message_user_flag, mbox_set_message_user_flag): Tweak
+ summary bits as appropriate. (Functionality moved here from
+ message_changed.)
+ (mbox_get_message_by_uid): Update for CamelMimeMessage changes
+ (less stuff to initialize).
+
+ * providers/imap/camel-imap-folder.c (message_changed): Remove
+ this. It was just copied from the mbox provider and doesn't deal
+ with the real IMAP flag stuff anyway. (So there's currently no
+ flag support in the IMAP provider.)
+ (imap_get_message_by_uid): Update for CamelMimeMessage changes.
+
+ * providers/vee/camel-vee-folder.c: (message_changed): Remove old
+ one. Add a new one to listen for message_changed on each folder
+ and re-emit message_changed signals that correspond to messages in
+ the vfolder.
+ (vee_get/set_message_flags, vee_get/set_message_user_flag): Proxy
+ flag setting to the underlying real messages.
+ (vee_append_message): Removed for now; there's no way to translate
+ this into the new CamelMimeMessage/CamelFolder scheme, but (a)
+ there's also no code which would ever call it and (b) we're
+ probably going want a better interface than append_message for
+ message drag and drop to work anyway. To be revisited.
+
+2000-06-16 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c (rfc2047_decode_word):
+ * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser):
+ * camel-folder-summary.c (summary_build_content_info):
+ KLUDGE! Since neither ETable nor GtkHTML supports UTF-8 yet,
+ output ISO-8859-1 instead, so Ettore can read his Italian mail. :)
+ This will be reverted later.
+
+2000-06-15 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_summary): Started to
+ implement - may want to use ENVELOPE instead of BODY.PEEK[HEADER]
+ (imap_summary_get_by_uid): Started to code, I've got to find a way to
+ get the date in time_t format and also get the flags
+
+ * string-utils.c (strstrcase): Added this convenience function - I
+ know about strcasestr() but it's not portable.
+
+2000-06-15 Dan Winship <danw@helixcode.com>
+
+ * camel-service.c: Remove camel_service_connect_with_url. (URLs
+ must be specified when the service is requested from the session,
+ so that there can only ever be one service for any URL.)
+
+ * camel-folder.c: (camel_folder_open, camel_folder_is_open,
+ camel_folder_get_mode): Kill. Folders are now always open, and
+ handle "closing" sorts of operations at sync or finalize time.
+ (camel_folder_sync): renamed from camel_folder_close. Syncs state
+ to the store but doesn't necessarily close/disconnect.
+
+ * providers/*/camel-*-folder.c: Merge "open" methods into "init"
+ methods. Rename close to sync and update appropriately.
+
+ * providers/imap/camel-imap-store.c: Remove camel_imap_store_open
+ and camel_imap_store_close, which should not have been copied from
+ the POP provider (where the exist to work around limitations of
+ the POP protocol).
+
+ * providers/mbox/camel-mbox-summary.c: fix a bug. (don't expunge
+ deleted messages if called with expunge == FALSE)
+
+ * providers/pop3/camel-pop3-store.c (connect_to_server): Check
+ server for various interesting extensions.
+
+ * providers/pop3/camel-pop3-folder.c (get_uids): If the server
+ supports UIDL, use real UIDs rather than fake ones.
+ (etc): Map uids back to numbers appropriately
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message): Fix to
+ previous change: make sure the "seek" variable ends up with the
+ value it should.
+
+ * providers/mbox/camel-mbox-summary.c (summary_rebuild): Update
+ summary mtime as well as size.
+
+2000-06-14 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message): if the
+ mbox doesn't end with a '\n', write one before appending the new
+ message.
+
+2000-06-14 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-filter-crlf.c (filter): Updated the encoder to allocate
+ more memory (since we are also now adding dots). Also updated the
+ decoder as we have found that it sometimes passes the end of the
+ buffer.
+
+ * providers/pop3/camel-pop3-folder.c (get_message_by_uid): Took out the
+ filter code (we already filter in
+ camel_pop3_command_get_additional_data)
+
+ * camel-folder.c (init): Updated: a separator is now a char* rather
+ than a single char because IMAP can have a string for a directory
+ separator. Also, since IMAP does not begin with a directory separator,
+ there is a new argument (path_begins_with_sep) which decides if a
+ directory should begin with a directory separator.
+
+ * providers/imap/camel-imap-store.c (imap_create): Since, on connect,
+ Camel tries to create INBOX (which already exists on every IMAP
+ provider) we can return TRUE when the folder name is "INBOX".
+
+ * providers/vee/camel-vee-folder.c (vee_init): Updated.
+
+ * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Updated.
+
+ * providers/mbox/camel-mbox-store.c (get_folder): Updated.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_init): Updated.
+
+ * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Updated.
+
+2000-06-14 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
+ Renamed from camel_mbox_summary_expunge. Takes a gboolean saying
+ whether to expunge or just sync the mbox file. Change some
+ g_errors to g_warning so we don't abort. Make the quick
+ X-Evolution updating code lseek around correctly. Update the
+ mbox mtime in the summary file even in the quick case.
+
+ * providers/mbox/camel-mbox-summary.h: make
+ CAMEL_MESSAGE_FOLDER_NOXEV not conflict with
+ CAMEL_MESSAGE_FOLDER_FLAGGED defined in camel-mime-message.h
+
+ * providers/mbox/camel-mbox-folder.c (mbox_close): call
+ camel_mbox_summary_sync to save flag state if not expunging.
+ (mbox_expunge): Update for camel_mbox_summary_expunge rename.
+
+2000-06-13 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (camel_imap_store_open):
+ (camel_imap_store_close): Added.
+ (camel_imap_command_extended): Fixed a segfault and updated
+ to use camel_imap_status()
+ (camel_imap_command): Updated to use camel_imap_status()
+ (camel_imap_status): New convenience function for parsing
+ the return status of an IMAP command
+
+2000-06-12 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c (imap_get_message_by_uid):
+ Works like the POP fetch code, should work temporarily until
+ we get around to coding it the way it "Should Be".
+
+ * providers/pop3/camel-pop3-folder.c (get_message_by_uid): Now uses
+ the camel-mime-filter-crlf decoder when retrieving messages.
+
+ * camel-mime-filter-smtp.c: Deprecated.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Updated to use
+ camel-mime-filter-crlf with my 'dot' extension in place of
+ camel-mime-filter-smtp
+
+ * camel-mime-part.c (write_to_stream): Updated to reflect changes
+ made to camel-mime-filter-crlf.c
+
+ * camel-mime-filter-crlf.c (filter): Modified to be able to
+ encode/decode dots ("\n.\n"<->"\n..\n"). Also fixed the decoder
+ so that it should no longer get caught in an infinite loop.
+
+2000-06-12 Dan Winship <danw@helixcode.com>
+
+ * providers/*/Makefile.am: don't pass a second (incorrect) -rpath
+ in addition to the (correct) one automatically provided by
+ automake.
+
+ * camel-mime-filter-crlf.c: New filter to do CRLF<->LF conversion.
+ (Currently only tested in the LF->CRLF direction.)
+
+ * camel-mime-part.c (write_to_stream): if content-type is text,
+ and it's QP or B64 encoded, pass through the CRLF filter before
+ the other filter to satisfy the "canonical encoding" rules in the
+ MIME spec.
+
+2000-06-09 Dan Winship <danw@helixcode.com>
+
+ * camel-session.c (camel_session_query_authenticator): Add another
+ argument, "mode", which can be CAMEL_AUTHENTICATOR_ASK or
+ CAMEL_AUTHENTICATOR_TELL, so callers can get the app to un-cache
+ bad info.
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): uncache the
+ password if it doesn't work.
+
+2000-06-09 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-stream.c (stream_read): Updated to reflect
+ changes made in camel-imap-store.c
+
+ * providers/imap/camel-imap-store.c (imap_create): No longer checks to
+ make sure a folder doesn't already exists (as this is no longer needed)
+ (camel_imap_command): Now takes a CamelFolder argument so it can detect
+ whether or not it needs to SELECT a folder or not
+ (camel_imap_command_extended): Same.
+
+ * providers/smtp/camel-smtp-transport.c (smtp_connect): Will now always
+ send EHLO first, if that fails it will fall back on HELO.
+ (esmtp_get_authtypes): Should now correctly parse authtypes.
+
+2000-06-07 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-summary.c: Now builds (not that it's worth
+ much yet).
+
+ * providers/imap/camel-imap-folder.c (imap_get_uids): Now uses the
+ correct cast to a CamelImapMessageInfo structure (should get rid of
+ compile warnings).
+
+ * providers/imap/Makefile.am: Added rules to build
+ camel-imap-stream
+
+ * providers/imap/camel-imap-store.c (get_folder): Update.
+ Moved imap_create here.
+
+ * providers/imap/camel-imap-folder.c (delete_messages): Remove.
+ (imap_create): Removed.
+ (imap_delete): Removed.
+ (imap_exists): Removed.
+
+ * providers/imap/camel-imap-stream.h: Added typedef's for the stream
+
+ * providers/imap/camel-imap-stream.c: Modified to build cleanly
+
+2000-06-07 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.c (header_msgid_decode_internal): Properly
+ dereference warning/debug messages.
+ (header_references_decode): Check we actually have msgid stuff
+ before trying to decode it ...
+
+2000-06-06 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-imap-stream.[c,h]: Removed
+
+ * providers/imap/camel-imap-stream.[c,h]: Relocated to this
+ location
+
+ * providers/imap/camel-imap-summary.c: Added
+
+2000-06-06 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c: Remove exists, create, delete. A CamelFolder
+ now always references an existing folder. Remove delete_messages
+ too since it wasn't being used. Add a "create" flag to
+ get_subfolder saying whether or not to create the subfolder if it
+ doesn't yet exist.
+
+ * camel-store.c (camel_store_get_folder): Add a "create" flag to
+ say whether or not to create the folder if it doesn't yet exist.
+ (camel_store_delete_folder): New method, moved from CamelFolder.
+ (cache_folder, uncache_folder): Fix up a bit.
+ (get_folder_name): Explain what this is for.
+
+ * providers/mbox/camel-mbox-folder.c:
+ * providers/mbox/camel-mbox-store.c: Update. Remove support for
+ hierarchical folders to simplify this for now, since we're not
+ using it, and it's not completely clear how they should work in an
+ ELocalStorage world. Needs to be revisited.
+
+ * providers/pop3/camel-pop3-folder.c (delete_messages): Remove.
+ * providers/pop3/camel-pop3-store.c (get_folder): Update.
+
+ * providers/vee/camel-vee-folder.c (exists): Remove.
+ * providers/vee/camel-vee-store.c (vee_get_folder): Update.
+
+2000-06-06 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-*.[c,h]: Started on getting
+ imap to build cleanly (tho some work has not been completed
+ so it still won't build until camel-imap-summary is finished
+ along with a few methods in camel-imap-folder)
+
+ * camel-stream.[c,h]: Changed the read and write method prototypes
+ to return an ssize_t type rather than an int and also changed
+ the 'number of bytes' to read or write to a size_t type
+
+ * camel-stream-fs.c: same as above
+
+ * camel-stream-mem.c: again, same as above
+
+ * camel-stream-buffer.c: same
+
+ * camel-imap-stream.[c,h]: Added this new stream, cache's previously
+ read data so each successive call will instead read from the cache
+
+2000-06-05 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-part.c (camel_mime_part_set_disposition): fix
+ typo/braino (set "Content-Disposition", not "Content-Description")
+ (camel_mime_part_set_filename): const poison
+
+2000-06-02 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.c (base64_encode_step): Ick, damn signs! Fix a
+ bug with sign extended bytes.
+
+ * camel-mime-filter-smtp.c (filter): Changed layout/logic slightly
+ (to match From filter)
+
+2000-06-02 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * camel-mime-filter-smtp.c (filter): Fixed the filter so that it
+ wouldn't insert garbage under certain conditions.
+
+2000-06-02 Christopher James Lahey <clahey@helixcode.com>
+
+ * camel-session.c: Don't ref the services in the cache.
+
+2000-06-02 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c: Rearanged where debug
+ fprintf statements we placed so that any data the server sends
+ back is printed out before an exception is set and the function
+ returns.
+
+2000-06-02 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.c (header_decode_date): If we get a funny
+ result, just throw it out. Basically a fix for the one true
+ broken TradeClient.
+
+2000-06-01 Not Zed <NotZed@HelixCode.com>
+
+ * camel-folder-summary.c (message_info_free): Free
+ references/messsage id.
+ (message_info_save): Save them.
+ (message_info_load): Load them.
+ (message_info_new): And get them from the new message.
+ (CAMEL_FOLDER_SUMMARY_VERSION): Bumped for new changes.
+
+ * camel-folder-summary.h: Added references and messageid to
+ summary.
+
+2000-06-02 Christopher James Lahey <clahey@helixcode.com>
+
+ * camel-session.c: Ref and unref objects in the service cache
+ properly.
+
+ * camel-store.c: Ref the folder when returning it using
+ lookup_folder. Used the folder's full name for the key for the
+ folder cache since that's used to uncache it.
+
+2000-06-02 Dan Winship <danw@helixcode.com>
+
+ Fun with purify.
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): free msg on
+ success as well as failure.
+ (camel_pop3_command_get_additional_data): free buf after reading
+ the last line (".").
+
+ * providers/pop3/camel-pop3-folder.c (get_message_by_uid): free
+ body data after creating the memstream from it (which will copy
+ the data).
+
+ * providers/mbox/camel-mbox-folder.c (mbox_finalize): free summary
+ and index paths.
+
+ * camel-data-wrapper.c (finalize): unref the stream, if it exists.
+
+2000-06-01 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-part.c (construct_from_parser): For a message part,
+ set the default content-type to message/rfc822. Maybe needs to be
+ done for multiparts too?
+
+2000-05-31 Not Zed <NotZed@HelixCode.com>
+
+ * camel-mime-message.c (construct_from_parser): Typo in assersion.
+
+ * camel-mime-parser.c (folder_scan_step): Use a default type of
+ message/rfc822 for multipart/digest. Bug Z192.
+ (folder_scan_drop_step): Remove warning.
+
+2000-05-30 Not Zed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message): Init
+ filter_from to NULL, for exception case.
+ (mbox_get_message_by_uid): Cast off_t to long int for diagnostics.
+
+ * camel-url.c (camel_url_hash): Hash funciton for using camel
+ url's as hash keys.
+ (camel_url_equal): equal function for same.
+
+ * camel-session.c (camel_session_finalise): Free cached services.
+ (camel_session_init): Init service cache.
+ (service_cache_remove): destroy callback to remove a service from
+ the cache.
+
+ * camel-store.c (get_folder_internal): Remove the extra ref of the
+ folder. That seems the right behaviour ...?
+ (camel_store_get_type): Doh, actually call store init, so the
+ cache works.
+ (cache_folder): strdup the folder name! no wonder it never found
+ it again.
+
+2000-05-30 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-folder.c: Implemented a few more
+ methods like imap_append and 1 or 2 others
+
+2000-05-29 Not Zed <NotZed@HelixCode.com>
+
+ * camel-store.c (camel_store_init): Move it to here. If this
+ level is going to maintain it, it should set it up. Lets see what
+ caching folders breaks :(
+
+ * providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Dont
+ init folder cache here.
+
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_expunge): Make sure we copy messages which are
+ still intact to the new folder.
+ (camel_mbox_summary_expunge): Update the frompos as well when
+ moving the content.
+ (camel_mbox_summary_expunge): Remove some debug, and dont offset
+ frompos?
+
+ * providers/vee/camel-vee-folder.c (vee_folder_build): Check the
+ searched folder is open before trying to search it.
+ (message_changed): Track changes to the source message in the
+ summary.
+ (folder_changed): Track folder changes, re-query the folder that
+ changed, and cascade the changed event as well.
+ (camel_vee_folder_finalise): Free subfolder and subfolder summary.
+
+2000-05-29 Dan Winship <danw@helixcode.com>
+
+ * camel-service.c (camel_service_new): Fix up some glib
+ precondition stuff. Try to set the URL in camel_service_new before
+ checking whether or not it's "empty" so that you can successfully
+ set "sendmail:" as a URL.
+
+2000-05-28 Dan Winship <danw@helixcode.com>
+
+ * camel-provider.h: Add a domain field to CamelProvider, to say
+ what kind of data it provides.
+
+ * providers/imap/camel-imap-provider.c:
+ * providers/mbox/camel-mbox-provider.c:
+ * providers/pop3/camel-pop3-provider.c:
+ * providers/sendmail/camel-sendmail-provider.c:
+ * providers/smtp/camel-smtp-provider.c: Set domain to "mail".
+
+ * providers/nntp/camel-nntp-provider.c: Set domain to "news".
+
+ * providers/vee/camel-vee-provider.c: Set domain to "vfolder". (So
+ it doesn't end up being listed as a potential mail source in the
+ mail config wizard.)
+
+ * providers/pop3/camel-pop3-store.c: Split apart password and APOP
+ auth, since some servers seem to do both, but don't really.
+ (connect_to_server): Renamed from try_connect. Now actually does
+ the connection up to the point of checking the greeting for APOP
+ support.
+ (query_auth_types): Return APOP, if appropriate. Call
+ pop3_disconnect after connect_to_server since we don't really want
+ to be connected.
+ (pop3_connect): Use connect_to_server rather than duplicating
+ code. Fix a one-byte buffer overrun in the APOP code.
+ (pop3_disconnect): Make this able to clean up after a partial
+ connect.
+ (connect_to_server): Remove port number from error message since
+ it's not terribly useful and we were getting it from the wrong
+ place anyway.
+
+ * camel-mime-utils.c (header_address_list_format_append): Use
+ `foo@bar' rather than `"" <foo@bar>' for email addresses with no
+ name component.
+
+2000-05-27 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c: Removed
+ camel_imap_command_get_additional_data() as it was
+ completely useless, replaced with
+ camel_imap_command_extended() which may eventually replace
+ camel_imap_command() as well.
+
+ * providers/imap/camel-imap-store.h: Modified to reflect
+ changes made to camel-imap-store.c
+
+ * providers/imap/camel-imap-folder.c: Wrote the first of many
+ methods: camel_imap_init(), imap_open(), imap_expunge(),
+ imap_get_message_count(), and imap_get_subfolder_names()
+
+2000-05-26 Dan Winship <danw@helixcode.com>
+
+ * camel-multipart.c (camel_multipart_init): Don't set a default
+ boundary. Require the caller to do that.
+ (set_boundary): if boundary is NULL, generate a "random" boundary.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Add a call to
+ camel_multipart_set_boundary after creating a new multipart.
+
+2000-05-25 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap/camel-imap-store.c (try_connect): Removed
+ Exception code - Pop doesn't seem to set exceptions
+
+ * providers/imap/camel-imap-folder.c: Initial code, mostly
+ just a template for future code
+
+ * providers/imap/imap.[c,h]: Source code from my personal
+ mailer - for reference only!
+
+2000-05-25 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Replace simple
+ data wrapper here too, oops.
+
+ * Makefile.am (libcamel_la_SOURCES): Removed
+ camel-simple-data-wrapper again. Less code to maintain == better
+ code.
+
+ * camel-data-wrapper.c (construct_from_stream): Fixes for bug
+ where text attachments dont work. Made data-wrapper concrete for
+ the second time.
+
+2000-05-23 NotZed <NotZed@HelixCode.com>
+
+ * providers/vee/camel-vee-folder.c (vee_folder_build_folder):
+ Update the vfolder details for a single folder.
+
+2000-05-25 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (_send_to): Took out code
+ that had been there to reconnect to the server if it was not
+ already connected - Mailer code was fixed so that this should not
+ be needed.
+
+ * providers/imap/camel-imap-store.[c,h]: Initial code.
+
+2000-05-24 Dan Winship <danw@helixcode.com>
+
+ * camel.h: Re-add camel-simple-data-wrapper.h, which was removed
+ for some reason.
+
+2000-05-24 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.[c,h]: Moved global
+ variables into struct CamelSmtpTransport to make SMTP
+ thread-safe
+
+ * providers/imap/camel-imap-*.h: Stolen from Mbox. Rough structure
+ for Imap.
+
+2000-05-23 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/imap: Added some initial code to the camel tree
+ for IMAPv4
+
+ * providers/imap/.cvsignore: Added to repository
+
+ * providers/smtp/camel-smtp-transport.c: Added debug fprintf's
+ so that testers can provide more information. Tested with simple
+ messages and a reply to the hello@helixcode.com default message
+ but should really be tested more.
+ (smtp_data): Fixed to use data_wrapper_write_to_stream.
+
+ * camel-mime-filter-smtp.c (filter): Modified to escape all lines
+ beginning with a '.' and to place a \r before each \n if one did
+ not previously exist. Removed code to escape "From " as it was
+ found to not be needed for SMTP.
+
+2000-05-22 Jeffrey Stedfast <fejj@helixcode.com>
+
+ * providers/smtp/camel-smtp-transport.c (smtp_data): Fixed the
+ filtered stream. Fixes for stream changes, updated to use
+ camel-mime-filter-smtp.
+
+ * Makefile.am: Added camel-mime-filter-smtp.c
+
+ * camel-mime-filter-smtp.[c,h]: Added to camel tree
+ Smtp filter used to change \n into \r\n, escape lone dots,
+ and escape "From "'s.
+
+2000-05-19 NotZed <NotZed@HelixCode.com>
+
+ * camel-simple-data-wrapper.c (construct_from_stream): If we
+ already have been constructed, unref our content.
+ (write_to_stream): Check we've been constructued, and change for
+ stream api changes.
+
+ * camel-mime-parser.c: Removed exception stuff.
+
+ * md5-utils.c (md5_get_digest_from_stream): repaired.
+
+ * camel-mime-message.c: Remove exception from write_to_stream, and
+ fix, and fix formatting.
+
+ * providers/sendmail/camel-sendmail-transport.c (_send_internal):
+ Fix for stream changes.
+
+ * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fixes
+ for stream changes.
+
+ * providers/mbox/camel-mbox-folder.c, and elsewhere, fix all
+ stream api changes.
+ (mbox_append_message): Use stream_close() now its back.
+ (mbox_append_message): unref the from filter.
+
+ * camel-stream-mem.c: And here.
+
+ * camel-stream-fs.[ch]: Here too.
+
+ * camel-stream-filter.c: Likewise. This is getting tedious.
+
+ * camel-stream-buffer.c (stream_write): Fix a few little problems.
+ (stream_close): Reimplement.
+ (camel_stream_buffer_read_line): Slightly more efficient version,
+ that also only allocates the right amount of memory for strings.
+
+ * camel-seekable-substream.c: Likewise.
+
+ * camel-seekable-stream.[ch]: Remove exceptions, fix formatting,
+ changes for stream (re)fixes. set_bounds returns an error.
+
+ * camel-stream.[ch]: Remove exceptions. Make flush and reset return
+ an error code, repair all the screwed up formatting, and put back
+ close.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): And here.
+
+ * camel-mime-part.c (camel_mime_part_set_content): And this too.
+ (write_to_stream): Fixed for stream changes.
+
+ * camel.h: Fixed.
+
+ * providers/vee/camel-vee-folder.c (vee_search_by_expression):
+ Implement. Performs an intersection of the two searches.
+ (camel_vee_folder_finalise): Unref search folders.
+ (vee_append_message): Implement append.
+
+2000-05-18 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c: remove message_number_capability and require uid
+ capatibility.
+ (camel_folder_list_subfolders, camel_folder_get_uid_list,
+ camel_folder_get_subfolder_info, camel_folder_get_message_info):
+ removed
+ (camel_folder_get_subfolder_names,
+ camel_folder_free_subfolder_names): new subfolder interfaces.
+ (camel_folder_get_uids, camel_folder_free_uids): new uid
+ interfaces
+ (camel_folder_get_summary, camel_folder_free_summary): new summary
+ interfaces
+
+ * providers/mbox/camel-mbox-folder.c,
+ * providers/nntp/camel-nntp-folder.c:
+ * providers/vee/camel-vee-folder.c: Update for changes
+
+ * providers/pop3/camel-pop3-folder.c: Implement get_uids, update
+ for other changes.
+
+2000-05-18 NotZed <NotZed@HelixCode.com>
+
+ * providers/vee/camel-vee-folder.c: Guess!
+
+ * camel-folder-search.c (search_user_flag): Implement user_flag
+ search term.
+
+ * camel-folder-search.h: Added user_flag search capability
+ (user-flag "blah")
+
+ * providers/mbox/camel-mbox-folder.c (mbox_init): Set USER flag in
+ permanent flags for the folder.
+
+2000-05-17 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c: Remove unused async open/close and
+ copy_message_to functions.
+ Rename functions without initial _. Fix glib preconditions and
+ gtk-doc comments.
+
+2000-05-17 Dan Winship <danw@helixcode.com>
+
+ * camel-data-wrapper.c: remove get/set_output_stream operations.
+ They're redundant with write_to_stream, and CamelMimePart and
+ CamelMimeMessage only implement the latter, meaning that trying to
+ get_output_stream on a CamelMimeMessage that was built from pieces
+ rather than being parsed from a stream doesn't work. Anything that
+ uses get_output_stream can be rewritten to use write_to_stream, so
+ we'll standardize on that.
+ (camel_data_wrapper_new): remove this: CamelDataWrapper is
+ supposed to be an abstract class.
+ (write_to_stream): remove default implementation. (Moved to
+ CamelSimpleDataWrapper)
+
+ * camel-simple-data-wrapper.c: resurrect, although it's not really
+ the same thing it was before. A simple data wrapper, which is
+ backed by a CamelStream.
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): Use
+ construct_from_stream rather than set_output_stream.
+ (camel_mime_part_construct_content_from_parser): Change
+ camel_data_wrapper_new to camel_simple_data_wrapper_new.
+
+ * camel-mime-part.c (camel_mime_part_set_content): Change
+ camel_data_wrapper_new to camel_simple_data_wrapper_new.
+
+2000-05-17 Darin Adler <darin@eazel.com>
+
+ * camel-folder-summary.c: (message_info_load):
+ Quick fix to get it to compile. I hope I don't get into trouble.
+
+2000-05-17 Dan Winship <danw@helixcode.com>
+
+ * camel.h: Don't include the no-longer-distributed
+ possibly-to-be-removed headers.
+
+ * providers/smtp/camel-smtp-transport.c
+ (smtp_get_email_addr_from_text): fix an off-by-one error in
+ address parsing
+ (smtp_data): use camel_data_wrapper_get_output_stream rather than
+ data_wrapper->output_stream
+
+2000-05-17 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-folder.c (message_changed): Snoop
+ changes to user flags on the message into the summary as well.
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_init):
+ Changed version init to include the parent class version info
+ (i.e. add it not overwrite it).
+
+ * camel-folder-summary.c (message_info_new): Initialise user_flags
+ to empty.
+ (message_info_load): And load user flags.
+ (message_info_save): And save user flags.
+ (message_info_free): And free them.
+ (CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision.
+
+ * camel-folder-summary.h: Added user-flags to summary.
+
+ * camel-mime-message.c (camel_mime_message_set_user_flag): Dont
+ use a hashtable for user flags.
+ (camel_mime_message_get_user_flag): And changed here too.
+ (camel_flag_get): New interface to get a flag from a flag
+ list. Flag lists are easier to work with than hash tables, and
+ save memory too.
+ (camel_flag_set): And set.
+ (camel_flag_list_free): And free.
+ (free_key_only): Discard.
+ (finalize): Remove the flag list.
+
+2000-05-17 Jeffrey Stedfast <fejj@stampede.org>
+
+ * providers/smtp/camel-smtp-transport.c: (smtp_helo): Error
+ checking on gethostbyaddr() eliminating a possible segfault.
+
+2000-05-16 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-folder.c (mbox_delete_message_by_uid):
+ Implement.
+
+2000-05-12 NotZed <NotZed@HelixCode.com>
+
+ * camel-movemail.c (camel_movemail): Open the destination with
+ O_APPEND, so we dont blow away a partially transferred mbox.
+ (camel_movemail): Loop if we get errno=INTR, and not fail.
+
+2000-05-11 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-summary.c (summary_rebuild): Update
+ the summarised file size, if everything went ok.
+ (camel_mbox_summary_expunge): Clear header flags after updating.
+
+2000-05-16 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-folder.c:
+ * providers/nntp/camel-nntp-folder.h:
+ * providers/nntp/camel-nntp-provider.c:
+ * providers/nntp/camel-nntp-store.c:
+ * providers/nntp/camel-nntp-utils.c:
+ * providers/nntp/camel-nntp-utils.h:
+ get things working with new camel summary stuff.
+
+ * providers/nntp/camel-nntp-summary.c:
+ * providers/nntp/camel-nntp-summary.h:
+ removed files since camel-folder-summary does all we need.
+
+2000-05-15 Jeffrey Stedfast <fejj@stampede.org>
+
+ * providers/smtp/camel-smtp-transport.c: Added some preliminary
+ AUTH support.
+
+2000-05-15 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.h: Remove camel_folder_get_summary, which no longer
+ exists.
+
+2000-05-11 Dan Winship <danw@helixcode.com>
+
+ * Makefile.am: remove some cruft that we're not currently using.
+
+ * camel-stream-mem.c (camel_stream_mem_new_with_buffer): Change
+ to match prototype (size_t vs unsigned int) so it works on 64-bit
+ machines. Noted by msw.
+
+2000-05-11 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-folder.c (message_changed): Indicate
+ the summary changed also.
+
+2000-05-11 Jeffrey Stedfast <fejj@stampede.org>
+
+ * providers/smtp/camel-smtp-transport.c: (smtp_helo):
+ Updated to more closely comply with RFC 821 standards
+
+2000-05-11 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-part.c (write_to_stream): Unref the filter after
+ adding it to the filtering stream.
+
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_finalise): Free the folder path.
+ (camel_mbox_summary_update): Also save summary when done.
+ (camel_mbox_summary_expunge): Unindex items when deleting them.
+ (camel_mbox_summary_expunge): Save the index as well as the
+ summary.
+
+ * camel-folder-summary.c (camel_folder_summary_finalise): Free the
+ summary path.
+ (camel_folder_summary_touch): New function, indicate the summary
+ info changed.
+ (camel_folder_summary_remove): Dirty here.
+
+ * camel-internet-address.c (internet_decode): Free multiple entry
+ addresses properly.
+
+ * camel-mime-utils.c (header_decode_mailbox): Plugged another
+ memleak, free text after converting it.
+ (header_decode_addrspec): More leaks plugged.
+
+ * camel-mime-message.c (finalize): Free message_uid.
+ (finalize): Free the recipients hashtable.
+
+2000-05-11 NotZed <notzed@helixcode.com>
+
+ * camel-folder-summary.c (camel_folder_summary_finalise): Free
+ summary items and charset filters.
+
+2000-05-10 NotZed <notzed@helixcode.com>
+
+ * camel-folder-summary.c (camel_folder_summary_finalise): Don't
+ free stuff in p, after we've free'd p.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message): Unref
+ the stream we created for appending.
+
+2000-05-10 Jeffrey Stedfast <fejj@stampede.org>
+
+ * providers/smtp/camel-smtp-transport.c: (camel_smtp_transport_class_init):
+ Added initialization for service_class
+
+2000-05-10 Dan Winship <danw@helixcode.com>
+
+ * camel-multipart.c (write_to_stream): fix a stupid typo. Thank
+ you, C.
+
+ * camel-mime-part.c (write_to_stream): don't ref the stream before
+ wrapper a filter around it, since nothing will ever unref it.
+
+2000-05-10 Christopher James Lahey <clahey@helixcode.com>
+
+ * Makefile.am: Added camel-types.h, camel-folder-pt-proxy.h, and
+ camel-thread-proxy.h.
+
+2000-05-09 Dan Winship <danw@helixcode.com>
+
+ * providers/sendmail/camel-sendmail-transport.c (_send_internal):
+ Bleah. Can't fsync a pipe. As a quick kludge, just don't
+ stream_flush it. The right fix will require bringing back
+ stream_close though.
+
+2000-05-09 Jeffrey Stedfast <fejj@stampede.org>
+ * camel-internet-address.[c,h]: Undid my changes (moved
+ struct _address back into came-internet-address.c)
+ * providers/smtp/camel-smtp-transport.c: (_send): changed
+ from using it's own address manipulation (using struct _address)
+ to using camel_internet_address_get(). Also some format changes
+ to keep consistant with the rest of Camel
+
+2000-05-09 Jeffrey Stedfast <fejj@stampede.org>
+
+ * camel-internet-address.[c,h]: Moved struct _address from
+ camel-internet-address.c to camel-internet-address.h
+ (hopefully this doesn't break anything...)
+ * providers/smtp/camel-smtp-transport.c: (_send): now
+ populates the recipient list with To, Cc, and Bcc addresses.
+ Should now be able to use this module.
+
+2000-05-09 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
+ one more refcounting fix I missed before.
+
+2000-05-08 Jeffrey Stedfast <fejj@stampede.org>
+
+ * providers/smtp/camel-smtp-transport.c: no longer frees memory it
+ shouldn't, updated to reflect camel-stream changes involving
+ CamelException (perhaps it should use a different CamelException
+ variable than is passed to the camel smtp module?)
+
+2000-05-08 Dan Winship <danw@helixcode.com>
+
+ * camel-stream.c (camel_stream_read, camel_stream_write,
+ camel_stream_flush, camel_stream_reset, camel_stream_printf,
+ camel_stream_write_to_stream): Use CamelException to signal
+ failure.
+ (camel_stream_write_strings): Remove. camel_stream_printf is more
+ useful in most of the places that used this.
+ (camel_stream_write_string): Change from macro to function to
+ prevent problems with double-evaluation.
+
+ * camel-seekable-stream.c (camel_seekable_stream_seek,
+ camel_seekable_stream_set_bounds): Use CamelException.
+ (reset): Update.
+
+ * camel-seekable-substream.c, camel-stream-buffer.c,
+ camel-stream-filter.c, camel-stream-fs.c, camel-stream-mem.c:
+ Update.
+
+ * camel-stream-fs.c: Remove the virtual init functions and move
+ the code into the creator functions. Add CamelExceptions to
+ creation functions that could fail.
+
+ * camel-data-wrapper.c (camel_data_wrapper_write_to_stream): Use
+ CamelException.
+ * camel-mime-message.c, camel-mime-part.c, camel-multipart.c
+ (write_to_stream): Update.
+
+ * camel-mime-parser.c: add an exception to the mime parser private
+ data and pass that to stream functions as needed.
+
+ * gmime-content-field.c, md5-utils.c: Update (badly) for stream
+ changes.
+
+ * camel-exception.h (camel_exception_is_set): convenience macro.
+
+ * providers/Makefile.am: disable SMTP for now
+
+ * providers/mbox/camel-mbox-folder.c (mbox_append_message): Pass
+ CamelException to the functions that now need it. Check the
+ exception after calling camel_stream_flush, and fail if it fails.
+ (mbox_get_message_by_uid): More updates.
+
+ * providers/pop/camel-pop3-folder.c,
+ providers/pop/camel-pop3-store.c,
+ providers/sendmail/camel-sendmail/transport.c: Update.
+
+
+2000-05-08 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-message.c (process_header): Format From and Reply-To
+ to at least a decoded string. Should probably store them as an
+ camelinternetaddress.
+
+ * Merged NEW_SUMMARY branch back to trunk, and resolved conflicts.
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_update):
+ Return status.
+ (camel_mbox_summary_expunge): Force an update of the summary
+ before we do anything.
+ (camel_mbox_summary_expunge): Build new xev line in xevnew, and
+ free that, and consify xev.
+ (camel_mbox_summary_load): If we are rebuilding from scratch, make
+ sure we clear the summary content.
+
+ * camel-stream-filter.c (do_close): We NEED a stream close.
+
+2000-05-07 Dan Winship <danw@helixcode.com>
+
+ Make camel not leak like a sieve.
+
+ * camel-object.c: New subclass of GtkObject which is now the base
+ of the Camel object hierarchy. Currently the only difference
+ between CamelObject and GtkObject is that CamelObjects don't start
+ out floating.
+
+ * *.h: Move a bunch of typedefs to camel-types.h. Standardize on
+ using <camel/foo.h> in header files rather than <foo.h>, "foo.h",
+ or "camel/foo.h". Remove some unneeded includes.
+
+ * camel-address.c, camel-data-wrapper.c, camel-folder-search.c,
+ camel-folder-summary.c, camel-folder.c, camel-mime-filter.c,
+ camel-mime-parser.c, camel-service.c, camel-session.c,
+ camel-stream.c: These are now subclasses of CamelObject.
+
+ * camel-data-wrapper.c (set_output_stream):
+ * camel-medium.c (set_content_object):
+ * camel-seekable-substream.c
+ (init_with_seekable_stream_and_bounds):
+ * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
+ remove gtk_object_sink calls.
+
+ * camel-stream-buffer.c (init_vbuf):
+ * camel-stream-filter.c (camel_stream_filter_new_with_stream):
+ ref the original stream.
+
+ * camel-folder-summary.c (camel_folder_summary_finalise): unref
+ the filters when finalizing.
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser,
+ camel_mime_part_construct_content_from_parser):
+ * camel-mime-part.c (camel_mime_part_set_content): Unref objects
+ that are created only to be handed off to other objects. If
+ they're going to be needed later, they will have been additionally
+ ref'ed by the object that needs them.
+
+ * providers/pop3/camel-pop3-folder.c (get_message_by_number):
+ unref the message stream after creating the data from it.
+
+ * camel-stream.c, camel-stream-buffer.c, camel-stream-filter.c,
+ camel-stream-fs.c, camel-stream-mem.c: Remove camel_stream_close,
+ since its semantics are dubious (what happens when you close a
+ stream other people still have references on?).
+
+ * providers/nntp/camel-nntp-store.c:
+ * providers/smtp/camel-smtp-transport.c:
+ * providers/pop3/camel-pop3-store.c:
+ replace camel_stream_close calls with gtk_object_unref.
+
+ * providers/mbox/camel-mbox-folder.c:
+ * providers/nntp/camel-nntp-folder.c:
+ * providers/sendmail/camel-sendmail-transport.c:
+ replace camel_stream_close with camel_stream_flush +
+ gtk_object_unref
+
+2000-05-06 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (query_auth_types): A machine
+ which serves neither POP nor KPOP is not a POP server.
+
+ * providers/smtp/camel-smtp-provider.c: Note in the description
+ that this provider is not yet tested.
+
+2000-05-08 NotZed <notzed@helixcode.com>
+
+ * camel-mime-part.c (write_to_stream): Free the filter stream when
+ done.
+
+ * camel-mime-parser.c (folder_seek): Make sure we add the \n
+ terminal when we seek as well (frob!).
+
+ * camel-mime-utils.c (header_decode_addrspec): Plug minor memleak.
+
+ * camel-mime-part.c (finalize): Free header tables once finished.
+
+ * camel-folder-summary.c (camel_folder_summary_remove): Dont try
+ to access info after its free'd.
+
+2000-05-07 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-part.c (write_to_stream): Apply encoding to content
+ part, when writing to a stream *sigh*.
+
+ * camel-stream-filter.c (do_write): implement write for the
+ filtering stream. Writes shouldn't be mixed with reads.
+ (do_flush): Implemented flush. Again write/flush shouldn't be
+ mixed with reads. Only flushes if the last op was write.
+ (do_close): Force flush on close.
+
+ * camel-mime-filter.c (filter_run): Oops, make sure we include the
+ backlen in the total length before passing onto the filter.
+
+ * camel-mime-filter-from.c: New filter, munges 'From ' lines into
+ '>From ', for mbox.
+
+ * camel-mime-parser.c (camel_mime_parser_header_remove): New
+ function to remove the parser's raw header, rather than
+ manipulating the header directly (wich doesn't work with
+ mempools).
+
+ * camel-mime-utils.c (header_address_list_clear): Fixed some
+ broken(tm) logic, which would leak entries on multivalued lists.
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
+ Use ibex_save() to save the ibex. Makes a big difference to
+ startup times for very large mailboxes.
+ (camel_mbox_summary_expunge): Dum de dum, reimplemented. Designed
+ to be much more robust, and to stop immediately if anything awry
+ happens.
+ (copy_block): Utility function to copy n bytes from one fd to
+ another.
+ (header_write): Utility function to write out raw headers to an
+ fd.
+ (camel_mbox_summary_update): Incremental summary updater.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
+ Dont unref the stream, because of the broken(tm) ref model of gtk
+ widget that for some odd reason is being perpetuated in camel.
+ (mbox_expunge): Reenable expunge again.
+ (mbox_append_message): Removed the optimised mbox append. If its
+ an issue, it can go back later. Cleaned up a lot, checks error
+ returns, and automagically translates 'From ' into '>From' as
+ necessary.
+
+2000-05-07 NotZed <notzed@helixcode.com>
+
+ * camel-mime-filter.c (filter_run): Oops, forgot to add the
+ backlen to the pre-buffer (*poof*).
+
+2000-05-07 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-message.c (construct_from_parser): Allow
+ HSCAN_FROM_END to terminate the processing of a message.
+
+ * camel-folder-summary.c (perform_content_info_load): Ick, dont
+ try and append a node onto its own list.
+ (camel_folder_summary_clear): Actually clear the indexes after
+ we've removed the messages.
+ (camel_folder_summary_clear): Set dirty if it changes.
+ (camel_folder_summary_load): Clear dirty.
+ (camel_folder_summary_save): Only save if dirty.
+
+ * providers/mbox/camel-mbox-summary.c (summary_header_load): Oops,
+ remember to call that parent class first ...
+ (summary_header_save): Here too.
+ (camel_mbox_summary_load): Do more checking to verify the index
+ contents as well as teh summary contents, against the mbox
+ contents.
+ (camel_mbox_summary_load): Removed some fo that checking, it needs
+ more code to work reliably.
+
+2000-05-07 NotZed <notzed@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
+ Set the size and mtime of the mbox we indexed once done.
+
+ * camel-folder-summary.c (camel_folder_summary_set_index): Dont
+ write the index if it changes - let the claler fix it (uh, kind of
+ impacts performance).
+ (camel_folder_summary_load): close in.
+
+ * camel-folder-summary.c (summary_format_string): Check header
+ exists before trying to strip its leading spaces.
+
+2000-05-06 NotZed <NotZed@HelixCode.com>
+
+ * camel-folder.h: Removed summary info from here, and include
+ camel-folder-summary.h as well.
+
+ * camel-mime-parser.c (camel_mime_parser_step): Allow it to accept
+ a NULL databuffer.
+
+ * providers/mbox/camel-mbox-summary.c: Totally new file, now
+ subclasses camel-folder-summary.
+
+ * camel-folder-summary.c (message_info_load): Load the uid as a
+ string.
+ (message_info_save): And save too.
+ (camel_folder_summary_clear): New function, clears the contents of
+ the summary.
+
+ * providers/mbox/camel-mbox-folder.c: Fixes for summary changes.
+ (mbox_get_message_by_uid): Completely redone. Now cross-checks
+ the summary information to make sure we get a real message.
+ (mbox_append_message): Disabled the copy version of append for
+ now.
+ (mbox_expunge): Temporarily disabled the expunge function, until
+ it is put back in camel-mbox-summary.c
+
+2000-05-05 NotZed <NotZed@HelixCode.com>
+
+ * camel-folder-summary.c: And same here ...
+ (camel_folder_summary_encode_fixed_int32): Ugh, fwrite doesn't
+ return -1 on error ..
+ (camel_folder_summary_decode_fixed_int32): Neither deos fread.
+ (camel_folder_summary_encode_token): Fix here too.
+ (summary_build_content_info): Use start-headers to get the pos of
+ the message, not parser_tell(), which might not be what we
+ expected because of parser_unstep().
+ (camel_folder_summary_encode_token): Use bserch() to tokenise the
+ values, rather than a linear search.
+
+ * camel-mime-utils.c: Defined out some memory profiling stuff I
+ left there by mistake.
+ (header_decode_mailbox): Dont try to append the word part of a
+ local address if we ran out of words.
+
+ * camel-mime-parser.c (folder_scan_content): Apply the fix from
+ the header scanner to here too.
+ (folder_scan_header): Only check for end of header if we have
+ space for it (didn't end the read with a newline)
+ (folder_scan_header): inptr is the only real thing we need
+ registerised for performance. Try to help the compiler be smart
+ about it ..
+ (folder_scan_header): Simplified the save header case a tad.
+
+ Commented out some memory profiling stuff.
+
+2000-05-05 NotZed <notzed@helixcode.com>
+
+ * camel-mime-utils.c (header_decode_mailbox): Plug a memory leak.
+ (header_decode_text): Fixed memory leaks with g_string_append().
+ (header_encode_string): And here too, and a few other places. The
+ glib api is so awful ...
+ (header_content_type_decode): More memory leaks.
+
+2000-05-05 NotZed <notzed@helixcode.com>
+
+ * camel-mime-parser.c (folder_scan_init_with_fd): Make sure we
+ init the end of buffer sentinal!
+ (folder_scan_init_with_stream): And here too ...
+
+2000-05-04 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-folder.c (summary_get_message_info):
+ Maxcount is minimum of the max and the requested count, not the
+ maximum :)
+
+ * camel-mime-parser.c (folder_scan_content): Properly set midline,
+ so we dont falsely catch offset boundary markers (i.e. From inside
+ content).
+ (folder_read): Set a sentinal on the end of the read data (\n) so
+ we dont have to check the buffer boundary in the inner loop.
+ (mempool_*): New experimental memory management routines, speed
+ up simple structure parsing by about 25% ... not compiled in by
+ default. Something similar may be needed for camel-mime-utils to
+ address performance issues with g_malloc and friends.
+
+ * camel-mime-utils.c: Added a macro w(x) used to wrap all warnings
+ about mime/rfc violations, so they can be turned off.
+
+ * camel-folder-summary.c (summary_build_content_info): Step after
+ the end of a message ...
+ Turn into a stand-alone program for testing and profiling.
+
+2000-05-04 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Don't fall
+ back to plaintext passwords if APOP fails, since it should also
+ fail.
+
+2000-05-04 Dan Winship <danw@helixcode.com>
+
+ * camel-session.c (camel_session_list_providers): New function to
+ replace camel_provider_scan. Returns a list of either (a) all
+ currently-loaded providers, or (b) all available providers.
+
+ * camel-url.[ch]: Add an "empty" flag to CamelURL (indicating that
+ it contains only a protocol).
+
+ * camel-service.c (camel_service_query_auth_types): Make this take
+ a CamelException (since it may have to try to connect to the
+ server, and it might not able to.)
+
+ * providers/pop3/camel-pop3-store.c: add KPOP (Kerberized POP)
+ support. This is mostly so I have two kinds of authmech to play
+ with instead of just one. (But it does actually work.)
+
+ * providers/smtp/camel-smtp-transport.c (query_auth_types): update
+ for prototype change, but disable the functionality, since it
+ doesn't really support any auth types yet.
+ (camel_smtp_transport_get_type): add an object init function to
+ set the service url_flags.
+
+2000-05-04 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-summary.c: Yes, and anotherone.
+
+ * camel-mime-utils.c: And another one.
+
+ * camel-mime-part.c: And another one.
+
+ * camel-mime-part-utils.c: And another one.
+
+ * camel-folder-search.c: And another one.
+
+ * camel-mime-parser.c: Reverted a change wihtout a ChangeLog entry.
+
+2000-05-04 NotZed <NotZed@HelixCode.com>
+
+ * camel-folder-summary.[hc]: Yes, CamelFolderSummary is back ...
+ ... re-usable class to summarise and index any stream or message
+ and to manage/load/save the created summaries.
+
+ * camel-folder.c: Include string.h to kill a warning.
+
+2000-05-03 Jason Leach <leach@wam.umd.edu>
+
+ * Makefile.am (INCLUDES): add $(UNICODE_CFLAGS) to the INCLUDES,
+ people who installed libunicde in non-standard include paths need
+ this.
+
+2000-05-03 NotZed <NotZed@HelixCode.com>
+
+ * camel-folder.h: Added pos/bodypos/endpos to the basic message
+ content info object. Size to be removed? Moved the
+ messageconentinfo and messageinfo back to camel-folder-summary.h.
+
+ * camel-mime-filter-index.c (camel_mime_filter_index_set_ibex):
+ New function to (re)set the index to use on a filter.
+
+ * camel-mime-parser.c (camel_mime_parser_scan_from): Whole bunch
+ of inline docs.
+ (camel_mime_parser_drop_step): New function to drop a state from
+ the parser. Needs more testing.
+
+ * camel-mime-utils.c (rfc2047_decode_word): If the iconv handle is
+ -1, then dont try and convert (crashes unicode_iconv?).
+ (rfc2047_decode_word): Use alloca for variables instead of
+ g_malloc - by the rfc they should always be short.
+ (rfc2047_decode_word): If we can't do the charset conversion, undo
+ the quoted-printable/base64 at least? Should probably convert
+ unknown characters to the utf-8 unknown character.
+
+2000-05-02 Larry Ewing <lewing@helixcode.com>
+
+ * camel-mime-utils.c (header_decode_date): fix typo when
+ dereferencing saveoffset.
+
+2000-05-02 NotZed <NotZed@HelixCode.com>
+
+ * camel-folder-search.c: Added some header doco.
+
+ * camel.h: REmove gmime-utils.h from here.
+
+ * providers/mbox/camel-mbox-search.[ch]: Removed. Functionally
+ redundant.
+
+ * providers/mbox/camel-mbox-folder.c (mbox_search_by_expression):
+ Use the new CamelFolderSearch class to do the actual searching,
+ just setup the search here.
+
+ * camel-folder-search.[ch]: A helper class that providers may
+ subclass to provide their own search functionality, or they can
+ simply use as is, it supports body searches if an ibex is
+ supplied, and header searches if a summary is supplied.
+
+2000-05-02 Matt Loper <matt@helixcode.com>
+
+ * Makefile.am: set G_LOG_DOMAIN.
+ * providers/MH/Makefile.am: same.
+ * providers/maildir/Makefile.am: same.
+ * providers/mbox/Makefile.am: same.
+ * providers/nntp/Makefile.am: same.
+ * providers/pop3/Makefile.am: same.
+ * providers/sendmail/Makefile.am: same.
+ * providers/smtp/Makefile.am: same.
+
+2000-05-02 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-search.c
+ (camel_mbox_folder_search_by_expression): Dont store/remove
+ current search from the search list.
+
+ * providers/mbox/camel-mbox-folder.h: Removed searches list,
+ searches are all sync now.
+
+ * gmime-utils.[ch]: What the hell, remove it. This will break the
+ nntp provider. The mime parser can be used instead though.
+ Removed from all code including it (but none were using it).
+
+ * gmime-utils.c (_store_header_pair_from_string): Removed bizarre
+ string_dichotomy version of this. This code is somewhat redundant
+ now, and is headed for death anyway.
+
+ * gstring-util.c (g_string_dichotomy): Same with this one.
+ (g_string_clone): Removed a memory leak, g_string_new() allocates
+ its own memory.
+ (g_string_append_g_string): Allow to append an empty gstring onto
+ another gstring, dont abort()!
+
+ * string-utils.c (string_dichotomy): Removed this incredibly weird
+ function.
+
+ * camel-folder.c (_create): Replaced the rather obtuse use of
+ "string_dichotomy" function with a simple strrchr(). Still not
+ sure it'll work.
+
+ * camel-folder-summary.c: cvs removed a long-removed file.
+
+ * camel-mime-parser.c (folder_scan_header): Fix the previous
+ overflow problem properly (can happen in 2 places).
+ (header_append): A new macro to include the code changed above, so
+ it only appears in one place.
+ (folder_scan_step): Change the content type to text/plain if the
+ multipart is broken. Doesn't actually change the header though.
+ (header_append): Also move the header-start tracking stuff here.
+ Could be a static function to save code.
+
+2000-05-02 NotZed <notzed@helixcode.com>
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): Dont use autofill on
+ these fucking long function anmes!!!!!!
+
+2000-05-02 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_expunge): Fix the offset for the summary when
+ an item is expunged to take account of the From line.
+
+2000-05-01 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-folder.h (CamelMboxFolder): Removed
+ search_id.
+
+ * providers/mbox/camel-mbox-search.c
+ (camel_mbox_folder_search_cancel): Remove.d
+ (camel_mbox_folder_search_complete): Removed.
+ (camel_mbox_folder_search_by_expression): Changed back to sync
+ api.
+ (struct _searchcontext): Removed cancelled flag.
+ (find_context): Removed.
+ (func_header_contains): Debug out some search stuff.
+
+ * providers/mbox/camel-mbox-search.h
+ (camel_mbox_folder_search_by_expression): Moved back to sync api.
+
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_set_flags_by_uid): New function to update the
+ flags in the summary.
+ (camel_mbox_summary_expunge): Expunge messages from a folder.
+ (offset_content): Re-align offsets of summary when messages
+ added/removed to an existing summary.
+ (camel_mbox_summary_remove_uid): Remove a message summary entry by
+ uid.
+ (index_folder): Restore flags from X-Evolution header, if they are set.
+ (index_folder): Make sure we index using a decimal uid, since
+ thats what everything else indexes off (oops).
+ Upped SUMMARY_VERSION as a result.
+ (camel_mbox_summary_expunge): Oops, my wrong, use the string uid
+ to unindex on.
+
+ * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
+ Connect to the message_changed signal.
+ (_init): Set permanent flags to something reasonable. No user
+ flags yet ...
+ (message_changed): If the flags of the message change, update the
+ flags in the summary.
+ (mbox_expunge): Implement the expunge.
+ (camel_mbox_folder_class_init): Renamed all leading _'s to mbox_'s
+ (mbox_expunge): Emit a folder_changed signal on expunge (uh, even
+ if it didn't ...)
+
+ * camel-folder.c (_finalize): Uh, dont free permanent_flags
+ anymore (this wouldn't failed anyway, it was a GList !!!)
+ (camel_folder_search_complete): Removed.
+ (camel_folder_search_cancel): Removed.
+ (camel_folder_expunge): Changed to only allow expunge on an open
+ folder. It doesn't make sense for mbox, otherwise (?)
+ (camel_folder_class_init): Added a folder_changed signal.
+
+ * camel-folder.h (struct _CamelFolder): Change permanent_flags to
+ a bitfield.
+ (list_permanent_flags): Renamed to get_permanent_flags, and
+ returns a bitfield.
+ (camel_folder_expunge): Changed expunge to a void type. The
+ messages would no longer be useful after they have been removed
+ ...
+ (CamelFolderClass): New function summary_get_by_uid() to get a single
+ summary.
+ (*search*): Moved back to synchronous search api ... *sigh*
+
+ * camel-folder.h: Removed CamelSearchFunc.
+
+ * camel-mime-message.c (set_flag): Removed.
+ (camel_mime_message_set_flag): Removed.
+ (get_flag): Removed.
+ (camel_mime_message_get_flag): Removed.
+ (add_flag_to_list): Removed.
+ (get_flag_list): Removed.
+ (camel_mime_message_get_flag_list): Removed.
+ (camel_mime_message_get_flags): New interface to get system flags.
+ (camel_mime_message_set_flags): " to set ".
+ (camel_mime_message_get_user_flag): To get a user flag.
+ (camel_mime_message_set_user_flag): To set a user flag.
+ (finalize): Hmm, the old one free'd the key and data, not good
+ when the data is a boolean ...
+
+2000-04-30 Dan Winship <danw@helixcode.com>
+
+ * camel-provider.h: Tweak the definition of CamelProvider. Among
+ other things, a provider may now be both a store and a transport.
+
+ * camel-provider.c: Remove a lot of code we had no intention of
+ using. This now only contains two functions: camel_provider_init
+ to read the installed .urls files, and camel_provider_load to
+ load and register a new provider.
+
+ * camel-session.c: Remove more unused code and simplify some of
+ the remaining code. The list of available provider modules is now
+ stored in the session, and it handles calling camel_provider_load
+ to load them as needed. Provider registration is now done by
+ calling back from the module init routine, which allows a single
+ module to register providers for multiple URL types.
+
+ * providers/*: Update provider structures and init routines for
+ the new stuff. Add a .urls file to each provider specifying what
+ urls it handles, and install that with the library.
+
+ * providers/nntp/camel-nntp-provider.c: Add hints towards
+ supporting both news: and nntp: URLs, and using nntp as both a
+ store and a transport.
+
+2000-04-29 Dan Winship <danw@helixcode.com>
+
+ * camel-internet-address.c (camel_internet_address_get): const
+ poison
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser):
+ camel_mime_parser_tell() returns an offset from where it started
+ parsing, not necessarily from the start of data. Since we're
+ parsing a bounded seekable_stream, we need to add the stream's
+ starting bound to camel_mime_parser_tell's return value to
+ create the substream in the right place.
+
+ * camel-seekable-substream.c
+ (camel_seekable_substream_new_with_seekable_stream_and_bounds):
+ say CAMEL_STREAM_UNBOUND rather than -1 in doc.
+
+ * camel-seekable-stream.c (camel_seekable_stream_seek): Add more
+ info to docs.
+
+2000-04-28 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-parser.c (folder_scan_header): fix a bug that would
+ cause corruption with very long headers.
+
+2000-04-27 Ettore Perazzoli <ettore@helixcode.com>
+
+ * providers/pop3/Makefile.am (INCLUDES): Add `-I$(srcdir)/../../..'
+ to pick the Camel includes.
+ * providers/sendmail/Makefile.am (INCLUDES): Likewise.
+
+ * camel.h: Don't #include <camel/data-wrapper-repository.h> anymore.
+
+2000-04-27 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.c (check_header): Dont try and check a NULL
+ header.
+
+ * camel-recipient.[ch]: Dead. Its not pining.
+
+ * camel-mime-message.h: Dont include recipients.h anymore.
+
+ * camel-mime-message.c (camel_mime_message_add_recipient): Accept
+ name/address separately, and store in an CamelInternetAddress.
+ (add_recipient): Removed.
+ (remove_recipient): Removed.
+ (remove_recipient_address): Renamed from remove_receipient, works
+ via address.
+ (camel_mime_message_remove_recipient_name): New function to remove
+ by name.
+ (get_recipients): Removed.
+ (camel_mime_message_get_recipients): Return a camel-internet-address.
+ (write_to_stream): No longer write receipients directly.
+ (write_recipients_to_stream): Removed.
+ (write_one_recipient_to_stream): Removed.
+ (camel_mime_message_init): Setup recipients hashtable, rather than
+ usign the recipients stuff.
+ (set_recipient_list_from_string): Killed, a violent and lengthy
+ death.
+ (process_header): Simplified recipient handling code a lot.
+ (received_date_str, sent_date_str, reply_to_str, subject_str,
+ from_str): Removed some oddly-defined global statics.
+ (camel_mime_message_class_init): Dont initialise above variables
+ anymore.
+ (init_header_name_table): Removed, use a table to init this, and
+ do it in class init (2 lines of code ...).
+
+ * camel-news-address.c: Class to represent news addresses -
+ currently empty, and not built.
+
+ * camel-internet-address.h: Class to represent internet (email)
+ addresses.
+
+ * camel-address.h: Abstract class to represent (lists of)
+ addresses.
+
+2000-04-27 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-part.c (write_to_stream): Revert previous change. I
+ was confused.
+
+ * camel-url.[ch] (camel_url_encode, camel_url_decode): expose
+ these routines.
+
+2000-04-26 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-part.c (write_to_stream): Only write a newline
+ between the headers and the content object if the content object
+ is not a CamelMedium. (If the content is a medium, it may have its
+ own headers, which then need to go before the blank line.)
+
+ * camel-mime-body-part.[ch]: Remove. We weren't using the fields
+ that made this different from camel-mime-part, so it basically
+ just forced us to do lots of gratuitous typecasting.
+
+ * camel-multipart.[ch]: Use CamelMimePart. Remove the multipart
+ parent stuff, since we weren't using that either.
+
+ * etc: update for CamelMimeBodyPart -> CamelMimePart
+
+2000-04-26 Dan Winship <danw@helixcode.com>
+
+ * camel-medium.c (set_content_object): sink the content object
+ after referencing it.
+
+ * camel-mime-part.c: fix various little things in the handling
+ of CamelMedium methods. Change camel_mime_part_set_text to the
+ more generic camel_mime_part_set_content.
+
+ * camel.h: sync to current reality
+
+ * camel-folder-utils.[ch]: removed
+
+ * camel-mime-utils.c (header_format_date): fix format specifier
+ for time zone. Fix typo in month names array.
+
+2000-04-26 NotZed <NotZed@HelixCode.com>
+
+ * camel-seekable-substream.c (stream_seek): Changed to have
+ absolute seek semantics, not relative to the bounds.
+
+ * camel-seekable-stream.c (reset): When we reset, seek to the
+ start of the bound, if there is one.
+ (stream_tell): Make tell virtual.
+
+ * camel-stream-filter.c (do_available): Removed.
+
+ * camel-stream-buffer.c: Remove leading _'s from static functions.
+ (stream_read): Renamed from read(). Fancy that conflicting! (my
+ boo!) Others too.
+
+ * providers/pop3/camel-pop3-folder.c (get_message_by_number):
+ Changed to stream_mem interface.
+
+ * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Fixed
+ for streamfs interface changes, and implement a failure case.
+ (_append_message): Changed for fs stream interface change.
+
+ * camel-multipart.c (print_part): Iterate rahter than callback. I
+ hate glists's interface (hence, move this to write_to_stream).
+ (write_to_stream): Return an error (yuck, this is a royal PITA to
+ do with the stream write interface).
+
+ * camel-mime-message.c: Removed leading _ from static names.
+
+ * camel-mime-part.h: construct_from_parser() now returns an error
+ code.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Changed to use a
+ camel-data-wrapper instead of a camel-simple-data-wrapper (no
+ change needed elsewhere?).
+ (simple_data_wrapper_construct_from_parser): Fixes for stream-mem
+ interface changes.
+
+ * camel-simple-data-wrapper.[ch],
+ camel-simple-data-wrapper-stream.[ch],
+ camel-stream-data-wrapper.[ch], removed. Fixed including of these
+ files.
+
+ * camel-mime-part.c (camel_mime_part_set_text): Remove the use of
+ the camel-simple-data-wrapper-stream, just use a mem stream.
+ (write_to_stream): Renamed from my_*
+ (construct_from_stream): Return an error on error.
+
+ * camel-stream-mem.c (camel_stream_mem_new*): Remove mode
+ parameter.
+
+ * camel-stream-mem.h (enum CamelStreamMemMode): Removed. It
+ wasn't used at all.
+
+ * camel-data-wrapper.h: Add camel_data_wrapper_new() to create
+ these.
+ (write_to_stream, construct_from_stream): Return an error
+ indicator for success. Fixed all methods to match (ICK).
+
+ * Makefile.am (libcamel_la_SOURCES): Remove
+ camel-simple-data-wrapper.c, camel-simple-data-wrapper-stream.c,
+ camel-stream-data-wrapper.c. Obsoleted by code re-use!
+
+ * camel-data-wrapper.c (construct_from_stream): Change the default
+ implementation to just set the output stream == construction
+ stream. Well, this lets me get rid of both simple-data-wrapper
+ and stream-data-wrapper (unused anyway), and
+ simple-data-wrapper-stream in one hit. CamelDataWrapper is now
+ also a concrete class.
+ (write_to_stream): Use camel_stream_write_to_stream() to
+ calculate/return values (and save code).
+ Include <errno.h> for obvious reasons.
+
+ * camel-stream.c (eos): Provide a default implementation of .eos().
+ (camel_stream_write_to_stream): Make it return an error code on
+ error.
+ (camel_stream_printf): Changed to return the number of bytes
+ written/error.
+ (camel_stream_available): Removed.
+
+ * camel-stream-fs.h (enum CamelStreamFsMode): Removed. Changed to
+ use unix modes and so forth (wasn't used for anything but new file
+ creation and didn't work well either).
+
+ * camel-stream-fs.c: Removed leading _'s for names. And removed
+ some virtual method 'documentation'.
+ (destroy): Dont try and close a closed/error fd. Only report
+ error if close returns -1. Moved all the code to finalise(), and
+ killed this function.
+ (init_with_fd): Properly setup the seek offset, if it is a
+ valid and seekable file descriptor.
+ (init_with_fd_and_bounds): Use off_t for bounds, set bounds on the
+ seekable stream.
+ (init_with_name): Return error codes.
+ (init_with_name_and_bounds): Ditto.
+ (camel_stream_fs_new_with_name): REturn NULL object if it failed.
+ (camel_stream_fs_new_with_name_and_bounds): Return NULL object on
+ failure. Changed with_name* api's to take unix open style args
+ and flags.
+ (read): The bounded stream bounds checking seemed off, simplified
+ code a bit.
+ (write): Implement bounds checking for writing, the comment was
+ wrong, it could make sense to bound writing. Cleaned up a little.
+ (available): Gone.
+ (eos): Removed. Use CamelStream's implementation now.
+ (close): Reset the fd to -1, provide a warning for bad usage.
+ (seek): Cleaned up. Changed the behaviour a little, the returned
+ offset is the absolute position in the file, even in bounded
+ streams.
+ (seek): Seek from end mirrors lseek() behaviour (reverse seeking).
+
+2000-04-25 NotZed <NotZed@HelixCode.com>
+
+ * camel-stream-fs.h (struct _CamelStreamFs): Moved bounds and eof
+ indicator to other parent classes.
+
+ * camel-stream.c (camel_stream_printf): New utility
+ function. Obvious use.
+
+ * camel-stream-mem.c: Removed leading _'s from static func's.
+ (camel_stream_mem_new_with_byte_array): Fixed for api changes, set
+ the owner for the byte array to us.
+ : Removed A bunch of gtk doc stuff for static (implementation) functions.
+ (available): Removed.
+ (write): Fixed the write implementation so that seek() works on a
+ seekable memory stream, as expected. Seeking past the end of the
+ buffer has unix semantics (filling with 0).
+ (available): Removed.
+ (write): Implement seekable stream bounded stream.
+ (read): Implement seekable stream bounded stream.
+ (close): Dont free the stream_mem if we're not the owner.
+ (seek): Allow to seek beyond the end of memory area,
+ implement bounds checking.
+ (seek): Set errno on bad policy.
+
+ * camel-stream-mem.h (struct _CamelStreamMem): Changed position to off_t.
+ (new_with_buffer): Changed len to be a size_t.
+ (set_buffer, set_byte_array): New interface functions.
+ (struct _CamelStreamMem): Removed position, it is stored in the
+ superclass.
+
+ * camel-stream.h: Removed some of the seemingly random
+ whitespace. Removed the available method (its not
+ impelemented/useful enough).
+
+ * camel-seekable-substream.c
+ (init_with_seekable_stream_and_bounds): Remove the data_available
+ stuff, it hasn't been properly implemented/finished, and may never
+ work (unfortunately *sigh).
+ (reemit_parent_signal): Removed part of the above change.
+ (set_bounds): Removed (moved to seekable-stream).
+ : Fixed up some of the generally unreadable indenting (sorry,
+ wrapping at 80 characters with
+ camels_really_long_function_names()
+ just_doesnt_work_very_well_does_it().
+ (available): Removed.
+ (stream_seek): Fixup for object changes. Make sure we return -1
+ if the parent stream can't seek.
+
+ * camel-seekable-stream.c (ccamel_seekable_stream_set_bounds): New
+ function to bound any seekable stream.
+ : Removed _'s.
+ (camel_seekable_stream_class_init): Implement an init function, to
+ setup the stream bounds to unbound.
+
+ * camel-seekable-stream.h (CamelSeekableStreamClass): New virtual
+ method set_bounds for seekable streams.
+ (CAMEL_STREAM_UNBOUND): New define for no bound.
+
+ * camel-seekable-substream.h (struct _CamelSeekableSubstream):
+ Removed sup_bound and inf_bound, moved to CamelSeekableStream (and
+ renamed, and changed to off_t's).
+ (new_with_seekable_stream_and_bounds): Use off_t as the bounds.
+ (CamelSeekableSubstreamClass): Uh, why was the intialiser virtual?
+ Removed.
+
+ * camel-seekable-stream.[ch] (CamelSeekableStreamClass): Changed seek
+ to accept an off_t as the offset.
+ (struct _CamelSeekableStream): Renamed cur_pos to position and
+ changed it to an off_t type.
+ (enum CamelStreamSeekPolicy): Set to match the SEEK_* constants
+ from lseek().
+ (get_current_position): Renamed to tell().
+
+ * camel-stream-buffer.h: Commented out set_vbuf - never implemented.
+
+2000-04-25 Dan Winship <danw@helixcode.com>
+
+ * camel-stream-buffer.c (_eos): only return TRUE if the parent is
+ at eos AND the buffer has been exhausted
+
+ * camel-mime-message.c: fix some incorrect macro usage that
+ resulted in bogus casts
+
+2000-04-24 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-part-utils.c
+ (simple_data_wrapper_construct_from_parser): fix a cut-and-pasto.
+
+ * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): ref
+ (and sink) the message stream if we're going to unref it later.
+ Otherwise it could get destroyed while there are still substreams
+ attached to it. This needs a cleaner solution.
+
+ * camel.h: remove data-wrapper-repository.h include(s)
+
+2000-04-24 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-message.c (construct_from_parser): Allow MESSAGE_END
+ _or_ EOF as valid termination conditions.
+
+ * providers/mbox/camel-mbox-summary.c (message_struct_new): Decode
+ and then re-encode the addresses, so they are consistently
+ formatted.
+
+ * camel-mime-utils.c (header_decode_mailbox): Store the address in
+ a _header_address. And try to get a comment-stored name if there
+ is one.
+ (header_decode_address): Actually return an address.
+ (header_to_decode): Renamed to header_address_decode()
+ (header_mailbox_decode): New function to get a single mailbox.
+ (header_mime_decode): Return the major/minor value, as
+ appropriate.
+ (header_address_new, and friends): Whole bunch of utility
+ functions for working with the address thingies.
+ (header_decode_domain): Free the string header, and dont expand
+ '.' into ' . '.
+
+ * camel.c (camel_init): No longer call
+ data_wrapper_repository_init.
+
+ * camel-medium.c (write_to_stream): Moved (back) to
+ camel-mime-part.
+ (add_header):
+ (set_header):
+ (remove_header):
+ (get_header): Make all these abstract, and spit warnings if
+ called. I guess it could manage the list, but well, it doesn't.
+
+ * camel-medium.h (struct _CamelMedium): Dont store headers here,
+ the implementor is the only one who knows their format.
+ (CamelMediumClass): Changed header values to be void *'s. They
+ need not be strings?
+
+ * camel-simple-data-wrapper.c (construct_from_stream): And we're
+ back. Set the output stream.
+ (construct_from_parser): Moved to camel-mime-part-utils.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_parser): Create the
+ contents of multipart and simple messages.
+ (camel_mime_part_construct_content_from_parser): Oops, this was
+ totally screwed up, try creating the right cotnent on the right
+ object.
+
+ * camel-multipart.c (construct_from_parser): Moved to
+ camel-mime-part-utils.
+ (separate_part): Removed.
+
+ * camel-mime-part.c (construct_from_stream): Back again! This now
+ switches over to using a mime parser for any mime parts, only.
+ (my_write_to_stream): Write our headers and so forth here.
+ (add_header): Add header directly, parent class is abstract.
+ (remove_header): Ditto.
+ (set_header): Ditto.
+
+ * camel-data-wrapper.c (camel_data_wrapper_construct_from_stream):
+ Remade abstract.
+ (camel_data_wrapper_construct_from_parser): Moved to
+ camel_mime_part.
+
+ * camel-data-wrapper.h: Put back construct_from_stream.
+
+ * camel-mime-part.h: Put construct_from_parser in here, the
+ data-wrapper shouldn't know about mime. Ok, so now to undo half
+ of the last hours changes ... duh.
+
+2000-04-23 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c (header_to_decode, header_mime_decode): fix
+ some obvious minor bugs noted by -Wall.
+
+2000-04-23 NotZed <NotZed@HelixCode.com>
+
+ * providers/pop3/camel-pop3-folder.c (get_message_by_number): Use
+ construct_from_stream instead of set_input_stream().
+
+ * camel-simple-data-wrapper-stream.c
+ (camel_simple_data_wrapper_stream_construct): REmoved the destroy
+ callback code.
+ (wrapper_destroy_cb): Removed.
+
+ * camel-simple-data-wrapper.h: Add prototype for _construct()
+ method.
+
+ * camel.c: Include unicode.h to kill a warning.
+
+ * camel-data-wrapper.h (CameldataWrapperClass): Removed
+ construct_from_stream virtual method.
+ Removed get/set input stream.
+
+ * data-wrapper-repository.[ch]: Removed&from build. Obsoleted?
+ The justification as is follows: It is mixing storage
+ protocol/format with message architecture. It really just doesn't
+ serve any purpose, as each medium implementor will have to have its
+ own type->handler mapping, and the only current implementor,
+ mimepart has a very simple structure and no need for this.
+
+ * camel-medium.c (write_to_stream): Moved here from most of the
+ stuff in camel-mime-part. Well, the MEDIUM is the one that knows
+ what the headers are, and the content is, let it write it out.
+
+ * camel-mime-part-utils.c (camel_mime_part_construct_content):
+ Copied from camel-mime-part.c, removed handling of message
+ followon state (moved to camel-mime-message).
+ (camel_mime_part_construct_content_from_parser): Renamed from
+ construct_content.
+ (camel_mime_part_construct_headers_from_stream):
+ (camel_mime_part_construct_content_from_stream):
+ (camel_mime_part_store_stream_in_buffer): Removed. Replaced by
+ the new construct from parser stuff.
+
+ * camel-mime-message.c (construct_from_parser): Do
+ construct_from_parser for mime-message.
+ (_write_to_stream): Set the mime-version header for medium to
+ write out, rather than writing it out ourselves.
+
+ * camel-data-wrapper.c (set_mime_type_field): Ref the
+ content_field when we get it?
+ (construct_from_stream): Removed.
+ (camel_data_wrapper_construct_from_stream): Changed to a helper
+ function, creates a mime_parser, and constructs from that.
+ (set_input_stream): Removed.
+ (camel_data_wrapper_set_input_stream): Removed.
+ (get_input_stream): Removed.
+ (camel_data_wrapper_get_input_stream): Removed.
+
+ * camel-mime-parser.c (camel_mime_parser_unstep): New function.
+ Cause a subsequent call to mime_parser_step() to return the same
+ state over again.
+
+ * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
+ Initial test code using the mime parser to construct the message.
+ (_get_message_by_uid): Use construct_from_stream() instead of
+ creating our own parser.
+
+ * camel-mime-part.c (construct_from_parser): part constructor.
+ (camel_mime_part_construct_content): Basically a simpler
+ replacement for the datawrapper repository.
+ (camel_mime_part_init): Set the default type to text/plain.
+ (camel_mime_part_construct_content): Removed to
+ camel-mime-part-utils.c
+ (my_get_output_stream): Removed. The streeam is in the
+ data-wrapper.
+ (my_get_content_object): Removed. The content object is stored in
+ the medium. If none is there, the object wasn't created properly.
+ (my_write_content_to_stream): Removed. The content object is the
+ one that knows how to write itself out!!!!!!!!
+ (my_write_to_stream): Remove the base header writing stuff - has
+ been moved to camel-medium, where it belongs. This can just be
+ used to check for mandatory headers.
+ (my_construct_from_stream): Removed.
+ (my_set_input_stream): What the hell, i'll remove this too.
+ Nobody seems to understand how it differs from create from stream,
+ and they both seem to serve the same purpose ...
+
+ * camel-simple-data-wrapper.c (construct_from_parser): Initial
+ implementation of a content constructor.
+ (construct_from_stream): Removed! Job taken over by
+ construct_from_parser.
+
+ * camel-multipart.c (construct_from_parser): Multipart
+ construction routine.
+ (camel_multipart_init): Set the default multipart type to
+ multipart/mixed. Duh, no subtype is not allowed anyway.
+ (set_input_stream): REmoved. Replaced by construct_from_parser.
+
+2000-04-22 Dan Winship <danw@helixcode.com>
+
+ * camel-multipart.[ch]: clean, document, etc.
+ (camel_multipart_init): pick a prettier default boundary. Still
+ need to deal with the larger problem
+
+2000-04-22 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-message.h (struct _CamelMimeMessage): Removed
+ send_date, and received_date, and replaced it with a time_t
+ 'date' (this is what the header is called), and date_offset to
+ store the GMT offset of the date.
+
+ * camel-mime-message.c (camel_mime_message_set_from): Update raw
+ header as we go.
+ (_set_from): Removed.
+ (_get_from): Removed.
+ (camel_mime_message_get_from): Moved implementation here.
+ (camel_mime_message_get_subject): Move implementation here.
+ (_get_subject): Nuked.
+ (camel_mime_message_set_subject): Handle utf-8 input, and also
+ update raw header when changed.
+ (_set_subject): Removed.
+ (_set_received_date): Removed.
+ (camel_mime_message_set_received_date): Removed.
+ (_get_received_date): Removed.
+ (camel_mime_message_get_received_date): Removed.
+ (_get_sent_date): Removed.
+ (camel_mime_message_get_sent_date): Removed.
+ (camel_mime_message_get_date): New function to get the date as a
+ time_t/offset.
+ (camel_mime_message_set_date): Set the date as a time_t/offset.
+ (camel_mime_message_get_date_string): Get the date as a string.
+ (camel_mime_message_init): Initialise the current date as
+ 'CMAEL_MESSAGE_DATE_CURRENT'.
+ (_set_reply_to): Removed.
+ (camel_mime_message_set_reply_to): Moved implementation here.
+ This is still broken, reply-to can have multiple addresses.
+ (_get_reply_to): Removed.
+ (_set_field): Removed, no longer used anywhere.
+ (_get_field): Also removed.
+ (_init_header_name_table): Add the Date header.
+ (process_header): Also handle snooping of Date header here.
+
+ * camel-stream-filter.c (finalise): Unref the source stream on
+ finalise, and also call the parent class (oops).
+
+ * camel-mime-parser.c (camel_mime_parser_state): New function to
+ get the current parser state.
+ (camel_mime_parser_stream): Allow you to get the stream back from
+ the mime_parser.
+ (camel_mime_parser_fd): Alternative to allow you to get the fd
+ back from the mime_parser.
+ (folder_scan_init_with_stream): Properly ref/unref the stream.
+ (folder_scan_close): Properly unref the stream/close the fd on
+ exit.
+ (folder_scan_init_with_fd): Close the old fd if there is one.
+
+ * camel-data-wrapper.c (camel_data_wrapper_construct_from_parser):
+ New method, construct a data wrapper from an initialised parser.
+ (construct_from_parser): Empty implementation.
+
+ * providers/mbox/camel-mbox-summary.c (message_struct_new):
+ Convert subject line to unicode, before storing in the summary.
+ (strdup_trim): Removed, no longer needed.
+
+ * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Ref
+ the folder after setting it in the new message.
+
+ * camel-mime-part.c (my_set_content_object): Have the headers
+ follow the content-type change here too.
+ (my_write_to_stream): Dont write content-type here, automatically
+ stored in the headers ...
+ (my_write_to_stream): Use header_disposition_format() to format
+ the content-disposition header.
+ (my_write_to_stream): Removed old code, all headers are now stored
+ in the camel-medium level, always. Need to do the same with
+ camel-mime-message i suppose ...
+ (my_write_to_stream): Write the content using the parent class,
+ not some weird function.
+ (camel_mime_part_class_init): Dont override get_output_stream.
+ (camel_mime_part_encoding_from_string): Bleh, make it
+ case-insensitive.
+
+ * camel-mime-utils.c (header_content_type_is): Handle empty types.
+ (header_encode_string): Start of an implementation of the rfc2047
+ encoder. It does iso-8859-1, and us-ascii, and utf-8 (others get
+ tricky *sigh*)
+ (rfc2047_encode_word): Convert a single word/string into rfc2047
+ encoding.
+ (quoted_encode): Different quoted-printable encoding for rfc2047
+ encoding of headers.
+
+ * gmime-content-field.c (gmime_content_field_write_to_stream): Use
+ header_content_type_format() to format it.
+
+2000-04-21 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.h: Add prototype for header_param_list_free.
+
+ * camel-recipient.c: New function to remove all the types of a
+ recipient list. I think this whole object needs a major review.
+
+ * camel-mime-message.c (camel_mime_message_class_init): Removed
+ parse_header_pair override, override add_header instead.
+ (_parse_header_pair): Renamed to add_header.
+ (remove_header): Add this method, to make sure we keep upto date
+ with removed headers too.
+ (_set_field): If given a NULL value, clear it out.
+ (_set_recipient_list_from_string): Constify.
+ (set_header): Override set_header from camel_medium.
+ (process_header): Local function to handle set/add/remove of each
+ header we know about.
+
+ * camel-mime-part.c (camel_mime_part_class_init): Removed
+ parse_header_pair setup.
+ (my_parse_header_pair): Moved into add_header(), removed.
+ (my_set_disposition): Allow a NULL disposition to clear it.
+ (my_set_content_id): Allow NULL content id to clear it.
+ (remove_header): Track removed headers.
+ (my_set_description): Allow NULL description to clear it.
+ (my_set_content_MD5): Make sure we copy the md5 value, and allow a
+ NULL value to reset it.
+ (my_set_filename): Copy the filename.
+ (my_set_header_lines): Removed. Nothing uses it, it doesn't
+ actually serve any purpose.
+ (camel_mime_part_set_header_lines): Ditto.
+ (my_get_header_lines): Ditto.
+ (camel_mime_part_get_header_lines): Ditto.
+ (camel_mime_part_class_init): Remove *_header_lines setup.
+ (camel_mime_part_init): Remove header_lines init.
+ (my_finalize): Remove header_lines finalise.
+ (my_write_to_stream): Write the headers here. This is just WRONG,
+ camel_medium should be doing this.
+ (my_get_output_stream): Kill a warning.
+ (camel_mime_part_encoding_to_string): Ditto.
+ (camel_mime_part_set_description): Unvirtualiase, use add_header()
+ to do the processing.
+ (my_set_description): Removed.
+ (set_disposition): Renamed from my_set_disposition.
+ (camel_mime_part_get_description): Get the descriptionf rom the
+ get_header method.
+ (my_get_description): Removed.
+ (my_set_filename): Removed.
+ (camel_mime_part_get_filename): Get the parameter from the
+ disposition.
+ (camel_mime_part_encoding_from_string): Handle NULL string.
+ (camel_mime_part_init): Remove reference to filename.
+ (my_finalize): Dont free filename.
+
+ * camel-mime-part.h (CamelMimePartClass): Removed
+ parse_header_pair() method, it doesn't add anything that
+ add_header() can't be used for.
+ (CamelMimePartClass): Remove *_header_lines methods.
+ (struct _CamelMimePart): Remove header_lines list.
+ (struct _CamelMimePart): Removed filename attribute.
+
+ * camel-medium.c (camel_medium_init): Init headers to null, not a
+ hashtable.
+ (add_header): Append the headers as a list.
+ (remove_header): Remove headers as a list.
+ (get_header): Likewise for lookup.
+ (free_header): Removed, no longer needed.
+ (finalize): Free headers using header_raw_clear().
+ (camel_medium_set_header): New function, to reset and override all
+ values of a header with a new value.
+
+ * camel-medium.h (struct _CamelMedium): Changed to use a
+ header_raw struct rather than a hash table, to store headers
+ (many headers can occur multiple times).
+
+ * camel-mime-utils.c (header_raw_find_next): New function, allows
+ you to find multi-valued header fields.
+ (header_disposition_format): New function to format/create
+ content-disposition header string.
+ (header_param_list_format_append): Function to format parameter
+ lists into a GString.
+ (header_content_type_format): Function to format content-type into
+ a usable format.
+ (header_set_param): allow NULL value to remove the parameter.
+ (decode_token): Renamed from header_decode_token.
+ (header_decode_token): New interface for external use.
+ (quoted_decode): Made static to kill annoying warnings.
+ (g_strdup_len): Killed, replaced with calls to g_strndup().
+ (rfc2047_decode_word): Made static to kill warnings.
+ (decode_coded_string): Terminated.
+ (g_string_append_len): Made static to kill warnings.
+ (header_decode_text): Made static to kill warnings.
+ (header_decode_text): Constify.
+ (rfc2047_decode_word): Constify.
+ (header_param): Constify.
+ (header_content_type_new): Copy the type/subtype strings.
+ (header_param_list_decode): Made static.
+ (header_param_list_format_append): Made static.
+ (quoted_decode): Constify.
+ (g_string_append_len): Constify.
+ (header_token_decode): New function to decode a single token.
+
+ * providers/mbox/camel-mbox-summary.c (header_write): Append a
+ trailing \n when writing headers.
+ (strdup_trim): Killed a warning.
+ (camel_mbox_summary_set_uid): Make sure the next uid is at least 1
+ higher than any existing one.
+ (header_evolution_decode): Use header_token_decode to get the
+ token.
+
+ * camel-mime-parser.c (folder_scan_header): Strip the trailing \n
+ of the end of all header lines.
+
+2000-04-20 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-utils.[ch]: Removed.
+
+ * providers/mbox/camel-mbox-parser.[ch]: Removed. Removed
+ references to it.
+
+2000-04-20 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-utils.c (rfc2047_decode_word): use libunicode iconv
+ functions rather than libc ones (since libc might not have them).
+ (header_decode_date): add autoconfiscation on timezone code
+
+ * camel.c (camel_init): call unicode_init ()
+
+2000-04-20 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-summary.c (message_struct_new): Trim
+ leading/trailing spaces off the raw headers.
+
+ * MERGE NEW_PARSER branch into HEAD, fixed conflicts.
+
+ * gmime-content-field.c (_print_parameter): Duh, removed again
+ (@@#$@ cvs merge).
+
+ * camel-mime-utils.c (header_content_type_is): Constify.
+ (header_content_type_unref): Killed a couple warnings.
+
+ * camel-folder.c (_init): Removed more log crap.
+
+ * providers/Makefile.am (SUBDIRS): Removed nntp, pending fixes for
+ summary changes.
+
+ * providers/mbox/camel-mbox-folder.c (_get_message_by_number):
+ Fixed for new summary interface. Added a warning for using this
+ broken api.
+ (_get_message_by_uid): Fixed for message new with session
+ vanishing.
+
+2000-04-19 Dan Winship <danw@helixcode.com>
+
+ * camel-simple-data-wrapper-stream.c
+ (camel_simple_data_wrapper_stream_get_type): This is a subtype of
+ CamelSeekableStream, not CamelStream.
+
+ * camel-seekable-substream.c: clean up a lot.
+ (eos): When testing for end-of-stream, reset the parent position
+ before testing if it is at end-of-stream, since either (a) it may
+ have been seek'ed to eos by someone else, or (b) we may have been
+ seek'ed away from eos and it hasn't been synced yet.
+
+ * camel-medium.[ch] (camel_medium_add_header): const poison.
+ (Belatedly goes with my change of 2000-02-23.)
+ (camel_medium_init): Use g_strcase_{hash,equal} on the header
+ array.
+
+2000-04-18 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-part.c (my_set_input_stream):
+ * camel-data-wrapper.c (set_input_stream, set_output_stream): do
+ better reference counting of streams so they actually go away
+ when they should.
+
+ * camel-log.[ch], *: Nuke camel log stuff. Replace calls to
+ CAMEL_LOG_WARNING with calls to g_warning.
+
+ * camel-data-wrapper.[ch]:
+ * camel-simple-data-wrapper.[ch]:
+ * camel-medium.[ch]: Clean, polish, document. Most of the gtk-doc
+ comments added to camel-data-wrapper.c note serious problems that
+ need to be fixed.
+
+2000-04-17 Dan Winship <danw@helixcode.com>
+
+ * camel-mime-message.[ch]: Remove the "session" field from
+ CamelMimeMessage. Nothing uses it, about half of the existing
+ calls to camel_mime_message_new_with_session pass NULL, and
+ there's no obvious reason for it to be there.
+
+ * providers/MH/camel-mh-folder.c:
+ * providers/maildir/camel-maildir-folder.c:
+ * providers/mbox/camel-mbox-folder.c:
+ * providers/mbox/camel-mbox-utils.c:
+ * providers/nntp/camel-nntp-folder.c:
+ * providers/pop3/camel-pop3-folder.c: Use camel_mime_message_new
+ instead of camel_mime_message_new_with_session.
+
+ * camel-session.c (get_store_for_protocol_with_url): Set the
+ exception if no provider is found.
+
+ * camel-url.c: Add code to encode and decode %-escapes in URLs,
+ and do some additional correctness-checking on URL syntax. From
+ Tiago Antào with modifications by me.
+
+2000-04-14 Chris Toshok <toshok@helixcode.com>
+
+ * providers/Makefile.am (SUBDIRS): add nntp
+
+2000-04-14 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c: Fix switch statement.
+
+2000-04-14 Chris Toshok <toshok@helixcode.com>
+
+ * providers/nntp/camel-nntp-folder.c (_exists): always return TRUE
+ for now. we need to check the server response to make sure the
+ group exists.
+ (_get_message_by_uid): make sure to account for the \n we add to
+ the string after every line.
+
+ * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): function
+ to get the headers using the XOVER command.
+ (get_HEAD_headers): function to get the headers using the HEAD
+ command on each message. slooooooow.
+ (camel_nntp_get_headers): make this function use either XOVER or HEAD
+ versions depending on whether or not the server extension is present.
+
+2000-04-14 Dan Winship <danw@helixcode.com>
+
+ * camel-formatter.[ch]: This didn't belong in Camel. Move to mail/
+
+ * Makefile.am, camel-types.h: remove references to
+ camel-formatter.
+
+2000-04-12 Matt Loper <matt@helixcode.com>
+
+ * camel-folder-pt-proxy.c (_folder_open_cb): Print warning message
+ for broken function.
+ (_folder_close_cb): Same.
+
+2000-04-12 Miguel de Icaza <miguel@gnu.org>
+
+ * Makefile.am (pthread_SRC): Use correct names for the pthread
+ source variables.
+
+2000-04-10 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): fix various
+ bugs in APOP code (still untested) and some of the error cases.
+
+ * camel-provider.h: Clarify what provider.protocol, provider.name,
+ and provider.description should be.
+
+ * providers/mbox/camel-mbox-provider.c:
+ * providers/pop3/camel-pop3-provider.c:
+ * providers/sendmail/camel-sendmail-provider.c:
+ * providers/smtp/camel-smtp-provider.c: update protocols, names,
+ and descriptions
+
+ * providers/mbox/camel-mbox-folder.c (_get_message_by_number):
+ implement get_message_by_number for the mail fetch code.
+
+2000-04-09 Jeffrey Stedfast <fejj@stampede.org>
+
+ * providers/smtp/camel-smtp-transport.c: reformatted to fit
+ the standard indent format used by helix code
+
+2000-04-09 Dan Winship <danw@helixcode.com>
+
+ * camel-movemail.c: New file with new function to dot-lock an mbox
+ file and copy it to a safe private directory.
+
+2000-04-08 Christopher James Lahey <clahey@helixcode.com>
+
+ * providers/smtp/.cvsignore: Added a .cvsignore file.
+
+2000-04-08 Dan Winship <danw@helixcode.com>
+
+ * providers/sendmail/camel-sendmail-transport.c (_send_internal):
+ actually record the pid returned by fork(). Noticed by clahey.
+
+ * providers/smtp/camel-smtp-transport.c: #include <sys/param.h>
+ for MAXHOSTNAMELEN. (This is a stopgap: some of the uses of
+ MAXHOSTNAMELEN are wrong anyway...)
+
+2000-04-07 Jeffrey Stedfast <fejj@stampede.org>
+
+ * providers/smtp/camel-smtp-transport.c: fixes to numerous bugs;
+ should now build fine.
+ * providers/Makefile.am: Readded smtp now that smtp builds without
+ error.
+
+2000-04-20 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_next_uid): Public function to get the next
+ uid, makes sure its saved to disk too.
+
+ * camel-mime-part.c (my_finalize): Fix disposition crap with a
+ real disposition.
+ (my_set_disposition): Likewise.
+ (my_get_disposition): And here.
+ (my_write_to_stream): And here, needs more cleanup.
+
+ * providers/mbox/camel-mbox-folder.c (_append_message): Assign a
+ new uid at this point.
+
+ * gmime-content-field.c (gmime_content_field_write_to_stream):
+ Make something up if we have an invalid/missing content type
+ (i.e. text/plain).
+
+2000-04-19 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-folder.c (_delete): Fixed completely
+ broken switch() syntax, only compiled because errno is a macro on
+ some systems.
+ (_list_subfolders): Likewise.
+
+2000-04-18 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-parser.c (folder_scan_init): init stream to null.
+
+ * providers/mbox/camel-mbox-summary.c
+ (CAMEL_MBOX_SUMMARY_VERSION): Moved to .c file, incremented.
+ (index_folder): Changed to have index passed via the summary.
+ (decode_string): Do a sanity check on the string size, so we dont
+ visit g_malloc()'s friendly abort().
+
+ * camel-folder-pt-proxy.c (camel_folder_pt_proxy_class_init):
+ Removed reference to set_name.
+ (_set_name): Removed.
+
+ * providers/mbox/camel-mbox-utils.c
+ (parsed_information_to_mbox_summary): Removed. Most of this file
+ is about to be binned.
+
+ * providers/mbox/camel-mbox-search.c (func_header_contains): Fixes
+ for changes to summary interface.
+ (struct _searchcontext): Remove pointer to message info, get it
+ straight from the mboxsummary.
+ (camel_mbox_folder_search_by_expression): New summary interface.
+ (camel_mbox_folder_search_by_expression): Uh, the summary is not
+ an object anymore (well not yet).
+
+ * providers/mbox/camel-mbox-folder.c
+ (camel_mbox_folder_class_init): Removed set_name init.
+ (_set_name): Removed.
+ (_open): Call new summary interface.
+ (_close): Use new summary interface.
+ (_create): Removed a summary object leak.
+ (_get_message_count): New summary interface.
+ (_get_uid_list): Use new summary interface. FIXME: this is leaky.
+ (_get_message_by_uid): Use the new summary interface, some
+ cleanup.
+ (_append_message): Totally changed, basically just appends the
+ message directly, ignores the summary (for now), the summary will
+ fix itself up if it needs to.
+ (_check_get_or_maybe_generate_summary_file): Bye bye old code.
+ (summary_get_message_info): Implement get_message_info again, for
+ folder.
+
+ * camel-folder.c (camel_folder_class_init): Removed set_name
+ setup.
+ (_set_name): Moved contents into _init.
+ (_init): Perform the old functions of set_name here.
+
+ * camel-folder.h: Removed the set_name internal interface.
+
+2000-04-14 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-summary.[ch]: Completely replaced with
+ new code.
+
+ * Makefile.am (libcamel_la_SOURCES): Removed
+ camel-folder-summary.[ch].
+
+ * camel-folder.h (struct _CamelFolder): Removed summary.
+ (struct _CamelFolder): Changed flags to be 1 bit bitfields.
+
+ * camel-folder-summary.[ch]: Class removed entirely.
+
+ * camel-folder.c (camel_folder_get_summary): Removed.
+ (camel_folder_summary_get_message_info): Moved from
+ camel-folder-summary.c
+ (camel_folder_summary_get_subfolder_info): Moved from
+ camel-folder-summary.c
+
+ * camel-mime-parser.c (folder_scan_step): Store the start of
+ headers and start of from in the scan state.
+ (camel_mime_parser_tell_start_headers): Query the start of the
+ headers.
+ (camel_mime_parser_tell_start_from): Query the cached start of
+ from marker.
+
+2000-04-13 NotZed <NotZed@HelixCode.com>
+
+ * gmime-content-field.c (gmime_content_field_free): Removed this
+ function. If its too dangerous to use, it shouldn't be here.
+ (gmime_content_field_ref): Also ref the embedded content-type.
+ (gmime_content_field_unref): Ditto to unref it.
+
+ * camel-mime-utils.h: Add a refcount for content-type header.
+
+ * camel-mime-utils.c (header_content_type_unref): Implement unref
+ for content-type.
+ (header_content_type_ref): Implement ref for header content type.
+
+2000-04-12 NotZed <NotZed@HelixCode.com>
+
+ * gmime-content-field.h: Changed to use a _header_content_type.
+ Added type/subtype back for compatability with clients.
+
+ * gmime-content-field.c: Basically a total rewrite, and now just a
+ thin wrapper ontop of header_content_type.
+ (_free_parameter): Got rid of it.
+ (gmime_content_field_new): Use header_content_type_* functions.
+ (gmime_content_field_set_parameter): Likewise.
+ (_print_parameter): Blow away.
+ (gmime_content_field_write_to_stream): Get details from the
+ content_type field. Should check if it needs to escape chars in
+ the paramter value.
+ (gmime_content_field_get_mime_type): Likewise.
+ (___debug_print_parameter): Get rid of this rather annoyingly
+ named function.
+ (gmime_content_field_get_parameter): Simplified function.
+ (gmime_content_field_construct_from_string): Fixed this to use a
+ real parser.
+ (gmime_content_field_is_type): New function to test if a type matches.
+ (gmime_content_field_construct_from_string): Track type/subtype
+ from subordinate content_type header struct.
+
+ * gmime-rfc2047.[ch]: Removed. Unused.
+
+ * camel-stream-b64.[ch]: Blown away more duplicated code.
+
+ * Makefile.am: Removed camel-stream-b64.[ch], and
+ gmime-base64.[ch].
+
+ * camel-mime-part.c (my_get_content_object): Replaced
+ camel-stream-b64 with camel-stream-filter/camel-mime-filter-basic.
+ (my_write_content_to_stream): Replaced camel-stream-b64 with the
+ camel-stream-filter with an encoder.
+ (my_get_content_object): Also implement quoted-printable decoding.
+ (my_write_content_to_stream): Also implement quoted-printable
+ encoding.
+ (my_get_output_stream): Took out stream-b64 code (nothing's being
+ executed yet anyway).
+
+ * gmime-base64.[ch]: Blown away. Not used, dont need it.
+
+ * camel-mime-utils.h: Added offset for this header. Records where
+ it is in the source.
+
+ * camel-mime-utils.c (header_raw_append_parse): Add offset
+ parameter, to store where the header is stored in the stream.
+ (header_raw_append): Added offset param.
+ (header_raw_find): Return offset, if a pointer supplied for it.
+ (header_raw_replace): Add offset param.
+ (header_content_type_new): New function, to create an empty
+ content type.
+ (header_content_type_set_param): Set a parameter in the
+ content-type.
+ (header_set_param): Generic header parameter setting function.
+ (header_decode_string): Handle NULL input.
+
+ * camel-mime-parser.c (camel_mime_parser_headers_raw): New
+ function to get access to all the raw headers.
+ (folder_scan_header): Keep track of the header start position, and
+ store it when saving the header.
+
+2000-04-11 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-utils.c: Moved a bunch of printf's to debug.
+
+ * camel-mime-parser.c: Moved a bunch of printf's to debug.
+ (folder_scan_header): Detect end of each header line using the
+ last scanned char, and not the last scanned position.
+
+ * camel-mime-filter-index.[ch]: Indexing filter. Indexes unicode
+ sequences into ibex files.
+
+2000-04-09 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-part.c: Dont include gmime-base64.h
+
+ * camel-mime-filter-charset.c (complete): Implement the completion
+ function.
+
+ * camel-mime-parser.c (folder_scan_step): If we get to the end of
+ the body data, check any filters for outstanding completion data.
+ (camel_mime_parser_scan_from): Set whether we scan for "From "
+ headers or not.
+
+ * camel-stream-filter.c (do_read): If we get to end of stream on
+ the source, then call the filtering completion function to see if
+ we have any more data to return.
+
+ * camel-mime-filter-basic.c (filter): Implement quoted printable
+ encoding and decoding filters.
+ (complete): And the complete function as well.
+
+ * camel-mime-utils.c (base64_encode_close): Also take an input
+ buffer, allow closing of filters.
+ (quoted_encode_step): First cut, simple quoted-printable encoder.
+ Doesn't handle trailing spaces/tabs on end of line properly yet.
+ (quoted_encode_close): Complete a quoted-encoding.
+ (is_qpsafe): New type check, for quoted-printable safe characters
+ (that do not need encoding). Thats all bits used in the type
+ table! Rebuilt the types table.
+ (header_content_type_is): Checks a content type against at
+ type/subtype match.
+ (header_content_type_param): Handle NULL content type pointer.
+
+2000-04-08 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-filter-basic.c (filter): Implement the base64
+ encoder. Problem is, there is no way to know when to close it.
+ Close/Reset will have to provide the same args as filter, so it can
+ flush remaining data *sigh*
+
+ * camel-mime-utils.c (base64_encode_step): A rather complex base64
+ encoder, fast?
+ (base64_step_close): Companion function to finish off the base64
+ sequence.
+
+ * camel-mime-part.c (my_write_content_to_stream): Changed to use
+ camel_stream_write_to_stream().
+
+ * camel-stream.[ch] (camel_stream_write_to_stream): From
+ camel_stream_b64_write_to_stream(). Fixed some infinite loop
+ bugs with error conditions.
+
+ * camel-stream-b64.[ch] (camel_stream_b64_write_to_stream): Removed.
+ This has nothing to do with stream-b64, so i've moved it to
+ CamelStream.
+
+ * camel-mime-utils.h: Add a comment about refcounting
+ header_content_type struct.
+
+ * Makefile.am: Added camel-stream-filter*.[ch].
+
+ * camel-stream-filter.[ch]: Class to implement a generic
+ (multipass) filter ontop of a stream. Only implements a read-only
+ stream.
+
+ * camel-mime-parser.c (camel_mime_parser_filter_add): Ref the
+ filter we just added.
+
+ * Makefile.am: Added camel-mime-filter*.[ch].
+
+ * camel-mime-filter-charset.[ch]: A filter to preform character set
+ conversion (uses unicode_iconv).
+
+ * camel-mime-filter-save.[ch]: A simple filter which will save all
+ data directly to a file or file descriptor.
+
+ * camel-mime-filter-basic.[ch]: Implements the basic mime filters,
+ base64 and quoted-printable decoding (encoding not implemented yet).
+
+ * camel-mime-filter.[ch]: A filtering class, which can filter streams
+ of data without having to copy them. Simpler than stream classes,
+ and can be plugged into a single stream class (when i write it).
+
+2000-04-07 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Clarify error
+ messages.
+ (finalize): fix a bug in camel_exception usage
+ (pop3_connect): Remember the password after asking for it the
+ first time.
+
+2000-04-07 NotZed <NotZed@HelixCode.com>
+
+ * Makefile.am: Added camel-mime-parser/camel-mime-utils.
+
+ * camel-mime-parser.c: Fast mime parser.
+
+ * camel-mime-utils.c: Mime utility functions, and email header
+ parsers.
+
+2000-04-07 NotZed <NotZed@HelixCode.com>
+
+ * providers/Makefile.am: Removed smtp for now, its a long way from
+ building.
+ * providers/smtp/Makefile.in: Removed file that shouldn't have been
+ checked in.
+
+2000-04-06 Matt Loper <matt@helixcode.com>
+
+ * camel-folder-pt-proxy.c (_get_full_name): Remove exception param
+ from get_full_name() called, since get_full_name() was changed to
+ not have an exception in the last param (see dan's notes below).
+ (_get_name): same.
+
+2000-04-06 Dan Winship <danw@helixcode.com>
+
+ * camel-store.[ch]: Reorganize the folder-fetching methods and
+ implement a folder cache so that multiple requests for the same
+ folder will yield the same CamelFolder object (as long as it
+ remains active). Includes some code to remove no-longer-active
+ folders from the cache, but it doesn't get used since nothing is
+ ever unref'ed in Camel right now...
+
+ * providers/mbox/camel-mbox-store.c:
+ * providers/pop3/camel-pop3-store.c: update for CamelStore
+ changes.
+
+ * camel-folder.[ch]: Remove the (unused) CamelException argument
+ from camel_folder_get_name and camel_folder_get_full_name.
+ (camel_folder_set_name): make this go away since changing a
+ folder's name after it has been created could result in it
+ conflicting with a separately-issued folder.
+
+2000-04-05 Dan Winship <danw@helixcode.com>
+
+ * g_url_new really wanted to take a CamelException. So, rename
+ Gurl to CamelURL, g_url_* to camel_url_* (with camel_url_new
+ taking an exception), and url-util.[ch] to camel-url.[ch]. Also
+ force url->port to be numeric and remove camel_service_getport. (I
+ was confused before: the URL RFC says the port must be numeric, so
+ we don't want to do getportbyname.)
+
+2000-04-01 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c
+ (_check_get_or_maybe_generate_summary_file): Compare
+ mbox_file_size and mbox_modtime to the results of stat()ing the
+ mbox file, not the summary file. Duh.
+ (_close): Update the summary's mbox_file_size and mbox_modtime
+ before writing it to disk.
+
+ * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_save,
+ camel_mbox_summary_load): Wow. I must have been tired when I wrote
+ this code. First, the comparison bug above. Second, it was using
+ ntohs and htons instead of ntohl and htonl. Third, I was reading
+ the status flag byte in two different places and thus getting out
+ of sync. Fourth, it was writing out field_length bytes of each
+ header field after having converted field_length to network byte
+ order, resulting in lots of random crap being appended, and the
+ summary files being huge. (Fortunately, since the size/modtime
+ comparison was biffed, the garbage summary read from disk was
+ always immediately discarded.)
+
+ * providers/mbox/camel-mbox-parser.c (camel_mbox_parse_file): fix
+ an off-by-one error that caused the last-used UID to be reused if
+ the summary file was regenerated. (That one wasn't my fault. :-)
+
+2000-03-31 Dan Winship <danw@helixcode.com>
+
+ * camel-stream-mem.c: implement unimplemented methods
+
+ * gmime-content-field.c
+ (gmime_content_field_construct_from_string):
+ * data-wrapper-repository.c
+ (data_wrapper_repository_get_data_wrapper_type):
+ * camel-simple-data-wrapper.c (my_write_to_stream):
+ * camel-mime-part.c (my_set_input_stream):
+ remove debugging printf()s that no longer seem useful.
+
+2000-03-31 Matt Loper <matt@helixcode.com>
+
+ * camel-formatter.c (text_to_html): Added "convert_newlines_to_br"
+ boolean param, to give the option of not converting '\n's to <br>
+ tags. This way, when we stick stuff in a <pre> tag, newlines stay
+ newlines.
+
+2000-03-30 Matt Loper <matt@helixcode.com>
+
+ * camel-formatter.c (handle_text_plain): Use <pre> tag to force
+ the use of monospaced fonts.
+
+2000-03-30 Dan Winship <danw@helixcode.com>
+
+ * camel-service.c (camel_service_getport): Add a htons in the
+ default_number case, and document the fact that the function
+ returns the port in network byte order.
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Revert
+ Miguel's change. The port number bug was actually somewhere
+ else, and the IP address copying code was fine already.
+
+2000-03-29 Miguel de Icaza <miguel@gnu.org>
+
+ * providers/pop3/camel-pop3-store.c (pop3_connect): Add htons
+ (port), and only copy 4 bytes for the IP address to prevent a DNS
+ attack.
+
+2000-03-28 Dan Winship <danw@helixcode.com>
+
+ * camel-seekable-substream.c
+ (camel_seekable_substream_new_with_seekable_stream_and_bounds):
+ make this return a CamelStream rather than a
+ CamelSeekableSubstream, because that's the way Gtk objects tend to
+ work.
+
+ * camel-service.c (camel_service_gethost,
+ camel_service_getport): convenience functions to canonicalize
+ the host and port values of a service's URL.
+ * providers/pop3/camel-pop3-store.c: use them
+
+ * providers/mbox/camel-mbox-folder.c
+ (_check_get_or_maybe_generate_summary_file): Make this work when
+ the inbox file doesn't yet exist.
+
+2000-03-27 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c (_append_message): uncomment
+ the call to unlink the temp file: there's no way to tell
+ camel_stream_fs to truncate a file, so reusing the same file was
+ resulting in junk at the ends of messages.
+
+ * camel-folder.[ch]: add delete_message_by_{number,uid}.
+
+ * providers/pop3/camel-pop3-folder.[ch]: implement
+ delete_message_by_uid. Add a close method to do expunging
+ of deleted messages if requested.
+
+ * providers/pop3/camel-pop3-store.[ch]: support for
+ CamelPop3Folder::close. (You have to close the connection
+ in order to expunge the folder, thus the store may be
+ connected in the CamelService::is_connected sense when it
+ is not actually connected to the server.) Also some bugfixes.
+
+2000-03-27 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-folder.c (_append_message): Unref the
+ output_stream when done, close doesn't do it.
+ (_append_message): Clear all uid's from the appending messages, so
+ they are reassigned proper unique id's.
+
+ * gmime-utils.c (get_header_array_from_stream): Actually free the
+ header, it is copied elsewhere.
+
+2000-03-26 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev): Added
+ folder parameter to function. Fixed callers.
+ (index_message): Index a message as it is assigned a unique id.
+
+ * camel-mime-part.c (my_set_content_id): Make sure we malloc and
+ copy the content_id, otherwise *poof*
+
+2000-03-25 NotZed <NotZed@HelixCode.com>
+
+ * camel-medium.c (_finalize): Another leak, unref the content if
+ finished with it.
+
+ * camel-recipient.c (camel_recipient_table_free): Plug another
+ memory leak - actually free the recipient table.
+
+ * camel-mime-message.c (_finalize): Plugged a memory leak with the
+ flags table.
+
+ * gmime-utils.c (_store_header_pair_from_string): A simpler, more
+ debuggable and functionally identical header extraction function.
+
+2000-03-24 NotZed <NotZed@HelixCode.com>
+
+ * gmime-content-field.c (gmime_content_field_set_parameter):
+ Remove the hash table entry before freeing its key and data.
+
+2000-03-27 Dan Winship <danw@helixcode.com>
+
+ * providers/Makefile.am (SUBDIRS): Add pop3.
+
+ * providers/pop3/camel-pop3-store.c: keep separate input and
+ output streams so the output doesn't end up being buffered.
+
+ * providers/pop3/camel-pop3-folder.c (get_message_by_number):
+ finish implementing this.
+
+2000-03-27 Michael Meeks <michael@helixcode.com>
+
+ * camel-mime-part.c (my_set_disposition): fix so less broken.
+ (my_finalize): remove dodgy disposition free.
+
+ * camel-data-wrapper.c (my_set_mime_type_field): unref instead of
+ free on mime_type.
+
+2000-03-27 Dan Winship <danw@helixcode.com>
+
+ * camel-service.c (camel_service_free_auth_types): new routine to
+ free the data allocated by camel_service_query_auth_types.
+
+ * providers/pop3/camel-pop3-store.c (free_auth_types): implement
+
+ * camel-stream-mem.c (camel_stream_mem_new_with_buffer): rename
+ camel_stream_mem_new_with_buffer to ..._with_byte_array and add a
+ new ..._with_buffer that takes a char * rather than a GByteArray.
+
+ * Remove CamelStreamBufferedFs, since CamelStreamBuffer makes it
+ redundant.
+
+2000-03-25 Dan Winship <danw@helixcode.com>
+
+ * camel-folder-summary.[ch]: change the CamelFolderSummary
+ interfaces to allow partial summary queries (for dealing
+ with very large folders). Remove the "extended_fields" from
+ CamelFolderInfo and CamelMessageInfo: this is better dealt
+ with by subtyping.
+
+ * providers/mbox/camel-mbox-summary.[ch]: Make CamelMboxSummary a
+ subclass of CamelFolderSummary. Update interfaces for that. Remove
+ the internal/external summary distinction. Remove the (unused) md5
+ checksum in the folder summary. Change the summary file format
+ (primarily to make it no longer byte-order dependent) and add a
+ version number to it so it will be easier to change in the future.
+
+ * providers/mbox/camel-mbox-folder.[ch]
+ * providers/mbox/camel-mbox-search.c
+ * providers/mbox/camel-mbox-utils.c: update for summary changes
+
+ * camel-exception-list.def: add
+ CAMEL_EXCEPTION_FOLDER_SUMMARY_INVALID
+
+2000-03-23 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-provider.c: Added flag to provider
+ initialisation, to match changed structure.
+
+2000-03-22 NotZed <NotZed@HelixCode.com>
+
+ * camel-folder.[ch]: Added async search api.
+
+ * providers/mbox/camel-mbox-search.c
+ (camel_mbox_folder_search_by_expression): Changed to use an
+ asynchronous interface.
+ (camel_mbox_folder_search_cancel): Cancel function for async
+ interface.
+
+2000-03-23 Dan Winship <danw@helixcode.com>
+
+ * camel-stream-buffer.c (camel_stream_buffer_read_line): Function
+ to read one line of any size from a stream and return it in
+ allocated memory.
+
+2000-03-22 Dan Winship <danw@helixcode.com>
+
+ * camel-service.c (camel_service_query_auth_types): New function
+ to query a service for the authentication protocols it supports.
+ * providers/pop3/camel-pop3-store.c (query_auth_types): implement
+
+ * camel-provider.c (camel_provider_scan): New function to
+ scan the provider dir and return a list of all providers.
+
+ * providers/pop3/camel-pop3-folder.c: fill this in partially
+ * providers/pop3/camel-pop3-store.c: make camel_pop3_command
+ return the text after "+OK"/"-ERR" and add a separate
+ camel_pop3_get_additional_data to get the message body or
+ whatever. Also make them take a CamelPop3Store rather than
+ a CamelStreamBuffer.
+
+2000-03-22 Matt Loper <matt@helixcode.com>
+
+ * camel-formatter.c (debug): Disabled some useless debug
+ messaging.
+
+2000-03-21 Dan Winship <danw@helixcode.com>
+
+ * providers/pop3: some initial bits of the POP3 provider, to
+ make Matt happy. Incomplete, untested, etc.
+
+2000-03-21 bertrand <bertrand@helixcode.com>
+
+ * providers/mbox/camel-mbox-summary.c
+ (camel_mbox_summary_append_internal_to_external): copy the size field
+
+ * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): initialize
+ message_info to NULL
+
+ * camel-folder-summary.h: added the size field.
+
+ * providers/mbox/camel-mbox-summary.h:
+ added the received_date field.
+
+ * providers/mbox/camel-mbox-summary.c:
+ documented all functions.
+
+ * camel-folder-summary.h: name change and
+ new fields.
+
+ * providers/mbox/camel-mbox-search.c: update to
+ conform to name change in the summary fields.
+
+2000-03-10 bertrand <bertrand@helixcode.com>
+
+ * camel-service.h: cosmetic changes.
+
+2000-03-09 Dan Winship <danw@helixcode.com>
+
+ * s/HelixCode/Helix Code, Inc./ in the copyrights
+
+2000-03-07 bertrand <bertrand@helixcode.com>
+
+ * camel-formatter.c (handle_mime_part):
+ plug mem leaks due to bad documentation
+ of camel_content_field_get_mime_type
+ (print_camel_body_part): idem
+ (handle_multipart_alternative): idem
+
+ * gmime-content-field.c (gmime_content_field_get_mime_type):
+ documentation fix.
+
+
+ * camel-mime-part.c (my_finalize): unref the
+ content_input_stream if any.
+
+2000-03-06 bertrand <bertrand@helixcode.com>
+
+ * camel-stream-fs.c (_seek): fix a bogus calculation
+ in the return position.
+
+2000-03-05 bertrand <bertrand@helixcode.com>
+
+ * camel-session.h: cosmetic fixes.
+
+ * camel-stream-fs.c (_read):
+ (_seek): fixed the current position so that it refers
+ to the current position in the stream, not in its parent.
+
+2000-03-04 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-search.c
+ (camel_mbox_folder_search_by_expression): Ref the summary
+ after we have got it.
+
+2000-03-04 bertrand <bertrand@helixcode.com>
+
+ * camel-mime-part.c (my_write_content_to_stream):
+ stream the raw content instead of nothing if the encoding
+ is not supported.
+
+ * camel-stream-fs.c (_seek): handle eos more
+ properly.
+
+ * camel-formatter.c (get_bonobo_tag_for_object):
+ bonobo-goad-id is the good key to look for.
+ (get_bonobo_tag_for_object): close the <object> tag.
+ (get_bonobo_tag_for_object): the correct syntax for the
+ to set a parameter inside an <object> tag is :
+ <object classid="..."> <param name="uid" value="..."> <param ...>
+ </object>
+
+2000-03-03 bertrand <bertrand@helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
+ use set_input_stream instead of construct_from_stream
+ to feed the message object.
+
+ * camel-data-wrapper.c (my_write_to_stream): reset output stream.
+ (my_set_input_stream): unref the previous input stream.
+ use the set_output_stream for default behaviour.
+ (my_set_output_stream): unref previous output stream.
+
+ * camel-mime-part.c (my_write_content_to_stream): reset content
+ object output stream.
+
+2000-03-03 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev): Make
+ sure we open with create with a creation mask.
+
+2000-03-01 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_content_from_stream): DO NOT assert on
+ content type, we have fallback code 4 lines below it ... *sigh*
+
+2000-02-29 NotZed <NotZed@HelixCode.com>
+
+ * Makefile.am (libcamelinclude_HEADERS): Added camel-stream-buffer
+ to build.
+
+ * camel-stream-buffer.[ch]: Generic buffer which can be applied to
+ any stream.
+
+2000-03-03 bertrand <bertrand@helixcode.com>
+
+ * camel-formatter.c (handle_image): in the case
+ of images, put the content object output stream
+ in the url. This allows the message browser
+ to show inline images.
+
+ * camel-stream-b64.c (my_read_encode): fixed state
+ 0 keep value.
+
+2000-03-02 bertrand <bertrand@helixcode.com>
+
+ * camel-stream-b64.c (my_read_encode): don't forget to
+ set the state to 0 after 3.
+ (my_read_encode): don't forget to encode, even in state 3.
+
+ * camel-simple-data-wrapper.c: static functions are prefixed
+ with my_ instead of _
+ * camel-multipart.c: static functions are prefixed
+ with my_ instead of _
+ (my_write_to_stream): commented.
+ (my_write_to_stream): warning in case the boudary is set
+ but is a zero length string.
+
+ * camel-mime-part.c (camel_mime_part_encoding_from_string):
+ remove debug trace.
+
+ * camel-mime-part.c: Replaced all static functions
+ with name begining with _ by the same name begining
+ with "my_" to prevent the possible conflicts
+ with system symbols Dan warned us about.
+
+ * camel-stream-b64.c (camel_stream_b64_write_to_stream):
+ use CamelStreamB64 type for the input stream.
+
+ * camel-mime-part.c (_get_content_object): remove
+ debugging trace
+ (_write_content_to_stream): implement the b64
+ encoding the new way (that is using camel_stream_b64)
+
+ * camel-data-wrapper.c (my_write_to_stream):
+ fix implementation so that it writes properly
+ to the output stream even.
+
+ * camel-stream-b64.c (camel_stream_b64_write_to_stream):
+ fix implementation.
+
+2000-02-29 bertrand <bertrand@helixcode.com>
+
+ * camel-stream-b64.c (camel_stream_b64_write_to_stream): new
+ utility function.
+
+ * camel-data-wrapper.c (_write_to_stream): default
+ implementation.
+
+ * gmime-utils.c (_store_header_pair_from_string):
+ revert strange changes.
+
+ * camel-stream-b64.c (my_read_decode): set eos to true when we
+ have read the whole input stream.
+ (my_reset): set eos to FALSE.
+
+2000-02-28 NotZed <NotZed@HelixCode.com>
+
+ * camel-mime-part.c (_parse_header_pair): Dont free this either.
+
+ * camel-medium.c (_remove_header): Ugh, dont free the header
+ before we actually remove it.
+ (_add_header): Ugh, dont free hashtable entries which may be
+ duplicated (hash_insert _will_ reference that memory).
+
+ * string-utils.c (string_trim): Trimming a 0-length string is not
+ an error.
+
+ * camel-mime-message.c (_parse_header_pair): Fixed very broken
+ memory handling of header_name/value.
+
+ * providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev):
+ Initialise end_of_last_message always.
+ (camel_mbox_copy_file_chunk): Stop trying to read if we run out of
+ data, rather than looping forever.
+ (camel_mbox_write_xev): Use an open flag when opening with create.
+
+ * camel-folder.c (camel_folder_search_by_expression): No, its not
+ a fatal error to search on a non-searchable folder, you just dont
+ get any matches.
+ (_open): Dont open an opened folder (i dont see why this is really
+ a bug, but what the hell ...)
+
+ * providers/mbox/camel-mbox-folder.c (_init): Set search cap on.
+ (_open): Call parent class to perform open. Remove folder-open
+ check to parent instead.
+ (_create): open takes a creation mask, dont use umask to try and
+ set the open mode.
+ (_delete): Dont bother checking folder==NULL, its already been
+ checked on the external interface (changed to an assertion, this
+ would have to be a camel bug).
+ (_delete_messages): Likewise.
+ (_create): Ditto.
+ (_init): Dont go and clear all the paths and shit that the parent
+ open just setup for us.
+ (_delete_messages): Get rid of more umask stuff.
+ (_append_message): Make sure we pass file mode to open with create.
+ (_append_message): Cleaned up some indenting to make it readable.
+
+ * camel-stream-b64.c (my_read_encode): Fixed a typo.
+
+ * providers/mbox/camel-mbox-search.c: Changed to use e-sexp,
+ rather than filter-sexp.
+
+2000-02-28 bertrand <bertrand@helixcode.com>
+
+ * camel-stream-b64.c (my_read_encode): encoding
+ filter.
+
+2000-02-23 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel-stream-b64.c: changed the __static
+ suffix into a my_ prefix.
+ (camel_stream_b64_set_mode): reset the persistent
+ status.
+ (my_read_decode): remove superfluous %
+
+ * providers/mbox/camel-mbox-utils.c (camel_mbox_copy_file_chunk):
+ fix exception description message.
+
+2000-02-24 Dan Winship <danw@helixcode.com>
+
+ * camel-session.c: Add camel_session_get_transport_for_protocol.
+
+ * camel-transport.h:
+ * camel-transport.c: Add an abstract CamelTransport class.
+
+ * providers/sendmail/*: A CamelTransport that uses sendmail
+ to deliver mail.
+
+2000-02-24 Dan Winship <danw@helixcode.com>
+
+ * camel-folder.c: use CamelExceptions for run-time errors, not
+ incorrect code. Don't bother validating that an object exists from
+ inside one of its methods, since you couldn't have gotten there if
+ it didn't. Fix some code style bugs.
+
+ (_init): Rename init_with_store to init and add parent_folder,
+ separator, and name arguments.
+ (_set_name): Get separator from self, not parent_store now.
+
+ * camel-store.h:
+ * camel-store.c: Remove get/set_separator.
+
+ * providers/mbox/: Update for above.
+
+2000-02-23 Dan Winship <danw@helixcode.com>
+
+ * camel-medium.c (_finalize): Free the data in the headers hash
+ table.
+ (_add_header): g_strdup the header name and value when adding it.
+
+ * camel-mime-part-utils.c
+ (camel_mime_part_construct_headers_from_stream): Free the header
+ data after calling camel_medium_add_header, since it will have
+ g_strdup()ed it itself.
+
+2000-02-22 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-search.c: Dont compile by default.
+
+ * providers/mbox/Makefile.am: Fuck off the filter code.
+
+2000-02-22 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel-stream-b64.c (read_decode__static):
+ don't read the char if we reached the length
+ of the output buffer. Hours lost on this
+ %$!@# bug : 3.5
+
+ * camel-folder.c (camel_folder_get_subfolder):
+ (camel_folder_create):
+ (camel_folder_delete):
+ (camel_folder_delete_messages):
+ (camel_folder_list_subfolders):
+ (camel_folder_expunge):
+ (camel_folder_get_message_by_number):
+ (camel_folder_get_message_count):
+ (camel_folder_append_message):
+ (camel_folder_copy_message_to):
+ (camel_folder_get_summary):
+ (camel_folder_get_message_uid):
+ (camel_folder_get_message_by_uid):
+ (camel_folder_get_uid_list):
+ Check folder state (open/close) and raise an
+ exception if it is not ok.
+
+ * providers/mbox/camel-mbox-folder.c (_create):
+ create the file and the path with two different
+ names.
+
+ * camel-folder.c (_create): handle the case
+ when the folder name starts with '/'
+
+ * camel-exception.c (camel_exception_new): use
+ (void) instead of () in decl.
+
+ * camel-exception.h: cosmetic fixes.
+
+ * camel-exception.c (camel_exception_init): new routine.
+ Fix a bug in mail/message-list.c
+
+
+ * camel-folder.h: cosmetic changes.
+
+ * camel-stream-b64.c (reset__static): added a
+ reset method. Thanks message-browser to find
+ so much bugs :)
+
+ * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): readd
+ Unicode libs.
+
+2000-02-21 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel-formatter.c (lookup_unique_id):
+ awful hack to test get_output_stream.
+ * camel-stream-b64.[ch] :
+ b64 encoding/decoding is now implemented as
+ a stream.
+
+2000-02-21 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel-seekable-substream.c (_reemit_parent_signal):
+ emit "data_available" when parent stream emits it.
+
+2000-02-21 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/Makefile.am: Uh, fixed LIBADD again. What was
+ there was never ever going to work, wasn't it tested?
+
+2000-02-21 Dan Winship <danw@helixcode.com>
+
+ * camel-session.h: (struct _CamelSession): Add authenticator.
+
+ * camel-session.c (camel_session_new): Add authenticator.
+ (camel_session_query_authenticator): New function to query the
+ session authenticator for password, etc, information.
+
+2000-02-21 Dan Winship <danw@helixcode.com>
+
+ * camel-session.c: add CamelExceptions to several functions. Use
+ camel_session_new to initialize the session and URL fields of
+ created CamelStores as appropriate.
+
+ * camel-store.h:
+ * camel-store.c
+ * camel-service.h:
+ * camel-service.c: Move the session and url (and associated
+ functions) from CamelStore to CamelService. Add url_flags to
+ CamelService so subclasses can specify which URL components
+ are mandatory for them. Add camel_session_new for
+ camel_session_get_store* to use.
+
+ * providers/mbox/camel-mbox-folder.c:
+ * providers/mbox/camel-mbox-store.c:
+ * providers/mbox/camel-mbox-store.h: Update for above changes.
+
+ * camel-exception-list.def: Once camel is being used for real,
+ exceptions won't be renumberable. So renumber them now to make
+ more room to add exceptions to the various categories later, and
+ add a big warning message.
+
+2000-02-20 Dan Winship <danw@helixcode.com>
+
+ * providers/mbox/Makefile.am: add libibex back to
+ libcamelmbox_la_LIBADD
+
+2000-02-18 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/camel-mbox-search.h
+ (camel_mbox_folder_search_by_expression): Added exception to call,
+ and fixed caller.
+
+ * providers/mbox/camel-mbox-search.c
+ (camel_mbox_folder_search_by_expression): Major changes, to use
+ the sexp evaluator from filter/filter-sexp.c to implement the
+ searching.
+ (func_body_contains): Changed to support multiple strings in 1
+ command (results or'd together)
+
+ * url-util.c (g_url_new): Fixed a typo (colon == 0 isn't right),
+ and made it so full url's are absolute pathed (Dan, this is how it
+ has to work!). Also, always include a path part, even if it is an
+ empty string.
+
+2000-02-18 Dan Winship <danw@helixcode.com>
+
+ * camel/camel-types.h: New header with the typedefs for all camel
+ classes. Now the class headers can just include this and the
+ header for the parent type. This makes it possible for
+ CamelService to include a CamelSession without creating an
+ #include loop.
+
+ * camel/*:
+ * composer/e-msg-composer-attachment-bar.h:
+ * mail/folder-browser.c:
+ * mail/message-list.c: frob #includes to match the new reality
+
+2000-02-17 Dan Winship <danw@helixcode.com>
+
+ * camel/camel-service.h:
+ * camel/camel-service.c: Make camel-service us a Gurl internally.
+ Remove the login/password interfaces and instead provide
+ camel_service_connect_with_url. Add CamelExceptions
+
+2000-02-17 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel/camel-formatter.c (handle_text_plain):
+ (handle_text_html): use camel_stream_reset instead
+ of seek. The formatter should be able to work
+ with all streams, not only seekable streams.
+ In the case where some provider implementation
+ would not be able to provide a reset method
+ to their stream, implementors would have
+ to find a workaround.
+
+ * camel/camel-session.c (camel_session_new): use
+ (void) instean of () in function decl.
+
+ * camel/camel-folder.c: ifdef async operation
+ related code.
+
+ * camel/camel-seekable-stream.c (_seek): added a warning.
+ (_reset): default implementation of reset for seekable
+ stream.
+
+ * camel/camel-mime-message.h: set_received_date declaration fix.
+ cosmetic changes.
+
+ * camel/providers/mbox/camel-mbox-provider.c (camel_provider_module_init):
+ use (void) instead of ().
+
+ * camel/camel-stream.c (camel_stream_reset):
+ new method for CamelStream.
+
+2000-02-17 Dan Winship <danw@helixcode.com>
+
+ * camel/url-util.c (g_url_to_string): New function to convert
+ a Gurl back into a char *.
+
+2000-02-17 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel/camel-formatter.c (handle_text_plain):
+ revamped so that it uses the output stream
+ of the data wrapper
+ (handle_text_html): ditto.
+
+
+ * camel/camel-simple-data-wrapper.h:
+ * camel/camel-simple-data-wrapper.c (camel_simple_data_wrapper_new):
+ use (void) instead of ().
+ (_get_output_stream): simple implementation.
+
+2000-02-16 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel/camel-data-wrapper.c (_set_input_stream): ref input stream
+ (_set_output_stream): ref output stream
+ (_finalize): unref input and output streams
+
+ * camel/camel-seekable-substream.c (_set_bounds): don't
+ seek the begining of the substream.
+ (_eos): fix eos condition testing.
+ (_finalize): unref parent stream
+ (_init_with_seekable_stream_and_bounds): ref parent stream
+
+ * camel/gstring-util.c (g_string_equal_for_hash):
+ (g_string_equal_for_glist): return type is int.
+
+ * camel/camel.h:
+ * camel/camel.c (camel_init): use (void)
+ instead of ().
+
+2000-02-16 NotZed <NotZed@HelixCode.com>
+
+ * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): Added
+ libfilter to link line (temporarily?). Required for
+ filter-sexp.
+
+2000-02-15 bertrand <bertrand@helixcode.com>
+
+ * camel/camel-multipart.c (_localize_part):
+ this routine replaces the _read_part routine
+ and does not store the part in a buffer.
+ (_set_input_stream): use the set_input_stream
+ instead of the construct_from_stream.
+ each bodypart is given an input stream.
+
+ * camel/camel-mime-part-utils.c:
+ include the data-wrapper-repository header.
+ (camel_mime_part_construct_content_from_stream):
+ use the set_input_stream instead of the
+ construct_from_stream method.
+
+ * camel/camel-seekable-substream.c (_set_bounds):
+ cur position is set to 0 not to inf_bound.
+
+2000-02-15 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel/camel-mime-part.c: include gmime-base64.h
+ various compilation and runtime fixes.
+ (_set_input_stream): store the input substream
+ for the content object.
+
+ * camel/camel-data-wrapper.h: declare the
+ set/get function on input/output stream.
+
+ * camel/camel-mime-part.c (_get_content_object):
+ don't use a temporary mem stream.
+
+ * camel/camel-seekable-substream.c (_seek):
+ (_eos):
+ (_read): the substream can be unlimited in length
+
+ * camel/camel-data-wrapper.c (camel_data_wrapper_class_init):
+ set the get/set_input/output_stream methods.
+
+ * camel/camel-multipart.c (_construct_from_stream):
+ camel_stream_seek -> camel_seekable_stream_seek
+
+2000-02-14 Miguel de Icaza <miguel@gnu.org>
+
+ * camel/providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): Add
+ the unicode libraries as well.
+
+ * camel/camel-provider.c (camel_provider_register_as_module): Add
+ error reporting here. Desire to use Solaris increases. Hair loss
+ in the last two hours: 5,400.
+
+ * camel/providers/mbox/camel-mbox-provider.c
+ (camel_mbox_get_provider): Renamed function.
+
+ * camel/camel.h: All include files use camel/ now here.
+
+ * camel/providers/mbox/Makefile.am: Drop all the dynamism from
+ Camel, and make this a standard library.
+
+2000-02-14 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel/gmime-utils.c (get_header_array_from_stream): use the
+ eos stream method.
+ (gmime_read_line_from_stream): ditto.
+
+ * camel/camel-stream-fs.h (struct ): add the eof field
+ cosmetics changes.
+
+ * camel/camel-stream-fs.c (camel_stream_fs_init): set eof.
+ (_read): set eof on end of file.
+ (_eos): implemented.
+
+ * camel/gmime-utils.c (get_header_array_from_stream):
+ make a blocking version of the header parser.
+ When the fs stream uses gnome-vfs, this should
+ be changed.
+ (gmime_read_line_from_stream): ditto.
+
+2000-02-11 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel/camel-stream-fs.c:
+ everywhere, when using the cur_pos field, do it
+ on the CamelSeekableStream object.
+ (_seek): small fix.
+
+ * camel/camel-seekable-stream.c (camel_seekable_stream_seek):
+ s/camel_stream_seek/camel_seekable_stream_seek/g
+
+ * camel/camel-seekable-stream.h:
+ (struct ): added a field to store the
+ current position.
+
+ * camel/camel-seekable-stream.c (camel_seekable_stream_get_current_position):
+ New function. Allows to get the current position
+ of a seekable stream.
+
+
+2000-02-13 NotZed <notzed@zedzone.helixcode.com>
+
+ * providers/mbox/camel-mbox-search.c: New file, implements the
+ search api for mbox folders.
+
+ * providers/mbox/Makefile.am: Link with ibex.
+
+ * camel-folder.c (camel_folder_has_search_capability): Api
+ additions.
+ (camel_folder_search_by_expression): Ditto.
+
+2000-02-12 NotZed <notzed@zedzone.helixcode.com>
+
+ * providers/mbox/camel-mbox-folder.c (_set_name): Setup index
+ filename as well.
+ (_init_with_store): Init index filename. Hmm, none of these
+ names ever seem to get free'd (FIXME?)
+
+ * providers/mbox/camel-mbox-folder.h: Add index file name.
+
+2000-02-12 NotZed <notzed@helixcode.com>
+
+ * camel-folder.h: Add folder search functions.
+
+ ** Created ChangeLog just for camel **
+ - refer to ../ChangeLog for changes prior to this date.