Jeffrey Stedfast [Fri, 4 Aug 2000 22:41:05 +0000 (22:41 +0000)]
If we fail to get a dir_sep, then supply the default of "/". (get_folder):
2000-08-04 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c (imap_connect): If we fail to
get a dir_sep, then supply the default of "/".
(get_folder): Undo changes by Peter
Peter Williams [Fri, 4 Aug 2000 21:29:43 +0000 (21:29 +0000)]
Coredump fix when IMAP get_folder with NULL dir_sep
Dan Winship [Fri, 4 Aug 2000 18:40:38 +0000 (18:40 +0000)]
Indexes into the flags array are message_number minus 1, not just
* providers/pop3/camel-pop3-folder.c (pop3_set_message_flags):
(pop3_sync): Indexes into the flags array are message_number minus
1, not just message_number.
Dan Winship [Fri, 4 Aug 2000 04:36:19 +0000 (04:36 +0000)]
add a debugging macro for doing protocol tracing.
* providers/pop3/camel-pop3-store.c: add a debugging macro for
doing protocol tracing.
Jeffrey Stedfast [Thu, 3 Aug 2000 23:07:18 +0000 (23:07 +0000)]
Only call imap_get_summary_internal if the folder can hold messages
2000-08-03 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_new): Only
call imap_get_summary_internal if the folder can hold messages
* providers/nntp/camel-nntp-provider.c (camel_provider_module_init):
Initialize the service_cache for the news/nntp providers
Jeffrey Stedfast [Thu, 3 Aug 2000 20:40:19 +0000 (20:40 +0000)]
Initialize the service_cache for the news/nntp providers
2000-08-03 Jeffrey Stedfast <fejj@helixcode.com>
* providers/nntp/camel-nntp-provider.c (camel_provider_module_init):
Initialize the service_cache for the news/nntp providers
Peter Williams [Thu, 3 Aug 2000 15:45:22 +0000 (15:45 +0000)]
srcdir != builddir fix
Dan Winship [Thu, 3 Aug 2000 00:47:50 +0000 (00:47 +0000)]
Kill this. It doesn't have any code to do anything the new mh provider
* providers/MH: Kill this. It doesn't have any code to do anything
the new mh provider doesn't do better.
* providers/Makefile.am: Remove reference to MH subdir, and
promote nntp to fully-supported status, since it does compile and
all.
Dan Winship [Thu, 3 Aug 2000 00:35:45 +0000 (00:35 +0000)]
Trim trailing space from the subject. I've now seen replies from two
* camel-mime-message.c (camel_mime_message_set_subject): Trim
trailing space from the subject. I've now seen replies from two
different people that tricked the threading code by (a) not having
References/In-Reply-To, and (b) adding an extra space to the end
of the subject line so the subject-based threading fails too. Who
writes these broken mailers anyway?
Jeffrey Stedfast [Wed, 2 Aug 2000 00:29:53 +0000 (00:29 +0000)]
When forced to use the IP, place it in square brackets.
2000-08-01 Jeffrey Stedfast <fejj@helixcode.com>
* providers/smtp/camel-smtp-transport.c (smtp_helo): When forced
to use the IP, place it in square brackets.
Jeffrey Stedfast [Tue, 1 Aug 2000 23:05:34 +0000 (23:05 +0000)]
New and improved sexp parser. An honest try at using e-sexp is wrapped in
2000-08-01 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-utils.c (imap_translate_sexp): New and
improved sexp parser. An honest try at using e-sexp is wrapped in
a #ifdef at the bottom of the file but is currently not used
* providers/imap/camel-imap-folder.c (imap_search_by_expression):
We want to do a UID SEARCH so we get UIDs back instead of sequence
numbers
Peter Williams [Tue, 1 Aug 2000 14:30:59 +0000 (14:30 +0000)]
cvsignore file
Not Zed [Tue, 1 Aug 2000 12:46:05 +0000 (12:46 +0000)]
Initial cut at mh provider. Well, it already does everything
mbox does.
2000-08-01 Not Zed <NotZed@HelixCode.com>
* providers/mh: New mh provider implementation.
* providers/Makefile.am (SUBDIRS): Added mh provider.
Jeffrey Stedfast [Tue, 1 Aug 2000 00:31:28 +0000 (00:31 +0000)]
Some IMAP servers don't wrap the UID in ()'s so don't depend on that
2000-07-31 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_message_info_internal):
Some IMAP servers don't wrap the UID in ()'s so don't depend on that
(imap_get_summary_internal): Same
Jeffrey Stedfast [Mon, 31 Jul 2000 22:15:31 +0000 (22:15 +0000)]
Oops, forgot to free node->function - not good.
2000-07-31 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-utils.c (free_sexp_node): Oops, forgot to
free node->function - not good.
Peter Williams [Mon, 31 Jul 2000 20:46:47 +0000 (20:46 +0000)]
Buffer overrun fix in g_strfreev -- two more that I forgot
Peter Williams [Mon, 31 Jul 2000 20:33:27 +0000 (20:33 +0000)]
Buffer overrun fix in g_strfreev
Jeffrey Stedfast [Mon, 31 Jul 2000 20:00:20 +0000 (20:00 +0000)]
New convenience function to translate a Camel sexp into the equivalent
2000-07-31 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-utils.c (imap_translate_sexp): New
convenience function to translate a Camel sexp into the equivalent
IMAP sexp.
* providers/imap/camel-imap-store.c: More places now use
imap_next_word
* providers/imap/camel-imap-folder.c (imap_search_by_expression):
Implemented initial version (this may or may not work quite right)
Peter Williams [Mon, 31 Jul 2000 19:57:49 +0000 (19:57 +0000)]
A few string overrun checks for the mime parser
Jeffrey Stedfast [Sat, 29 Jul 2000 01:49:06 +0000 (01:49 +0000)]
Make sure the third word/token (whatever) is "EXPUNGE" and not something
2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_expunge): Make sure
the third word/token (whatever) is "EXPUNGE" and not something
else like "EXISTS" or "RECENT". When removing the message from
the summary also make sure to free that data to avoid leakage.
Also make sure to subtract 1 from the 'id' since IMAP starts
at 1 and our summary starts at 0 :-)
Jeffrey Stedfast [Sat, 29 Jul 2000 00:18:09 +0000 (00:18 +0000)]
fixed a few logic errors
Jeffrey Stedfast [Fri, 28 Jul 2000 23:13:46 +0000 (23:13 +0000)]
Cleaned up a bit, now uses imap_next_word() (camel_imap_command_extended):
2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c (camel_imap_status): Cleaned
up a bit, now uses imap_next_word()
(camel_imap_command_extended): Now uses imap_next_word(). When
checking for RECENT, allow the first digit of the recent-count
be between 0 and 9 inclusive instead of exclusive.
* providers/imap/camel-imap-folder.c (imap_expunge): Optimized.
No longer will it need to reload the summary as it now instead
removes the appropriate message summaries from the cache.
(camel_imap_folder_changed): If recent == 0 then return. If
recent < 0 then just emit the folder_changed signal, don't reload
summaries.
Jeffrey Stedfast [Fri, 28 Jul 2000 17:41:15 +0000 (17:41 +0000)]
Get message count when STATUS is not available. (imap_init):
2000-07-28 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c
(imap_get_message_count_internal): Get message count when STATUS
is not available.
(imap_init): folder->has_search_capability is required for IMAP so
should always be set to TRUE (is currently being set to FALSE as
I've not yet implemented SEARCH support).
(camel_imap_folder_changed): Seem to have fixed my optimization
hack
2000-07-28 Jon K Hellan <hellan@acm.org>
* providers/imap/camel-imap-store.h (CamelImapServerLevel): New
enum.
(CamelImapStore): Added server_level and has_status_capability
members.
* providers/imap/camel-imap-store.c (imap_connect): Detect
IMAP4REV1, IMAP4 and STATUS in capability response.
* providers/imap/camel-imap-folder.c
(imap_get_message_count_internal): Use STATUS only if server
supports it. TODO: Get message count when STATUS not supported.
(imap_get_message, imap_get_summary_internal,
imap_get_message_info_internal): Handle IMAP4 as well.
(imap_protocol_get_summary_specifier): New function: Make a data
item specifier for the header lines we need, appropriate to the
server level.
Jeffrey Stedfast [Fri, 28 Jul 2000 02:02:51 +0000 (02:02 +0000)]
Fixed my routine to only fetch new headers, my IDs were off by 1 on the
2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
Fixed my routine to only fetch new headers, my IDs were off by 1
on the high end, so when it would fetch the last newly arrived
message it would fail and end up fetching all of the summaries
because of the corruption.
Jeffrey Stedfast [Thu, 27 Jul 2000 23:49:47 +0000 (23:49 +0000)]
If the path doesn't begin with a / and there is a host, prepend a / to the
2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
* camel-url.c (camel_url_to_string): If the path doesn't begin
with a / and there is a host, prepend a / to the path.
Jeffrey Stedfast [Thu, 27 Jul 2000 23:11:11 +0000 (23:11 +0000)]
Added camel-imap-utils.[c,h]
2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/Makefile.am: Added camel-imap-utils.[c,h]
* providers/imap/camel-imap-utils.[c,h]: Utilities for parsing
server responses for use in both camel-imap-store.c and
camel-imap-folder.c
* providers/imap/camel-imap-folder.c (imap_get_summary_internal):
Free all the pointers in the headers array.
(imap_get_subfolder_names_internal): Updated to use
imap_parse_list_response
(imap_parse_subfolder_list): Removed in favor of
imap_parse_list_response
* providers/imap/camel-imap-store.c (camel_imap_command_extended):
Free all the pointers in the data array.
(imap_connect): Updated to use imap_parse_list_response and fixed
a leak
(folder_is_selectable): Updated.
Jeffrey Stedfast [Thu, 27 Jul 2000 18:32:23 +0000 (18:32 +0000)]
Now uses a hash table for looking up message info rather than a linear
2000-07-27 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_message_info): Now uses
a hash table for looking up message info rather than a linear search :)
Peter Williams [Thu, 27 Jul 2000 17:01:05 +0000 (17:01 +0000)]
Fix Makefile.am booboo.
Matthew Loper [Wed, 26 Jul 2000 21:02:08 +0000 (21:02 +0000)]
Make the mime parser a bit less reckless. More reckful?
Dan Winship [Wed, 26 Jul 2000 18:32:10 +0000 (18:32 +0000)]
routine to call an external movemail program. (camel_movemail): Nuke
* camel-movemail.c (movemail_external): routine to call an
external movemail program.
(camel_movemail): Nuke return value, use movemail_external when
available and useful, and don't delete "dest" on errors, since
it might have started non-empty.
Jeffrey Stedfast [Wed, 26 Jul 2000 15:13:50 +0000 (15:13 +0000)]
Should now always prepend a '/' before the path if it doesn't already
2000-07-26 Jeffrey Stedfast <fejj@helixcode.com>
* camel-url.c (camel_url_to_string): Should now always prepend a '/'
before the path if it doesn't already exist.
* providers/imap/camel-imap-folder.c: Fixed a few compiler warnings
Jeffrey Stedfast [Wed, 26 Jul 2000 15:08:56 +0000 (15:08 +0000)]
Fixed a few compiler warnings
2000-07-26 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c: Fixed a few compiler warnings
Jeffrey Stedfast [Tue, 25 Jul 2000 19:35:08 +0000 (19:35 +0000)]
Fixed the real problem that Peter was running into.
2000-07-25 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_summary_free): Fixed the
real problem that Peter was running into.
Dan Winship [Tue, 25 Jul 2000 17:59:07 +0000 (17:59 +0000)]
Don't add a Mime-Version header to a message that already has one.
* camel-mime-message.c (write_to_stream): Don't add a Mime-Version
header to a message that already has one.
* camel-internet-address.c (internet_encode): Don't put <>s around
addresses with no name part.
Peter Williams [Tue, 25 Jul 2000 16:02:20 +0000 (16:02 +0000)]
IMAP expunge crash prevention... still not right...
Jeffrey Stedfast [Tue, 25 Jul 2000 05:32:55 +0000 (05:32 +0000)]
Optimized to try and get the new message headers without reloading the
2000-07-25 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
Optimized to try and get the new message headers without reloading
the entire summary from scratch.
(imap_get_summary_internal): Will now sync() before attempting to reload
the summary so that flags are set in the reloaded summary as well.
Jeffrey Stedfast [Tue, 25 Jul 2000 03:45:55 +0000 (03:45 +0000)]
Updated to give special attention to the root folder.
2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c (get_folder): Updated to give special
attention to the root folder.
* providers/imap/camel-imap-folder.c (imap_get_subfolder_names_internal):
Updated to handle the root folder
(imap_get_message_count_internal): return 0 if folder can't hold messages
(camel_imap_folder_new): Change so that root folder gets special attention
and always gets can_hold_messages set to FALSE
Dan Winship [Tue, 25 Jul 2000 02:42:11 +0000 (02:42 +0000)]
Remove exceptions from a number of methods that work on what ought to be
* camel-folder.c: Remove exceptions from a number of methods that
work on what ought to be static data: get_parent_folder,
get_parent_store, get_message_count, get_unread_message_count,
get_permanent_flags, get_message_flags, set_message_flags,
get_message_user_flag, set_message_user_flag, get_uids,
get_summary, get_subfolder_names. Turn camel_folder_delete_message
into a macro. (Mostly a pull-up from the camel-async branch.)
* providers/{imap,mbox,nntp,pop3,vee}: Update for CamelFolder
changes
Jeffrey Stedfast [Tue, 25 Jul 2000 02:02:14 +0000 (02:02 +0000)]
Updated to port easily to the new Camel API (imap_init): Don't SELECT
2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_message_info): Updated
to port easily to the new Camel API
(imap_init): Don't SELECT INBOX, we don't need to do that
Jeffrey Stedfast [Mon, 24 Jul 2000 23:10:21 +0000 (23:10 +0000)]
Initialize the summary and subfolder listing. (imap_summary_free): Now
2000-07-24 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_new):
Initialize the summary and subfolder listing.
(imap_summary_free): Now takes a GPtrArray arg rather than a
CamelImapFolder as it increases it's usefullness for free()'ing
temporary summaries.
(imap_get_message_count_internal): A new convenience function for
getting the actual message count on a server to be used by
imap_get_summary_internal)
(imap_get_message_count): Since the Camel API is on the move again,
the future version of this function will not be able to make a
call to the store, it must only access previously fetched data (thus
the creation of the _internal function)
(imap_get_subfolder_names_internal): Again, because the future version
of imap_get_subfolder_names will not take an exception, we must rename
this function which will be called by camel_imap_folder_new()
(imap_get_subfolder_names): We now return the previously collected
subfolder listing that the _internal function fetched previously
(imap_get_summary_internal): Again, same idea as the previous _internal
functions...
(imap_get_summary): Again... now returns a previously aquired summary
* providers/imap/camel-imap-store.c (imap_noop): This will hopefully
prevent the imap store from disconnecting.
(imap_connect): Modified to add a gtk timeout event that will call
imap_noop() every 10 minutes (we may want to change this time value)
(imap_disconnect): Modified to remove the NOOP timeout event from the
store.
(camel_imap_command_extended): Commented out the code that would try
and detect if the store was disconnected and then reconnect if it was
needed.
Dan Winship [Mon, 24 Jul 2000 15:16:09 +0000 (15:16 +0000)]
Remove camel_folder_get_message_uid, which was not used, and not
* camel-folder.[ch]: Remove camel_folder_get_message_uid, which
was not used, and not implemented by any provider.
* providers/nntp/camel-nntp-folder.c: Remove get_message_uid
non-implementation.
Dan Winship [Mon, 24 Jul 2000 15:13:07 +0000 (15:13 +0000)]
Bye bye bye.
* camel-folder-pt-proxy.[ch], camel-arg-collector.c,
camel-marshal-utils.[ch]: Bye bye bye.
* Makefile.am: remove reference to camel-arg-collector.c
Jeffrey Stedfast [Mon, 24 Jul 2000 01:37:43 +0000 (01:37 +0000)]
Made it a little more forgiving. Also set current_folder to NULL as there
2000-07-23 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c (imap_disconnect): Made it a
little more forgiving. Also set current_folder to NULL as there is
no selected folder after a disconnect.
(stream_is_alive): Detects whether or not a socket is "alive"
(camel_imap_command_extended): Use stream_is_alive() to aid in the
detection of a disconnected state.
Jeffrey Stedfast [Sat, 22 Jul 2000 19:12:55 +0000 (19:12 +0000)]
Clear CamelExceptions when appropriate (eg when folder is marked as
2000-07-22 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c (get_folder): Clear CamelExceptions when
appropriate (eg when folder is marked as \NoSelect). Still needs some
cleanup and perhaps Dan will have a better way of doing this as this seems
like a messy way of handling this.
* providers/imap/camel-imap-folder.c (imap_get_uids): Took out some debug
statements as they are no longer needed.
Jeffrey Stedfast [Sat, 22 Jul 2000 01:38:41 +0000 (01:38 +0000)]
Updated to not strip out subfolders that are marked as \NoSelect because
2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_subfolder_names): Updated to
not strip out subfolders that are marked as \NoSelect because this will be
correctly handled in store->get_folder from now on.
* providers/imap/camel-imap-store.c (folder_is_selectable): New convenience
function for use in get_folder().
(parse_list_response): Now takes a char **flags argument which is needed by
folder_is_selectable().
(imap_connect): Updated to reflect changes to parse_list_response().
Jeffrey Stedfast [Fri, 21 Jul 2000 19:48:43 +0000 (19:48 +0000)]
Updated with some of the same fixes I've made to camel-imap-folder.c like
2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-stream.c (stream_read): Updated with some of the
same fixes I've made to camel-imap-folder.c like recalculating message part
lengths.
Jeffrey Stedfast [Fri, 21 Jul 2000 19:30:20 +0000 (19:30 +0000)]
Rewrote the code to check for "* %d RECENT". Still needs to be modified,
2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c (camel_imap_command_extended): Rewrote
the code to check for "* %d RECENT". Still needs to be modified, but should
no longer cause an infinite loop by detecting mis-detecting RECENT messages.
Jeffrey Stedfast [Thu, 20 Jul 2000 04:29:54 +0000 (04:29 +0000)]
Oops. Fix UID parser to allow 0 and 9 to be in the range of valid UID
2000-07-20 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_summary):
(imap_get_message_info): Oops. Fix UID parser to allow 0 and 9 to be in
the range of valid UID chars.
Jeffrey Stedfast [Wed, 19 Jul 2000 21:43:44 +0000 (21:43 +0000)]
General cleanup working towards getting Actions->Expunge working
2000-07-19 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c: General cleanup working towards
getting Actions->Expunge working correctly.
* providers/imap/camel-imap-store.c (cammel_imap_command_extended): Added
code to look for "* %d RECENT" and to emit the folder_changed signal if
there are any recent messages. Note: this is a hack and needs to be rewritten
badly.
Jeffrey Stedfast [Wed, 19 Jul 2000 18:15:37 +0000 (18:15 +0000)]
If the folder's message count is not the same as the number of summaries,
2000-07-19 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_summary): If the folder's
message count is not the same as the number of summaries, free the old
summary and create a new summary.
Jeffrey Stedfast [Tue, 18 Jul 2000 20:56:46 +0000 (20:56 +0000)]
Added in imap_[g,s]et_message_user_flag() methods (imap_get_message_info):
2000-07-18 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_class_init): Added
in imap_[g,s]et_message_user_flag() methods
(imap_get_message_info): Rewrote to use the more efficient way of
downloading summary information and also added a UID comparison so that
if the UID requested doesn't match the UID received, it returns NULL.
FIXME: When the mailer gets NULL when it requested message info, it
seems that it displays a row for that message and when you try and select
the blank row, it segfaults.
* providers/imap/camel-imap-store.c (get_folder): Oops, this should not be
checking against "/", it should be checking against dir_sep.
* providers/imap/camel-imap-folder.c (imap_parse_subfolder_line): Updated
to trim out the leading namespace.
(imap_get_subfolder_names): Let the subfolder parser trim the namespace
off the folder name.
Jeffrey Stedfast [Tue, 18 Jul 2000 19:36:12 +0000 (19:36 +0000)]
Added in imap_[g,s]et_message_user_flag() methods
2000-07-18 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_class_init): Added
in imap_[g,s]et_message_user_flag() methods
* providers/imap/camel-imap-store.c (get_folder): Oops, this should not be
checking against "/", it should be checking against dir_sep.
* providers/imap/camel-imap-folder.c (imap_parse_subfolder_line): Updated
to trim out the leading namespace.
(imap_get_subfolder_names): Let the subfolder parser trim the namespace
off the folder name.
Jeffrey Stedfast [Tue, 18 Jul 2000 00:02:59 +0000 (00:02 +0000)]
Send a "LOGOUT" command.
2000-07-17 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c (imap_disconnect): Send a "LOGOUT"
command.
* providers/imap/camel-imap-folder.c (imap_get_message): Hacks to get
IMAP code to work with CommunigatePro and MS Exchange (and any other
servers that send back a UID at the end of each FETCH inside of the main
body of the message part).
(imap_sync): Un-#if 0 the code that sets the flags on the IMAP server
for messages that have changed. Oops, don't mask with DELETED to find out
if the message has been answered ;-)
(imap_expunge): sync before expunging.
Jeffrey Stedfast [Mon, 17 Jul 2000 22:19:19 +0000 (22:19 +0000)]
Hacks to get IMAP code to work with CommunigatePro and MS Exchange (and
2000-07-17 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_message): Hacks to get
IMAP code to work with CommunigatePro and MS Exchange (and any other
servers that send back a UID at the end of each FETCH inside of the main
body of the message part).
(imap_sync): Un-#if 0 the code that sets the flags on the IMAP server
for messages that have changed. Oops, don't mask with DELETED to find out
if the message has been answered ;-)
Jeffrey Stedfast [Mon, 17 Jul 2000 21:55:04 +0000 (21:55 +0000)]
oops, s/status/s in imap_sync()
Jeffrey Stedfast [Mon, 17 Jul 2000 21:50:11 +0000 (21:50 +0000)]
Hacks to get IMAP code to work with CommunigatePro and MS Exchange (and
2000-07-17 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_message): Hacks to get
IMAP code to work with CommunigatePro and MS Exchange (and any other
servers that send back a UID at the end of each FETCH inside of the main
body of the message part).
(imap_sync): Un-#if 0 the code that sets the flags on the IMAP server
for messages that have changed
Jeffrey Stedfast [Mon, 17 Jul 2000 21:42:49 +0000 (21:42 +0000)]
Hacks to get IMAP code to work with CommunigatePro and MS Exchange (and
2000-07-17 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_message): Hacks to get
IMAP code to work with CommunigatePro and MS Exchange (and any other
servers that send back a UID at the end of each FETCH inside of the main
body of the message part).
Jeffrey Stedfast [Mon, 17 Jul 2000 03:27:30 +0000 (03:27 +0000)]
minor fixes that came up when building with gcc -ansi -pedantic
Jeffrey Stedfast [Mon, 17 Jul 2000 02:41:50 +0000 (02:41 +0000)]
All SELECT calls now pass a NULL folder argument to
2000-07-16 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c: All SELECT calls now pass
a NULL folder argument to camel_imap_command_extended() since it's
not needed. Also s/camel_imap_command/camel_imap_command_extended as
I will probably be doing away with camel_imap_command() or at least
only using it for LOGIN and similar commands where the server won't
notify us of any recent messages.
Jeffrey Stedfast [Mon, 17 Jul 2000 02:16:02 +0000 (02:16 +0000)]
All SELECT calls now pass a NULL folder argument to
2000-07-16 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c: All SELECT calls now pass
a NULL folder argument to camel_imap_command_extended() since it's
not needed.
(imap_connect): Moved service_class->connect() to the point right
after a connection is established with the server rather than
waiting until the end of the function.
(camel_imap_command): Updated the documentation comment
(camel_imap_command_extended): Before sending a command, first
check to make sure we are connected; if we aren't, then reconnect.
Don't strncmp() command with "SELECT" as it's redundant.
* providers/imap/camel-imap-folder.c: All SELECT calls now pass
a NULL folder argument to camel_imap_command_extended() since it's
not needed.
Jeffrey Stedfast [Sat, 15 Jul 2000 04:30:16 +0000 (04:30 +0000)]
One last fix to get rid of hard-coded "/" directory separators
2000-07-15 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_new):
One last fix to get rid of hard-coded "/" directory separators
Jeffrey Stedfast [Fri, 14 Jul 2000 23:38:09 +0000 (23:38 +0000)]
Oops, minor fix to make any dir_sep work.
Jeffrey Stedfast [Fri, 14 Jul 2000 23:32:04 +0000 (23:32 +0000)]
New convenience function to unquote a string if it's encapsulated by "'s
2000-07-14 Jeffrey Stedfast <fejj@helixcode.com>
* string-utils.c (string_unquote): New convenience function
to unquote a string if it's encapsulated by "'s
* providers/imap/camel-imap-folder.c:
* providers/imap/camel-imap-store.c: Made the necessary changes
to stop using hard coded directory separators.
Dan Winship [Fri, 14 Jul 2000 00:41:01 +0000 (00:41 +0000)]
If the summary is for a smaller mbox, and rebuilding from the last-known
* providers/mbox/camel-mbox-summary.c (camel_mbox_summary_load):
If the summary is for a smaller mbox, and rebuilding from the
last-known end position fails, try rebuilding from the beginning.
Deals with the case where the user edits the mbox and makes it
bigger, without adding new messages.
Jeffrey Stedfast [Thu, 13 Jul 2000 22:17:19 +0000 (22:17 +0000)]
If a SELECT fails, set imap_store->current_folder to NULL so a SELECT is
2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c:
* providers/imap/camel-imap-store.c: If a SELECT fails, set
imap_store->current_folder to NULL so a SELECT is forced before
any message/folder operations are requested. Also, because some
users don't use a namespace, make sure that if the url->path is
"/" we don't use it when creating the folder_path.
(camel_imap_command[_extended]): Since we allow the passing of
a NULL folder which we can use to bypass a forced SELECT, no need
to check for the individual commands that don't require a folder
to be selected.
Peter Williams [Thu, 13 Jul 2000 21:40:04 +0000 (21:40 +0000)]
file make-temp.sh was initially added on branch camel-async.
Peter Williams [Thu, 13 Jul 2000 21:40:04 +0000 (21:40 +0000)]
file temp-test.c was initially added on branch camel-async.
Jeffrey Stedfast [Thu, 13 Jul 2000 20:24:09 +0000 (20:24 +0000)]
Updated to use CAMEL_IMAP_OK, CAMEL_IMAP_NO, CAMEL_IMAP_BAD, and
2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c:
* providers/imap/camel-imap-store.c: Updated to use CAMEL_IMAP_OK,
CAMEL_IMAP_NO, CAMEL_IMAP_BAD, and CAMEL_IMAP_FAIL rather than the
ones copied from the POP3 provider.
Jeffrey Stedfast [Thu, 13 Jul 2000 20:08:29 +0000 (20:08 +0000)]
Oops. If the number of messages in the folder is 0, don't fetch summaries
2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_summary): Oops.
If the number of messages in the folder is 0, don't fetch
summaries 1 thru 0, just return an empty summary.
(imap_copy_message_to): Fixed to use message UID and also send
the source folder as an arg to camel_imap_command rather than NULL.
(imap_move_message_to): Same.
(imap_init): If SELECT is successful, we need to set the current
folder to the one selected, this was causing problems with move/copy
Jeffrey Stedfast [Thu, 13 Jul 2000 19:07:14 +0000 (19:07 +0000)]
Oops. If the number of messages in the folder is 0, don't fetch summaries
2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_summary): Oops.
If the number of messages in the folder is 0, don't fetch
summaries 1 thru 0, just return an empty summary.
Dan Winship [Thu, 13 Jul 2000 17:17:56 +0000 (17:17 +0000)]
define a set of CAMEL_SERVICE_URL_ALLOW_* flags parallel to the _NEED_*
* camel-service.h: define a set of CAMEL_SERVICE_URL_ALLOW_* flags
parallel to the _NEED_* flags, and make the _NEED_* flags imply
the _ALLOW_* ones.
* providers/imap/camel-imap-store.c (camel_imap_store_init): imap
urls ALLOW_PATH
Jeffrey Stedfast [Thu, 13 Jul 2000 08:56:52 +0000 (08:56 +0000)]
New and improved approach to fetching an entire folder summary that should
2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_summary): New
and improved approach to fetching an entire folder summary
that should be much much faster than the old way as it gets
the entire folder summary in 1 shot rather than requesting
message by message. As with the last update, this version
also only fetches the minimum number of header fields.
(imap_get_summary): Oops, forgot to free the temp
GPtrArray *headers
Jeffrey Stedfast [Thu, 13 Jul 2000 08:28:24 +0000 (08:28 +0000)]
New and improved approach to fetching an entire folder summary that should
2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_summary): New
and improved approach to fetching an entire folder summary
that should be much much faster than the old way as it gets
the entire folder summary in 1 shot rather than requesting
message by message. As with the last update, this version
also only fetches the minimum number of header fields.
Jeffrey Stedfast [Thu, 13 Jul 2000 05:50:20 +0000 (05:50 +0000)]
Don't fetch the entire RFC822 header, just fetch the fields we want.
2000-07-13 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_get_summary): Don't
fetch the entire RFC822 header, just fetch the fields we want.
(imap_get_message_info): Same.
Michael Zucci [Thu, 13 Jul 2000 04:03:38 +0000 (04:03 +0000)]
Remove some text cruft i was using for testing.
Not Zed [Thu, 13 Jul 2000 04:02:13 +0000 (04:02 +0000)]
Reset filter on setup. (reset): When resetting qp encoding, set the state
2000-07-13 Not Zed <NotZed@HelixCode.com>
* camel-mime-filter-basic.c (camel_mime_filter_basic_new_type):
Reset filter on setup.
(reset): When resetting qp encoding, set the state to -1, instead
of 0.
* camel-mime-utils.c (quoted_encode_step): Actually count the
characters output sofar (it never counted any). Bunch of other
fixes.
(quoted_encode_close): Also flush out final character, if ther's
one.
Jeffrey Stedfast [Thu, 13 Jul 2000 02:14:50 +0000 (02:14 +0000)]
Oops, missed a source file.
Added #include <e-util/e-util.h> and renamed strstrcase to e_strstrcase in providers/imap/camel-imap-folder.c
Jeffrey Stedfast [Thu, 13 Jul 2000 02:11:57 +0000 (02:11 +0000)]
Chris forgot to add #include <e-util/e-util.h> to the source files
2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
Chris forgot to add #include <e-util/e-util.h> to the source files
* providers/imap/camel-imap-store.c (imap_connect): Fixed Peter's
fix, we don't want to send a string to a %d.
Jeffrey Stedfast [Thu, 13 Jul 2000 01:35:25 +0000 (01:35 +0000)]
Undid clahey's e_strstrcase because e_strstrcase DOES NOT EXIST in
2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
Undid clahey's e_strstrcase because e_strstrcase DOES NOT EXIST
in e-utils/e-utils.c nor anywhere else in Evolution - besides,
Camel should remain independant of Evolution.
* providers/imap/camel-imap-store.c (imap_connect): Fixed Peter's
fix, we don't want to send a string to a %d.
Christopher James Lahey [Wed, 12 Jul 2000 22:59:24 +0000 (22:59 +0000)]
From addressbook/ChangeLog:
2000-07-12 Christopher James Lahey <clahey@helixcode.com>
* backend/pas/pas-backend-file.c: Do case insensitive compares.
* addressbook/gui/component/addressbook.c: Make quick search
search both name and company name.
From camel/ChangeLog:
2000-07-12 Christopher James Lahey <clahey@helixcode.com>
* camel-folder-search.c, providers/imap/camel-imap-store.c:
Changed from strstrcase to e_strstrcase.
* string-utils.c, string-utils.h: Removed strstrcase (in favor of
e_strstrcase in e-util/e-util.c.)
From e-util/ChangeLog:
2000-07-12 Christopher James Lahey <clahey@helixcode.com>
* e-util.c, e-util.h: Added e_strstrcase function.
Chris Toshok [Wed, 12 Jul 2000 21:24:26 +0000 (21:24 +0000)]
get the article num out of our uid and mark it read in the newsrc.
2000-07-12 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-folder.c
(nntp_folder_set_message_flags): get the article num out of our
uid and mark it read in the newsrc.
(nntp_folder_get_message): get the message id out of the uid to
fetch the article.
* providers/nntp/camel-nntp-utils.c (get_XOVER_headers): the uid
is now <article-num>,<messageid>
(get_HEAD_headers): same.
* camel-mime-parser.c (folder_scan_step): go to HSCAN_MESSAGE
state when ct->subtype is "news" as well as "rfc822". this makes
attachments of type "message/news" display properly.
Dan Winship [Wed, 12 Jul 2000 20:37:00 +0000 (20:37 +0000)]
Useful default implementations for free_{uids,subfolder_names,summary}.
* camel-folder.c (camel_folder_free_deep,
camel_folder_free_shallow, camel_folder_free_nop): Useful default
implementations for free_{uids,subfolder_names,summary}.
(free_subfolder_names, free_uids): Make these g_warning-ing
default implementations.
* providers/*/camel-*-folder.c: Use the new functions where
appropriate, remove duplicated code.
Matthew Loper [Wed, 12 Jul 2000 19:46:08 +0000 (19:46 +0000)]
Solaris fixes: make sure not to pass NULL to printf's %s
Jeffrey Stedfast [Wed, 12 Jul 2000 19:28:50 +0000 (19:28 +0000)]
Use mbox_set_message_flags () instead of setting the flags by hand. This
2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
* providers/mbox/camel-mbox-folder.c (mbox_delete_message): Use
mbox_set_message_flags () instead of setting the flags by hand. This
fixes the problem of the "message_changed" signal not being emitted
at the correct time.
* providers/imap/camel-imap-folder.c: "folder_changed" signals should
pass a third argument (which is ignored).
* camel-folder.c: Undo gtk signal emits done in set_flags and
expunge.
(move_message_to):
(copy_message_to): Create info as a const CamelMessageInfo
Chris Toshok [Wed, 12 Jul 2000 18:14:31 +0000 (18:14 +0000)]
don't add test-newsrc to the build since it needs libcamel (which isn't
2000-07-12 Chris Toshok <toshok@helixcode.com>
* providers/nntp/Makefile.am: don't add test-newsrc to the build
since it needs libcamel (which isn't built at the time test-newsrc
needs linking.)
* providers/nntp/camel-nntp-utils.c (get_HEAD_headers): fill in
MessageInfo->message_id.
(get_XOVER_headers): same.
* providers/nntp/camel-nntp-folder.c (nntp_folder_init): move
summary loading here.
(nntp_folder_sync): summary/newsrc changes should be stored here.
put a comment to that effect.
(nntp_folder_set_message_flags): don't save the newsrc here.
(nntp_folder_get_uids): use g_ptr_array_index instead of the
cast/addition.
(nntp_folder_get_summary): no need to check if we should generate
the summary here. already done.
(nntp_folder_get_message_info): implement.
* providers/nntp/camel-nntp-store.c
(camel_nntp_store_get_toplevel_dir): use evolution_dir instead of
computing it ourselves.
(nntp_store_disconnect): call camel_nntp_newsrc_write.
(ensure_news_dir_exists): new function to create the news/<news
server> subdir.
(camel_nntp_store_class_init): hook up connect/disconnect and
finalize.
(nntp_store_connect): if ensure_news_dir_exists fails throw an
exception.
Peter Williams [Wed, 12 Jul 2000 16:02:02 +0000 (16:02 +0000)]
Fix bug #378: last displayed message is still shown in an empty folder
Peter Williams [Wed, 12 Jul 2000 15:45:59 +0000 (15:45 +0000)]
Fix bug #394: Refiling messages does not update the view
Jeffrey Stedfast [Wed, 12 Jul 2000 04:30:18 +0000 (04:30 +0000)]
Use size_t and ssize_t for read/write methods
2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
* camel-stream.c: Use size_t and ssize_t for read/write methods
Jeffrey Stedfast [Wed, 12 Jul 2000 04:13:21 +0000 (04:13 +0000)]
Updated to emit the message_changed signal. (imap_delete_message): Updated
2000-07-12 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_set_message_flags):
Updated to emit the message_changed signal.
(imap_delete_message): Updated to use imap_set_message_flags ().
(imap_move_message_to): Updated to use imap_set_message_flags ()
and to emit the folder_changed signal on the destination folder.
(imap_copy_message_to): Updated to emit the folder_changed signal
on the destination folder.
(imap_append_message): Updated to emit the folder_changed signal
on the destination folder.
Jeffrey Stedfast [Wed, 12 Jul 2000 00:36:07 +0000 (00:36 +0000)]
fix %08x to %04x
Jeffrey Stedfast [Wed, 12 Jul 2000 00:00:11 +0000 (00:00 +0000)]
Now takes a flags argument to specify the flags to be set on the message
2000-07-11 Jeffrey Stedfast <fejj@helixcode.com>
* camel-folder.c (camel_folder_append_message): Now takes a
flags argument to specify the flags to be set on the message
since we might not necessarily want the flags to be wiped clean.
(move_message_to):
(copy_message_to): Updated to send a flags argument to
append_message (); currently sends the original message's flags.
* providers/mbox/camel-mbox-folder.c (mbox_append_message):
* providers/imap/camel-imap-folder.c (imap_append_message):
Updated.
Jeffrey Stedfast [Tue, 11 Jul 2000 20:19:28 +0000 (20:19 +0000)]
This shouldn't return NULL, it should return g_ptr_array_new () so the
2000-07-11 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_search_by_expression):
This shouldn't return NULL, it should return g_ptr_array_new ()
so the mailer gets what it expects.
Peter Williams [Tue, 11 Jul 2000 20:19:25 +0000 (20:19 +0000)]
file camel-async-handle.c was initially added on branch camel-async.
Peter Williams [Tue, 11 Jul 2000 20:19:25 +0000 (20:19 +0000)]
file camel-async-handle.h was initially added on branch camel-async.
Jeffrey Stedfast [Tue, 11 Jul 2000 00:02:17 +0000 (00:02 +0000)]
Oops, an unsigned integer can never be < 0
2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
* camel-folder-summary.c (camel_folder_summary_decode_string):
Oops, an unsigned integer can never be < 0
Dan Winship [Mon, 10 Jul 2000 21:49:47 +0000 (21:49 +0000)]
Initialize a variable to make this not crash again. And fix a bug so it
* providers/vee/camel-vee-folder.c (vee_search_by_expression):
Initialize a variable to make this not crash again. And fix a bug
so it actually does something.
Jeffrey Stedfast [Mon, 10 Jul 2000 21:44:49 +0000 (21:44 +0000)]
Cleaned up a bunch of compile warnings
2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
* camel-folder-summary.c: Cleaned up a bunch of compile warnings
Dan Winship [Mon, 10 Jul 2000 20:50:22 +0000 (20:50 +0000)]
kill more debugging messages
* providers/vee: kill more debugging messages
Jeffrey Stedfast [Mon, 10 Jul 2000 07:30:59 +0000 (07:30 +0000)]
Implemented.
2000-07-10 Jeffrey Stedfast <fejj@helixcode.com>
* providers/mbox/camel-mbox-folder.c (mbox_get_unread_message_count):
* providers/vee/camel-vee-folder.c (vee_get_unread_message_count):
* providers/imap/camel-imap-folder.c (imap_get_unread_message_count):
Implemented.
* camel-folder.c (camel_folder_get_unread_message_count): New
convenience function to allow the mailer to query the number
of unread messages in a folder (for displaying message stats
in a folder tree?).
Dan Winship [Sun, 9 Jul 2000 22:40:49 +0000 (22:40 +0000)]
New function to copy a header_references structure.
* camel-mime-utils.c (header_references_dup): New function to copy
a header_references structure.
* camel-folder-summary.c (camel_message_info_dup_to): New function
to (deep) copy the data from one CamelMessageInfo into another.
(camel_message_info_free): And free the data.
* providers/vee/camel-vee-folder.c (vee_sync): Implement. (empty).
(vee_search_by_expression): belatedly update for
camel_folder_search change.
(vee_folder_build): belatedly update for camel_folder_search
change. Use camel_message_info_dup_to and camel_message_info_free
(in particular, so that we get message_id and references info so
vfolders can be threaded).
(vee_folder_build_folder): Ditto.