+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):
(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