Remove default_ports.
[platform/upstream/evolution-data-server.git] / camel / ChangeLog
index 0c98698..f986a5e 100644 (file)
@@ -1,8 +1,990 @@
+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>
 
-       * camel-folder.c (move_message_to): Yay so lets fix an already fixed fix, again.
+       * 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>