-2000-08-07 Not Zed <NotZed@HelixCode.com>
+2000-10-02 Dan Winship <danw@helixcode.com>
- * providers/mh/camel-mh-folder.c (mh_append_message): Only retry
- another uid if we had a name clash, otherwise fail.
+ * camel-provider.h: Remove default_ports.
-2000-08-04 Not Zed <NotZed@HelixCode.com>
+ * camel-remote-store.c (remote_connect): Get default_port from
+ CamelRemoteStore rather than CamelProvider.
- * camel-url.c (camel_url_set_protocol):
- (camel_url_set_host):
- (camel_url_set_path):
- (camel_url_set_port): Url editing functions.
+ * providers/{imap,nntp,pop3}/camel-*-store.c: Initialize
+ CamelRemoteStore::default_port
-2000-08-02 Not Zed <NotZed@HelixCode.com>
+ * providers/*/camel-*-provider.c: Remove default_ports.
- * 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
+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>
- * providers/mh/camel-mh-folder.c (mh_append_message): Fix a bug
- where it would never open an output file/uid.
+ * camel-internet-address.c (internet_encode): If the name is "" we
+ weren't outputting anything; output the address at least.
- * providers/mbox/camel-mbox-store.c (rename_folder):
- Implementation for mbox as well.
+2000-08-16 Peter Williams <peterw@helixcode.com>
- * camel-store.c (camel_store_rename_folder): New method to rename folders.
- (rename_folder): Default implementation.
+ * 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.
- * providers/mh/camel-mh-store.c (delete_folder): Implement this.
- (rename_folder): Implement a rename operation.
+ * 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-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
* 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):
* 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
(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
(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
* 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
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-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):