Commit Graph

1076 Commits

Author SHA1 Message Date
7ac3df4983 If the namespace is at/below INBOX, check for the INBOX explicitly (since
2002-11-15  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-store.c (imap_connect_online): If the
	namespace is at/below INBOX, check for the INBOX explicitly (since
	it obviously won't show up in a LSUB INBOX.*). If either INBOX is
	not returned in the response or if the folder flags contain
	\NoSelect, subscribe to INBOX and then try LSUB again.

svn path=/trunk/; revision=18824
2002-11-18 13:23:32 +00:00
e1ef0a9ced Use g_strerror when setting an exception string (we need it to be in
2002-11-11  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-folder.c (get_message_simple): Use
	g_strerror when setting an exception string (we need it to be in
	UTF-8).

	* providers/pop3/camel-pop3-store.c (pop3_try_authenticate): Use
	g_strerror when setting an exception string (we need it to be in
	UTF-8).

	* providers/pop3/camel-pop3-folder.c (pop3_refresh_info): Use
	g_strerror when setting an exception string (we need it to be in
	UTF-8).
	(pop3_get_message): Same.

svn path=/trunk/; revision=18690
2002-11-11 06:40:28 +00:00
3eabd14ace Use g_strerror when setting an exception string (we need it to be in
2002-11-11  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/local/camel-spool-summary.c (spool_summary_sync_full):
	Use g_strerror when setting an exception string (we need it to be
	in UTF-8).
	(spool_summary_check): Here too.

	* providers/local/camel-spool-store.c (construct): Use g_strerror
	when setting an exception string (we need it to be in UTF-8).
	(get_folder): Same.
	(scan_dir): Here too.

	* providers/local/camel-spool-folder.c (spool_lock): Use
	g_strerror when setting an exception string (we need it to be in
	UTF-8).

	* providers/local/camel-mh-summary.c (mh_summary_check): Use
	g_strerror when setting an exception string (we need it to be in
	UTF-8).

	* providers/local/camel-mh-store.c (delete_folder): Use g_strerror
	when setting an exception string (we need it to be in UTF-8).

	* providers/local/camel-mbox-summary.c (summary_update): Use
	g_strerror when setting an exception string (we need it to be in
	UTF-8).
	(mbox_summary_sync_full): Here too.
	(mbox_summary_sync_quick): Same.
	(mbox_summary_sync): Also here.
	(camel_mbox_summary_sync_mbox): Again here.

	* providers/local/camel-mbox-folder.c (mbox_lock): Use g_strerror
	when setting an exception string (we need it to be in UTF-8).
	(mbox_append_message): Same.
	(mbox_get_message): Here too.

	* providers/local/camel-maildir-summary.c (maildir_summary_load):
	Use g_strerror when setting an exception string (we need it to be
	in UTF-8).
	(maildir_summary_check): Same.

	* providers/local/camel-maildir-store.c (get_folder): Use
	g_strerror when setting an exception string (we need it to be in
	UTF-8).
	(delete_folder): Same.
	(delete_folder): Here too.

	* providers/local/camel-local-summary.c (local_summary_sync): Use
	g_strerror when setting an exception string (we need it to be in
	UTF-8).

	* providers/local/camel-local-store.c (get_folder): Use g_strerror
	when setting an exception string (we need it to be in UTF-8).
	(create_folder): Same.
	(xrename): Here too.
	(rename_folder): And here.
	(delete_folder): Also here.

	* camel-provider.c (camel_provider_init): For debugging printfs,
	we want to use normal strerror (we want locale charset, not
	UTF-8).

	* camel-movemail.c (camel_movemail): Use g_strerror when setting
	an exception string (we need it to be in UTF-8).
	(movemail_external): Same.
	(camel_movemail_copy_file): Here too.
	(camel_movemail_solaris): Also here.

	* camel-mime-utils.c (rfc2047_decode_word): For debugging printfs,
	we want to use normal strerror (we want locale charset, not
	UTF-8).
	(header_encode_param): Same.

	* camel-mime-part-utils.c (convert_buffer): For debugging printfs,
	we want to use normal strerror (we want locale charset, not
	UTF-8).

	* camel-lock-client.c (camel_lock_helper_init): Use g_strerror
	when setting an exception string (we need it to be in UTF-8).

	* camel-data-cache.c (camel_data_cache_remove): Use g_strerror
	when setting an exception string (we need it to be in UTF-8).

	* camel-tcp-stream-raw.c (flaky_tcp_write): For debugging printfs,
	we want to use normal strerror (we want locale charset, not
	UTF-8).
	(flaky_tcp_read): Same.

	* camel-gpg-context.c (gpg_ctx_op_step): For debugging printfs, we
	want to use normal strerror (we want locale charset, not UTF-8).

	* camel-service.c (camel_gethostbyname): Use g_strerror when
	setting an exception string (we need it to be in UTF-8).

	* camel-lock.c (camel_lock_dot): Use g_strerror when setting an
	exception string (we need it to be in UTF-8).
	(camel_lock_fcntl): Same.

svn path=/trunk/; revision=18689
2002-11-11 06:24:56 +00:00
4eaf9e5699 Use g_path_get_basename instead of g_strdup (g_basename (filename)).
2002-11-01  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/local/camel-local-store.c (delete_folder): Use
	g_path_get_basename instead of g_strdup (g_basename (filename)).

svn path=/trunk/; revision=18498
2002-11-02 00:45:29 +00:00
29748a7520 Removed hash-table-utils.[c,h] from the build.
2002-10-31  Jeffrey Stedfast  <fejj@ximian.com>

	* Makefile.am: Removed hash-table-utils.[c,h] from the build.

	* hash-table-utils.[c,h]: Removed.

	* string-util.c: Imported g_strcase[hash,equal] into here so we
	can remove hash-table-utils.[c,h].

	* camel-medium.c: Removed #include "hash-table-utils.h"

	* camel-mime-message.c: Same here.

	* camel-mime-part.c: And here.

	* camel-session.c: Here too.

	* providers/imap/camel-imap-store-summary.c: #include
	string-utils.h instead of hash-table-utils.h

	* camel-charset-map.c: Same.

	* camel-folder-summary.c: Here too.

	* camel-provider.c: Again here.

	* camel-store-summary.c: And again...

svn path=/trunk/; revision=18473
2002-10-31 21:57:29 +00:00
d91b5bb034 ** For bug #31647 and bug #31456.
2002-10-24  Not Zed  <NotZed@Ximian.com>

        ** For bug #31647 and bug #31456.

        * camel-store-summary.c (store_info_string): for STORE_INFO_NAME,
        skip the leading /.

        * providers/imap/camel-imap-store.c
        (parse_list_response_as_folder_info): Remove jeff's last patch,
        and use the store summary to create the name and path of the
        folderinfo so it manages namespace issues.
        (get_folder_info_online): Just pass @top directly to
        build_folder_info always, since namespace is mapped to 1 tree
        level.
        (imap_build_folder_info): Remove jeff's last patch, dont strip
        leading /'s, they shouldn't exist.
        (imap_connect_online): Remove adding the INBOX here, we add it
        later.
        (get_subscribed_folders): Make sure INBOX is always in the list.
        some imap servers dont seem to let you subscribe to it(?), so
        always have it act as subscribed.

        * camel-store.c (camel_folder_info_build): back out the last 2
        patches from Jeff (for #31456) to get the original behaviour.
        (camel_folder_info_build): When creating a fake
        parent, dont strip the namespace from the full_name.  malloc keys
        in hash since we dont have them anymore.
        (free_name): Helper to free names.

        * providers/imap/camel-imap-store-summary.c
        (camel_imap_store_summary_namespace_new): Canonicalise the
        namespace (strip trailing dir_sep), and change the path to remove
        any /'s.
        (camel_imap_store_summary_namespace_find_path):
        (camel_imap_store_summary_namespace_find_full): new, find
        namespace by path/full name.
        (camel_imap_store_summary_full_from_path): Changed to a simple
        wrapper around path_to_full, after checking namespace.
        (camel_imap_store_summary_add_from_full): map the namespace if
        present.
        (camel_imap_store_summary_path_to_full): If namespace exists,
        unmap it.

svn path=/trunk/; revision=18424
2002-10-24 14:01:53 +00:00
08af37f568 Canonicalise the source_uri to not have a path. Fixes bug #32268.
2002-10-18  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-filter-driver.c (camel_filter_driver_filter_folder):
	Canonicalise the source_uri to not have a path. Fixes bug #32268.

2002-10-17  Jeffrey Stedfast  <fejj@ximian.com>

	Possible fix for bug #32270

	* providers/pop3/camel-pop3-store.c (try_sasl): If we get an I/O
	error, we should not be setting the CANT_AUTH exception but should
	instead be setting the SYSTEM exception. Also check for EINTR
	which signifies a USER_CANCEL exception.
	(pop3_try_authenticate): If the auth mechanism isn't supported,
	don't set the CANT_AUTH exception since then we will loop and try
	again with the same data which will just cause an infinite loop.
	(pop3_connect): Simplified a bit.

svn path=/trunk/; revision=18412
2002-10-22 18:17:06 +00:00
aa99a5060a If the response from the IMAP server is "No", don't set the
2002-10-08  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-command.c (imap_read_response): If the
	response from the IMAP server is "No", don't set the
	SERVICE_UNAVAILABLE exception, this makes error reporting in the
	UI for deleting IMAP folders that cannot be deleted inaccurate
	(ie, it reports "Cannot delete in offline mode" which is not the
	problem).

svn path=/trunk/; revision=18356
2002-10-09 17:29:34 +00:00
3b8bf37f68 Fixes bug #31752
2002-10-07  Jeffrey Stedfast  <fejj@ximian.com>

	Fixes bug #31752

	* providers/smtp/camel-smtp-transport.c (connect_to_server): Don't
	forget to send another EHLO command to the server once we toggle
	into STARTTLS mode.
	(smtp_helo): Reset any flags set using the EHLO response and also
	any authtypes.

svn path=/trunk/; revision=18334
2002-10-07 18:13:53 +00:00
566e0fe148 Add missing ;.
svn path=/trunk/; revision=18315
2002-10-03 01:54:52 +00:00
5799cfdcea /home/notzed/gnome/head/evolution/camel
2002-10-02  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-folder.c (get_matching): Set *set to
        NULL if we dont get any matches.
        (imap_sync_online): If we get no matches, skip any work, also
        reorder some code to make it easier to skip.  See #31031.

        * providers/imap/camel-imap-store.c
        (imap_check_folder_still_extant): Default to "TRUE", if the list
        command failed, it probably means a server problem, assume the
        worst.  This makes imap_refresh_info not clear the exception and
        crash.  Fixes crash of #31000.

2002-10-01  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-folder.c (imap_refresh_info): Make
        sure we pass the exception to imap_folder_selected(), otherwise
        failures can be lost.  See bug #31000.

2002-10-01  Not Zed  <NotZed@Ximian.com>

        * camel-folder.c (thaw): Add an assertion that the frozen count>0.
        (freeze): Same for >= 0.

        * camel-vee-folder.c (camel_vee_folder_remove_folder): Use the
        unmatched freeze_count when thawing folders removed from
        unmatched, rather than the folder's freeze_count.  Might be
        related to #27391.

svn path=/trunk/; revision=18314
2002-10-03 00:15:23 +00:00
7bbdb47dd5 Use strtol when decoding the timezone (since it can be negative) and don't
2002-10-01  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-folder.c (decode_internaldate): Use
	strtol when decoding the timezone (since it can be negative) and
	don't forget to increment inptr to the start of the time (ie,
	don't leave inptr pointing to the year when decoding the
	hour:min:sec).

svn path=/trunk/; revision=18283
2002-10-01 18:04:46 +00:00
6122b68bb1 Fixes bug #31456.
2002-09-30  Jeffrey Stedfast  <fejj@ximian.com>

	Fixes bug #31456.

	* providers/imap/camel-imap-store.c (imap_connect_online): Don't
	LSUB "" "*", instead get both an LSUB containing the subfolders of
	the namespace and an LSUB of INBOX (assuming namespace was
	non-empty). This fix really has nothing to do with bug #31456 but
	is what should have been done in the first place.
	(parse_list_response_as_folder_info): Simplify a tad and strip
	extra leading /'s from fi->path.
	(imap_build_folder_info): Strip extra leading /'s from fi->path.

	* camel-store.c (camel_folder_info_build): Don't strip the
	namespace from the fi->full_name when hashing or creating fake
	parent folder-infos. Fixes a bug I found while trying to reproduce
	bug #31456.
	(camel_folder_info_build_path): Strip off extra leading dir_sep
	chars from the path.

svn path=/trunk/; revision=18273
2002-09-30 22:57:42 +00:00
326d9cdc79 Don't strip the namespace from the fi->full_name when hasing or creating
2002-09-30  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-store.c (camel_folder_info_build): Don't strip the
	namespace from the fi->full_name when hasing or creating fake
	parent folders. Fixes a bug I found while trying to reproduce bug
	#31456.

svn path=/trunk/; revision=18270
2002-09-30 20:45:42 +00:00
1dcff68ce6 Remove debug content_info_dump, could cause a crash, and not really needed
2002-09-30  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-folder.c (imap_get_message): Remove
	debug content_info_dump, could cause a crash, and not really
	needed anymore.

	* camel-folder-summary.c (camel_content_info_dump): Check ci->type
	!= NULL before dereferencing it.  Should fix crash #31331.

svn path=/trunk/; revision=18259
2002-09-30 05:06:51 +00:00
7ed66fac42 New function to decode the INTERNALDATE response from an IMAP server so we
2002-09-27  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-folder.c (decode_internaldate): New
	function to decode the INTERNALDATE response from an IMAP server
	so we don't have to use my broken-date-parser routines.

2002-09-27  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-store.c (connect_to_server):
	NULL-check the streams before unreffing them in the case of a
	failure during ssl negotiations.

	* camel-tcp-stream-ssl.c (camel_tcp_stream_ssl_enable_ssl): Check
	SSL_ResetHandshake() for errors. Also force a handshake after
	we've reset the handshake state on the socket.

svn path=/trunk/; revision=18252
2002-09-27 20:20:08 +00:00
636a544373 Use the summary's last uid as the one to fetch from, ignoring the cache.
2002-09-27  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-folder.c (imap_update_summary): Use
        the summary's last uid as the one to fetch from, ignoring the
        cache.  Use strotul instead of atoi as well.

        * providers/imap/camel-imap-store.c (get_folder_counts): If we
        have the folder open, and the unread count has changed, refresh
        it.  Should fix #30399 enough.  Also in non-check-all mode, if we
        have the folder open, use it anyway.

svn path=/trunk/; revision=18242
2002-09-27 05:34:05 +00:00
3cb66ed22a Treat spool as a local folder, so the ref checks work right.
2002-09-26  Not Zed  <NotZed@Ximian.com>

	* tests/folder/test2.c (main): Treat spool as a local folder, so
	the ref checks work right.

	* providers/local/camel-spool-store.c
	(get_folder): Use creat() instead of open() to create file.

svn path=/trunk/; revision=18231
2002-09-26 05:56:12 +00:00
a007d6d208 Implement FOLDER_CREATE flag. (scan_dir): Dont free name on exception, its
2002-09-26  Not Zed  <NotZed@Ximian.com>

        * providers/local/camel-spool-store.c (get_folder): Implement
        FOLDER_CREATE flag.
        (scan_dir): Dont free name on exception, its alloca'd.
        (scan_dir): If we start scanning from a file, just add that
        directly.
        (scan_dir): Allow empty files to also show up in folder list, as
        well as files starting with "From ".

        * providers/local/camel-spool-folder.c (camel_spool_folder_new):
        Check folder != NULL before writing to it.

        * providers/local/camel-local-store.c (create_folder): Handle a
        parent of NULL for creating top-level dirs.  Part of #31186.

svn path=/trunk/; revision=18230
2002-09-26 05:34:10 +00:00
e45b3e4828 Store the folder flags in the store summary. (get_one_folder_offline): Set
2002-09-26  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-store.c
        (parse_list_response_as_folder_info): Store the folder flags in
        the store summary.
        (get_one_folder_offline): Set the noselect url parameter if this
        is a noselect folder, from the stored summary flags.  #30877.

svn path=/trunk/; revision=18229
2002-09-26 02:39:16 +00:00
ebe98873ea Decode the INTERNALDATE if we've got one. (imap_update_summary): Instead
2002-09-23  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-folder.c (add_message_from_data):
	Decode the INTERNALDATE if we've got one.
	(imap_update_summary): Instead of requesting a list of specific
	headers, request HEADER.FIELDS.NOT (RECEIVED) to reduce bandwidth
	usage even more.
	(parse_fetch_response): Change slightly to allow HEADER.FIELDS or
	HEADER.FIELDS.NOT so that we can make changes in
	imap_update_summary and not need to keep changing this function to
	match. Also parse an INTERNALDATE response.

svn path=/trunk/; revision=18178
2002-09-23 20:03:17 +00:00
72c3088777 fix non-ANSI switch statement.
* camel-mime-parser.c (folder_scan_drop_step): fix non-ANSI switch
        statement.

        * camel-service.c (service_getv): Likewise.

        * providers/imap/camel-imap-store.c (imap_getv): Likewise.

        * providers/pop3/camel-pop3-folder.c (cmd_builduid): Likewise.

svn path=/trunk/; revision=18157
2002-09-22 23:49:06 +00:00
41693f9a19 Don't increment the response pointer when deciding what type of header
2002-09-19  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-folder.c (parse_fetch_response): Don't
	increment the response pointer when deciding what type of header
	response we got, this screws up the string that we strdup into the
	part_spec string later. Also, instead of using the entire blob of
	HEADER.FIELDS that we get in the response, shorten it to just
	HEADER.FIELDS to use as the part_spec key.

svn path=/trunk/; revision=18111
2002-09-19 06:17:16 +00:00
13c01546e5 Include MIME-VERSION and CONTENT-TYPE.
2002-09-18  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-folder.c (CAMEL_MESSAGE_INFO_HEADERS):
	Include MIME-VERSION and CONTENT-TYPE.

svn path=/trunk/; revision=18108
2002-09-19 02:37:26 +00:00
59fe32189b If we get an ALERT, pass it to the user. An rfc2060 MUST, and bug #22496.
2002-09-18  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-command.c
        (camel_imap_command_response): If we get an ALERT, pass it to the
        user.  An rfc2060 MUST, and bug #22496.

svn path=/trunk/; revision=18107
2002-09-19 01:41:38 +00:00
f4daf52f3a Handle when the response is from a HEADER.FIELDS (if so, we don't want to
2002-09-17  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-folder.c (parse_fetch_response):
	Handle when the response is from a HEADER.FIELDS (if so, we don't
	want to cache the result).
	(imap_update_summary): Request specific headers when building the
	CamelMessageInfo's rather than fetching the full headers.

svn path=/trunk/; revision=18102
2002-09-18 19:00:09 +00:00
6e2ff991ae If header_msgid_decode fails for the content-id field, just grab whatever
2002-09-13  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-mime-part.c (process_header): If header_msgid_decode fails
	for the content-id field, just grab whatever is between the <>'s
	(yes, this means that the content-id is invalid - but what can ya
	do?). Addresses bug #21027.

svn path=/trunk/; revision=18071
2002-09-15 03:29:41 +00:00
fbb7f7c202 Do proper error checking and return -1 on fail.
2002-09-10  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-folder-summary.c (perform_content_info_save): Do proper
	error checking and return -1 on fail.
	(camel_folder_summary_save): Check the return of
	perform_content_info_save and a few other output calls within the
	message_info_save loop. If any of them fail, save errno, close the
	file, and return -1. If we finish the loop without fail, fflush
	the stream and then fsync (fflush only flushes user-space buffers,
	you still need to fsync afterward to flush the data to disk). If
	either fail, treat it as an exception by saving errno, closing the
	stream, and returning -1. I suspect that this also fixes bug
	#30150 because the old code would fclose if fflush or fclose
	failed in the check after the loop (man fclose(3) states that any
	further calls using the stream (even another call to fclose) will
	have undefined behaviour no matter what the first fclose call
	returned).

	* providers/local/camel-local-summary.c
	(camel_local_summary_init): Don't malloc a private struct of 0
	size.

svn path=/trunk/; revision=18036
2002-09-10 21:10:49 +00:00
59431ce6f1 Clear the exception even if we failed to get the message (part) from the
2002-09-10  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-folder.c
	(camel_imap_folder_fetch_data): Clear the exception even if we
	failed to get the message (part) from the imap-message-cache if we
	are online and able to try fetching it from the IMAP server.

svn path=/trunk/; revision=18035
2002-09-10 20:26:23 +00:00
4a52b7b9a9 Fixes bug #4224
2002-09-09  Jeffrey Stedfast  <fejj@ximian.com>

	Fixes bug #4224

	* providers/imap/camel-imap-folder.c
	(camel_imap_folder_fetch_data): Pass ex into
	camel_imap_message_cache_get().

	* providers/imap/camel-imap-message-cache.c
	(camel_imap_message_cache_get): Now takes an exception and sets it
	on fail.
	(camel_imap_message_cache_copy): Updated to properly handle
	cache_get error conditions.

svn path=/trunk/; revision=18027
2002-09-09 20:28:35 +00:00
a52720a921 clear nonfatal stuff.
2002-09-04  Not Zed  <NotZed@Ximian.com>

	* tests/folder/test4.c (main): clear nonfatal stuff.

	* tests/folder/test6.c (main): check inbox and 'another folder'
	because some servers do different things w/ inbox.

	* providers/imap/camel-imap-message-cache.c
	(camel_imap_message_cache_get): Dont try to open the directory
	instead of an empty "" uid.

	* providers/imap/camel-imap-folder.c (imap_get_message): we dont
	want to g_return_if_fail, we need to set an exception and always
	handle the case.
	(get_message_simple): Set an exception if we get a construct
	failure.
	(imap_refresh_info): if we're refreshing inbox, force a reselect.
	this is required for at least cryus.  CHECK doesnt work either :(

	* tests/lib/folders.c (test_folder_basic): for non-local stores,
	the folder will have an extra ref for selection, take this into
	account when checking ref leaks.
	(test_folder_message_ops): Dont try to delete folder with messages
	in it, it works generally with imap.  also, change params so we
	can test different mailbox types.
	(test_folder_message_ops): disconnect remote services before
	finishing off.  doesn't need to stricly but makes ref count
	checking more accurate.
	(test_folder_message_ops): removed explicit remote sync, imap does
	it itself now ...

	* providers/imap/camel-imap-store.c:
	(camel_imap_store_finalize): call service_disconnect, so it isn't
	called later in the finalise chain, to properly cleanup on exit.

svn path=/trunk/; revision=17962
2002-09-04 08:13:38 +00:00
5e144756c9 Lots of changes, too numerous to list. Changed to use
2002-09-04  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store.c,
	providers/imap/camel-imap-folder.c: Lots of changes, too numerous
	to list.  Changed to use camel-imap-store-summary to cache list
	requests.  Changed to use a canonicalised url path with / instead
	of per-store directory separator.  Indirects folder name so
	invalid folder names can still be accessed.  Summary now stored in
	a new expandable format in .ev-store-summary.

2002-08-28  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store.c (construct): Load store
	summary if it exists.
	(can_work_offline): Just see if we have any folders to say whether
	we can work offline or not.  Should probably always just return
	true.

2002-08-27  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store-summary.[ch]: New files to
	handle offline definition of folders, etc.

	* camel-url.h: Define CamelURL to be struct _CamelURL rather than
	anonymous struct.

	* camel-store-summary.[ch]: a few api tweaks.  Also, the summary
	header is versioned separately at each level, so that version
	upgrades can be handled separately.  Renamed FolderInfo ->
	StoreInfo to avoid namespace with current FolderInfo code.  This
	should be reversed when the FolderInfo code is rationalised to
	this new base.

2002-08-23  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-command.c (camel_imap_command): domt
	encode folder name.

	* providers/imap/camel-imap-folder.c (do_copy): dont encode folder
	name.
	(do_append): dont encode folder name.

	* providers/imap/camel-imap-store.c (get_folder_status): don
	encode folder name in imap request.
	(get_folder_online): here too for creating folder.
	(rename_folder): Assume the incoming 'new name' is a utf8 path,
	whereas the 'old name' is as from get folder info (raw).
	(create_folder): Dont encode parent_name, assume its the raw
	thing.

2002-08-22  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store.c (get_folder_online): Select
	based on unconverted name.
	(imap_build_folder_info): New function to create a folderinfo
	properly based on raw name.
	(subscribe_folder): Use above helper.
	(imap_folder_effectively_unsubscribed): Same here.
	(imap_forget_folder): Same here.
	(get_one_folder_offline): "

2002-08-21  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store.c
	(parse_list_response_as_folder_info): Setup path properly, as
	decoded path with / separator.  Setup full_name as non-decoded raw
	name.  Keep url as decoded path but with server separator
	... (ick).
	(create_folder): Dont call build_path anymore, get_folders() does
	it for us.
	(subscribe_folder): Build the path ourself.
	(imap_folder_effectively_unsubscribed): Same here.
	(get_subscribed_folders): list using %S not %F, we're using the
	raw server provided name directly.
	(subscribe_folder): As above, for SUBSCRIBE.
	(unsubscribe_folder): Same here.
	(delete_folder): Same.
	(rename_folder_info): Same here for source name.
	(rename_folder): And here?
	(get_folders_online): Amd here.

	* providers/imap/camel-imap-utils.c:
	(imap_parse_list_response): Dont decode the mailbox.

	* camel-utf8.[ch]: some new utf8 & utf7 utilities.

	* providers/imap/camel-imap-utils.c (imap_mailbox_encode):
	(imap_mailbox_decode): use camel_utf7/8* functions instead.
	: Add config.h and alloca.h headers.

svn path=/trunk/; revision=17943
2002-09-03 14:55:03 +00:00
6b132fe48a Change the case sensitive search of subject to expect case insensitive
2002-08-29  Not Zed  <NotZed@Ximian.com>

        * tests/folder/test3.c: Change the case sensitive search of
        subject to expect case insensitive results, as the behaviour has
        changed.
        (main): Made the search content before sync nonfatal.  its
        something that needs to be fixed but not practical concern in
        evolution.

        * camel-block-file.c (block_file_validate_root): Only spit out the
        invalid root warnings if the file isn't empty.

        * camel-text-index.c (text_index_compress_nosync): Swap the path
        as well when we compress.

        * camel-mime-parser.c (folder_scan_content): Treat the end of file
        as a boundary if we're scanning From lines, and drop the last \n.
        (folder_scan_init_with_fd): Dont pre-read from the fd, and init eof.
        (folder_scan_init_with_stream): Similar.
        (folder_read): Handle eof, and set eof on 0 read.
        (folder_seek): Dont pre-read after a seek, and reset eof flag.
        (camel_mime_parser_init_with_fd): Fix doco, no pre-read occurs
        anymore.
        (camel_mime_parser_init_with_stream): Same.

        * providers/local/camel-mbox-summary.c
        (camel_mbox_summary_sync_mbox): Add a \n to end of content of each
        message, not at start.

        * providers/local/camel-mbox-folder.c (mbox_append_message):
        Instead of appending "\nFrom " to a mailbox, start with "From ",
        and append a \n after the message always.  For better mutt/elm
        compatability.  Also, unlock after we've stat'd.
        (mbox_append_message): Set the message's from_pos exactly as the
        mbox size.

svn path=/trunk/; revision=17921
2002-08-29 12:04:34 +00:00
76d4c1a98e fixes a crash on systems that dont have utf7 in iconv.
2002-08-28  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-utils.c (imap_mailbox_encode): Chagned
        to use camel_utf8_utf7 code.
        (imap_mailbox_decode): As above, using camel_utf8_utf7.  'UTF-7'
        isn't a widely support iconv() codeset, and besides the new code
        is simpler.

        * camel-utf8.[ch]: robust utilities for working with utf8 and utf7.

svn path=/trunk/; revision=17886
2002-08-28 07:45:17 +00:00
245ac4505d oops, my deadlock fix wasn't quite right. this should work now
svn path=/trunk/; revision=17868
2002-08-26 21:01:40 +00:00
a325b676f3 If the response is NULL, just return. (now works the same way as
2002-08-26  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-command.c
	(camel_imap_response_free_without_processing): If the response is
	NULL, just return. (now works the same way as imap_response_free
	which allowed a NULL response argument). Fixes bug #25491.

svn path=/trunk/; revision=17863
2002-08-26 17:44:28 +00:00
435ab87f0b removed a no-longer needed #define
svn path=/trunk/; revision=17862
2002-08-26 16:47:24 +00:00
4db7ee0b50 Lock the CamelService->priv->connect_lock instead of using our own
2002-08-26  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-store.c:

	* providers/imap/camel-imap-folder.c:

	* providers/imap/camel-imap-command.c: Lock the
	CamelService->priv->connect_lock instead of using our own
	command_lock. This fixes bug #28177.

svn path=/trunk/; revision=17861
2002-08-26 16:45:50 +00:00
f5630296fb If we fail to send the EHLO/HELO command successfully, set
2002-08-23  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/smtp/camel-smtp-transport.c (smtp_helo): If we fail to
	send the EHLO/HELO command successfully, set transport->connected
	to FALSE when we close the tcp connection. Also updated to work on
	an IPv6 network.
	(smtp_connect): transport->authtypes can be NULL, so NULL-protect
	the call to g_hash_table_size() - this should fix a warning that
	was reported on the evolution@ximian.com mailing list.
	(smtp_set_exception): If the status message is multi-line, add a
	\n between lines.
	(connect_to_server): If we are going to ignore the EHLO/HELO error
	as if it were non-fatal, then we should clear the exception.

svn path=/trunk/; revision=17852
2002-08-23 20:56:35 +00:00
808e179d48 If current_folder is not NULL and the summary for that folder is dirty,
2002-08-22  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-store.c (imap_noop): If current_folder
	is not NULL and the summary for that folder is dirty, sync the
	flags rather than sending a NOOP.

svn path=/trunk/; revision=17842
2002-08-22 20:23:16 +00:00
d05a75a2b8 Workaround for Courier imap's brokeness when LSUBing the INBOX folder when
2002-08-22  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-utils.c (imap_parse_list_response):
	Workaround for Courier imap's brokeness when LSUBing the INBOX
	folder when it isn't subscribed to. Fixes bug #28929.

svn path=/trunk/; revision=17841
2002-08-22 19:28:22 +00:00
164f4653dd Override the default noop implementation.
2002-08-20  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-store.c (imap_noop): Override the
	default noop implementation.

	* camel-store.c (camel_store_noop): New virtual method to ping a
	store.

	* camel-session.c (get_service): Register a timeout that calls
	camel_store_noop() every 10 minutes.

svn path=/trunk/; revision=17822
2002-08-20 21:44:29 +00:00
2be7ab21f6 Don't let the minimum recursive depth be negative. (get_folders): Pass
2002-08-20  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-store.c (get_folders): Don't let the
	minimum recursive depth be negative.
	(get_folders): Pass flags & CAMEL_FOLDER_INFO_SUBSCRIBED as the
	`lsub' argument to get_folders_online() otherwise we'll end up
	doing a LIST when we really wanted to do an LSUB.

svn path=/trunk/; revision=17819
2002-08-20 19:23:15 +00:00
51921b3993 Set CAMEL_URL_NEED_PATH for the vFolder provider.
2002-08-20  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-session.c: Set CAMEL_URL_NEED_PATH for the vFolder
	provider.

svn path=/trunk/; revision=17817
2002-08-20 17:44:28 +00:00
bec1f90085 Changed the STOREINFO_VERSION - should fix bug #28571, but if it doesn't -
2002-08-19  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/imap/camel-imap-store.c: Changed the STOREINFO_VERSION
	- should fix bug #28571, but if it doesn't - oh well, I don't
	care. I'm considering it fixed no matter what.

svn path=/trunk/; revision=17809
2002-08-19 21:56:51 +00:00
955f3a55fd Ugh, actually do what i just said i did, last patch was
wrong.

svn path=/trunk/; revision=17784
2002-08-16 08:43:39 +00:00
2ce20b6b3b Fix the logic check for working out if we add inbox or not, we do it if we
2002-08-16  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-store.c (get_folders): Fix the logic
        check for working out if we add inbox or not, we do it if we
        listed the namespace.

svn path=/trunk/; revision=17783
2002-08-16 08:40:19 +00:00
7dc4b13d47 added a flags field, defined some flags, currently only used by imap. This
2002-08-15  Not Zed  <NotZed@Ximian.com>

	* camel-store.h (CamelFolderInfo): added a flags field, defined
	some flags, currently only used by imap.  This and below is first
	step to getting incremental folder tree loading.

	* providers/imap/camel-imap-store.c (get_subscribed_folders): If
	the subscribed list is empty, always add inbox.
	(imap_connect_offline): If the 'storeinfo' namespace isn't the
	same as our own (if its set), then ignore it, assume we changed
	settings.  Otherwise you can't change the namespace ...
	(get_folders): allow the env variable CAMEL_IMAP_MAX_DEPTH to
	override the default maximum recursion depth if 10 levels.
	(camel_imap_store_readline): Dont depend the log debug on d(x)
	being defined.
	(get_folder_info_online): changed to use new functions/names.

2002-08-14  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store.c (get_subscribed_folders):
	Removed the by_hand sillyness.  Return an array instead.
	(get_folders): New method to get folders recursively without
	having to use '*'.  Uses '%', and stops if it gets too deep
	(current max of 10).
	(get_folder_counts): New method to fill out unread counts on
	folderinfo tree.
	(get_subscribed_folders): Fix some failure logic.

	* providers/imap/camel-imap-utils.[ch]: Changed IMAP_LIST_FLAGS to
	use the new CamelFolderInfoFlags directly.

svn path=/trunk/; revision=17777
2002-08-15 06:17:09 +00:00
f75520757a New function, generate a UID that has better chances of being unique.
2002-08-02  Peter Williams  <peterw@ximian.com>

	* providers/imap/camel-imap-folder.c (get_temp_uid): New function,
	generate a UID that has better chances of being unique.
	(imap_append_offline): Use it here.
	(imap_transfer_offline): And here.

svn path=/trunk/; revision=17757
2002-08-09 22:01:44 +00:00
56ddb4490b Tweak how we build the tree based on whether a full tree or a subtree is
2002-08-09  Peter Williams  <peterw@ximian.com>

	* providers/imap/camel-imap-store.c
	(get_folder_info_online): Tweak how we build the tree based on whether
	a full tree or a subtree is being requested. Fixes subscribe dialog
	on UW servers.
	(get_one_folder_offline): Don't add folders that we're not subscribed
	to; fixes UW folders that weren't being marked as NoSelect because
	the storeinfo doesn't record that information.

svn path=/trunk/; revision=17755
2002-08-09 19:37:31 +00:00