Dan Winship [Mon, 30 Oct 2000 17:39:08 +0000 (17:39 +0000)]
Camel IMAP authentication includes (forgotten in last commit)
Dan Winship [Mon, 30 Oct 2000 17:00:06 +0000 (17:00 +0000)]
New file with code for IMAP authentication mechanisms. (Currently just
* providers/imap/camel-imap-auth.c: New file with code for IMAP
authentication mechanisms. (Currently just krb4, and without
integrity/privacy protection).
* providers/imap/Makefile.am: Add camel-imap-auth.[ch] and krb4
CFLAGS/LDFLAGS
* providers/imap/camel-imap-store.c (connect_to_server): Split out
from imap_connect. Just does the basic connect and CAPABILITY
check. Redo the CAPABILITY code more robustly.
(query_auth_types_connected): Do this right rather than punting to
query_auth_types_generic. Check for KERBEROS_V4 if compiled with
krb4 support.
(query_auth_types_generic): Mention KERBEROS_V4 if compiled with
krb4 support.
(imap_connect): Use connect_to_server().
Dan Winship [Mon, 30 Oct 2000 16:58:53 +0000 (16:58 +0000)]
Take an additional argument, "break_lines", saying whether or not to add
* camel-mime-utils.c (base64_encode_step, base64_encode_close):
Take an additional argument, "break_lines", saying whether or not
to add '\n's to the output.
* camel-multipart.c (set_boundary):
* camel-mime-filter-basic.c (filter, complete): Update for base64
api change.
Dan Winship [Mon, 30 Oct 2000 03:24:15 +0000 (03:24 +0000)]
Improved IMAP namespace handling: leave the namespace in the
folder names rather than constantly prepending it and stripping it
off. Also some subscription fixes.
* camel-store.c (camel_folder_info_build): Fix for the case where
@top isn't in @folders.
* providers/imap/camel-imap-folder.c (camel_imap_folder_new): Add
a "short_name" argument rather than figuring it out ourselves.
(imap_get_full_name): Implementation of CamelFolder::get_full_name
that strips off namespace so the user doesn't have to see it.
(imap_append_message, imap_copy_message_to, imap_move_message_to):
Use folder->full_name rather than calling
camel_imap_store_get_folder_path.
* providers/imap/camel-imap-utils.c (imap_parse_list_response):
Update this: make @flags a bitmask and @sep a char rather than a
string. Make all of the out arguments optional. Handle literals in
the server response.
* providers/imap/camel-imap-store.c (imap_connect): Do a better
job of getting the correct dir_sep for the namespace we're using.
Construct a base_url here that will be used by get_folder_info.
(camel_imap_store_folder_path): Removed
(imap_folder_exists): Add an argument to return the short name of
the folder (parsed out of the LIST response). Update for
imap_parse_list_response change.
(get_folder): Update for the various other changes.
(get_folder_info): Update for the various other changes. Be more
consistent about the returned layout: put everything underneath
the "namespace" directory, including INBOX, even if it doesn't
belong there. Don't destroy the list of subscribed folders until
we've actually gotten the new list.
(folder_subscribed, subscribe_folder, unsubscribe_folder): Use
folder_name directly rather than camel_imap_store_folder_Path.
* providers/imap/camel-imap-command.c (camel_imap_command): Update
for folder name changes.
Dan Winship [Sun, 29 Oct 2000 20:06:29 +0000 (20:06 +0000)]
Remove md5-utils.h include since it's not part of Camel any more.
* camel.h: Remove md5-utils.h include since it's not part of Camel
any more.
* camel-charset-map.c: Kill some warnings.
* providers/nntp/camel-nntp-grouplist.c
(camel_nntp_get_grouplist_from_file, camel_nntp_grouplist_save):
Clean up warnings about time_t casts.
* providers/smtp/camel-smtp-transport.c: Remove unused md5-utils.h
include.
* providers/pop3/camel-pop3-store.c: Undefine the "_" macro
defined by krb4's des.h when compiling with krb support.
Fix md5-utils.h include.
Dan Winship [Fri, 27 Oct 2000 22:05:45 +0000 (22:05 +0000)]
Remove previous comment about Outlook brokenness, since it turns out the
brokenness was actually somewhere else. (Still in Outlook, just not in
the part of Outlook I was told it was.)
Dan Winship [Fri, 27 Oct 2000 20:19:48 +0000 (20:19 +0000)]
Work around Outlook brokenness in iMIP parsing by only quoting
* camel-mime-utils.c (header_param_list_format_append): Work
around Outlook brokenness in iMIP parsing by only quoting
Content-type parameters when the quoting is mandatory.
7 [Fri, 27 Oct 2000 18:28:20 +0000 (18:28 +0000)]
build md5-utils
2000-10-27 <jpr@helixcode.com>
* Makefile.am: build md5-utils
* md5-utils.c: Make part of util, get rid of camel stream util
function include string.h
* md5-utils.h: ditto
2000-10-27 <jpr@helixcode.com>
* providers/pop3/Makefile.am: Tidy up build
* providers/smtp/Makefile.am: ditto
* Makefile.am: Move md5-utils.[hc] to e-util because the
addressbook is going to use md5 hashes for pilot syncing.
Maybe the calendar conduits as well because this is a good idea
Chris had.
Kjartan Maraas [Wed, 25 Oct 2000 22:38:15 +0000 (22:38 +0000)]
Add newline to kill warnings.
2000-10-26 Kjartan Maraas <kmaraas@gnome.org>
* camel-exceptions-list.def: Add newline to kill warnings.
Dan Winship [Wed, 25 Oct 2000 21:36:09 +0000 (21:36 +0000)]
Fix folder listing code infinite loop.
* providers/imap/camel-imap-store.c (get_folder_info): Fix folder
listing code infinite loop.
Dan Winship [Wed, 25 Oct 2000 15:27:17 +0000 (15:27 +0000)]
Add a "parent" field to CamelFolderInfo.
* camel-store.h: Add a "parent" field to CamelFolderInfo.
* camel-store.c (camel_folder_info_build): Deal with "parent"
(camel_store_folder_subscribed, camel_store_subscribe_folder,
camel_store_unsubscribe_folder): Add g_return_if_fails checking
that the folder supports subscriptions.
* providers/imap/camel-imap-store.c (folder_subscribed,
subscribe_folder, unsubscribe_folder): Remove "+ 1"s since the
mail subscribe UI won't prepend / to the folder names now.
(get_folder_info): Clear the "parent" field of the folderinfos
when removing an empty top level.
* providers/nntp/camel-nntp-store.c (nntp_store_folder_subscribed,
nntp_store_subscribe_folder, nntp_store_unsubscribe_folder):
Remove "+ 1"s since the mail subscribe UI won't prepend / to the
folder names now.
Chris Toshok [Wed, 25 Oct 2000 02:13:17 +0000 (02:13 +0000)]
add subscribed_folders.
2000-10-24 Chris Toshok <toshok@helixcode.com>
* providers/imap/camel-imap-store.h: add subscribed_folders.
* providers/imap/camel-imap-store.c (camel_imap_store_class_init):
fill in vtable entries for subscription functions.
(camel_imap_store_finalize): new function, so we can free up our
subscribed_folders hashtable.
(camel_imap_store_init): set CAMEL_STORE_SUBSCRIPTIONS in the
CamelStore flags, and create our subscribed_folders hashtable.
(camel_imap_store_get_type): camel_imap_store_finalize is our
finalize function.
(get_folder_info): if we're looking at subscribed_only, clear out
the subscribed_folders hashtable, use LSUB instead of LIST, and
insert folder paths (prepended by their namespace if there is one)
into subscribed_folders. INBOX subscription support needs work,
since we always show it, regardless of it's subscribed state.
(folder_subscribed): new function. just look up the folder_path
in the hashtable.
(subscribe_folder): new function. use the imap SUBSCRIBE command,
and if successful add it to the hashtable.
(unsubscribe_folder): new function. use the imap UNSUBSCRIBE
command, and if successful remove it from the hashtable.
Dan Winship [Tue, 24 Oct 2000 22:20:44 +0000 (22:20 +0000)]
add a missing #include
Dan Winship [Tue, 24 Oct 2000 18:49:30 +0000 (18:49 +0000)]
Fill in the message_count and unread_message_count flags (if !fast).
* providers/imap/camel-imap-store.c (get_folder_info): Fill in the
message_count and unread_message_count flags (if !fast).
Dan Winship [Tue, 24 Oct 2000 05:23:24 +0000 (05:23 +0000)]
lots of i18n fixes
Chris Toshok [Mon, 23 Oct 2000 22:04:31 +0000 (22:04 +0000)]
add camel-nntp-types.h.
2000-10-23 Chris Toshok <toshok@helixcode.com>
* providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add
camel-nntp-types.h.
Dan Winship [Mon, 23 Oct 2000 20:28:32 +0000 (20:28 +0000)]
Fix a "how could this have been working before" memory overrun bug found
* providers/imap/camel-imap-command.c (imap_read_untagged): Fix a
"how could this have been working before" memory overrun bug
found by Vlad.
Dan Winship [Mon, 23 Oct 2000 18:04:22 +0000 (18:04 +0000)]
These should have gone away a long time ago.
* camel-op-queue.[ch], camel-thread-proxy.[ch]: These should have
gone away a long time ago.
Chris Toshok [Fri, 20 Oct 2000 21:57:50 +0000 (21:57 +0000)]
re-enable the nntp provider.
2000-10-20 Chris Toshok <toshok@helixcode.com>
* providers/Makefile.am (SUBDIRS): re-enable the nntp provider.
Chris Toshok [Fri, 20 Oct 2000 21:46:14 +0000 (21:46 +0000)]
add function to build a tree from the nntp group names (using '.' as a
2000-10-20 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-store.c (build_folder_info): add
function to build a tree from the nntp group names (using '.' as a
heirarchy separator.) #ifdefed INFO_AS_TREE only.
(build_folder_info_from_grouplist): if INFO_AS_TREE is selected,
call build_folder_info instead of appending a new CamelFolderInfo
to our list.
(ensure_news_dir_exists): use e_mkdir_hier instead of failing if a
parent directory (~/evolution/news generally) isn't there.
Chris Toshok [Fri, 20 Oct 2000 05:19:04 +0000 (05:19 +0000)]
#include <sys/types.h> before <regex.h>
2000-10-19 Chris Toshok <toshok@helixcode.com>
* camel-folder-search.c: #include <sys/types.h> before <regex.h>
Dan Winship [Fri, 20 Oct 2000 01:06:16 +0000 (01:06 +0000)]
Fix a bug with "INBOX" (or anything else with NIL hierarchy separator) as
* providers/imap/camel-imap-utils.c (imap_parse_list_response):
Fix a bug with "INBOX" (or anything else with NIL hierarchy
separator) as the namespace.
Dan Winship [Fri, 20 Oct 2000 00:47:36 +0000 (00:47 +0000)]
Emit message_changed and folder_changed as appropriate.
* providers/imap/camel-imap-folder.c (imap_refresh_info): Emit
message_changed and folder_changed as appropriate.
Dan Winship [Thu, 19 Oct 2000 20:30:43 +0000 (20:30 +0000)]
Update comment here so refresh_info isn't just for reconnects any more.
* camel-folder.c (camel_folder_refresh_info): Update comment here
so refresh_info isn't just for reconnects any more. Make the
default implementation a no-op rather than an error.
* providers/nntp/camel-nntp-folder.c: Move refresh_info impl into
camel_nntp_folder_new, since it would have leaked memory and not
done anything useful if it was called later.
* providers/mbox/camel-mbox-folder.c: Remove no-longer-necessary
refresh_info impl.
* providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
Update imap_folder->exists, but don't actually load the new
messages. This is a temporary workaround to deal with the IMAP
provider stealing the message list focus at annoying times.
(imap_copy_message_to, imap_move_message_to): Emit a
folder_changed by hand, for now.
Ettore Perazzoli [Thu, 19 Oct 2000 17:45:35 +0000 (17:45 +0000)]
Build fixes from Jacob, same as the other branch.
Jeffrey Stedfast [Thu, 19 Oct 2000 00:13:50 +0000 (00:13 +0000)]
The correct fix this time - the description should be encoded here and not
2000-10-18 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-part.c (camel_mime_part_set_description): The correct
fix this time - the description should be encoded here and not in
the camel-medium layer.
Ettore Perazzoli [Wed, 18 Oct 2000 18:36:10 +0000 (18:36 +0000)]
Initialize the outbuf to be empty before calling unicode_iconv on it.
This fixes a problem with duplicate message bodies on my machine.
Not Zed [Wed, 18 Oct 2000 06:11:54 +0000 (06:11 +0000)]
No, we must not encode the headers here. These interfaces ARE raw
2000-10-18 Not Zed <NotZed@HelixCode.com>
* camel-mime-part.c (add_header): No, we must not encode the
headers here. These interfaces ARE raw interfaces as they are
defined in camel_medium. Also removed a bogus/meaningless FIXME.
(set_header): Likewise here, we must not.
(process_header): Removed another bogus comment.
* camel-object.c (shared_is_of_type): Comment out the spitting of
a big warning when we're trying to determine types from code.
* providers/mbox/camel-mbox-summary.c
(message_info_new_from_parser): Only call ibex funcitons if we
have an index.
* providers/mh/camel-mh-summary.c (camel_mh_summary_add): Only
call ibex functions if we have an index.
(remove_summary): Likewise.
(camel_mh_summary_check): Likewise.
* providers/nntp/camel-nntp-store.c (nntp_store_get_folder):
get_folder -> flags argument.
* providers/vee/camel-vee-store.c (vee_get_folder): create->flags.
* providers/pop3/camel-pop3-store.c (get_folder): Changed create
-> flags.
* providers/imap/camel-imap-store.c (get_folder): Added flags
argument.
* providers/mh/camel-mh-folder.c (camel_mh_folder_new): Added
flags argument, and fixed code appropriately.
* providers/mh/camel-mh-store.c (get_folder): Added flags argument.
* camel-folder-search.c (message_body_contains): Perform a regex
match on the contents of messages. This wont quite work yet as
message contents are encoded when written to a stream.
(build_match_regex): Converts a number of strings into a regex
matching pattern, escaping special chars.
(match_message): match a single message from a folder, by uid.
Slow.
(search_body_contains): Changed to support matching where no index
is supplied. Matches are performed by retrieving message
contents, etc.
() WTF? camel should not be including any widget headers.
* providers/mbox/camel-mbox-folder.c (camel_mbox_folder_new):
Added flags argument.
(mbox_refresh_info): Changed into a NOP, the refresh info code
moved into the new function.
(camel_mbox_folder_new): If we have an index requested, build one,
otherwise, remove an old one, or just dont do anything.
* providers/mbox/camel-mbox-store.c (get_folder): Changed create
to flags, changed code to suit.
* camel-store.c (camel_store_get_folder): Changed create to flags.
(get_folder_internal): And here.
(get_folder): And here too.
* camel-store.h (camel_store_get_folder): Change the create
argument to be a flags argument.
Dan Winship [Wed, 18 Oct 2000 03:41:29 +0000 (03:41 +0000)]
(camel_imap_folder_new): Move the summary creation to after the
folder selection again, since it depends on the uidvalidity
having been set.
Dan Winship [Wed, 18 Oct 2000 03:03:48 +0000 (03:03 +0000)]
Remove cached info at the end of the summary when the folder shrinks
* providers/imap/camel-imap-folder.c (imap_refresh_info): Remove
cached info at the end of the summary when the folder shrinks
between sessions. Also remove an untrue comment.
* providers/imap/camel-imap-store.c (get_folder): Fix up
summary_file to not include the namespace twice.
Jeffrey Stedfast [Wed, 18 Oct 2000 01:06:55 +0000 (01:06 +0000)]
Encode the header value. (add_header): Same.
2000-10-17 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-part.c (set_header): Encode the header value.
(add_header): Same.
Not Zed [Tue, 17 Oct 2000 09:45:38 +0000 (09:45 +0000)]
Added some malloc check debugging stuff.
2000-10-17 Not Zed <NotZed@HelixCode.com>
* camel-mime-filter.c: Added some malloc check debugging stuff.
* camel-mime-parser.c
(struct _header_scan_state): Removed top_part, top_start, and
pending. I can't even remember why they were there, and they're
not used anymore.
* camel-mime-filter-basic.c (filter): Forgot to up the space here
too.
2000-10-14 Not Zed <NotZed@HelixCode.com>
* camel-mime-filter-basic.c (complete): Ok, so we hit a fixme, 3x
just wasn't enough for some sequences.
Jeffrey Stedfast [Tue, 17 Oct 2000 03:41:03 +0000 (03:41 +0000)]
Don't imap_next_word(respbuf + 2), instead use imap_next_word(respbuf) or
2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-command.c
(imap_read_response): Don't imap_next_word(respbuf + 2), instead
use imap_next_word(respbuf) or else we'll skip over the second
token.
Jeffrey Stedfast [Tue, 17 Oct 2000 02:37:24 +0000 (02:37 +0000)]
Don't free 'resp' as it doesn't point to the beginning of the allocated
2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-command.c
(camel_imap_response_extract): Don't free 'resp' as it doesn't
point to the beginning of the allocated data, instead free
response->untagged->pdata[i]. Also, if '*resp' is equal to a space
character, then set resp = imap_next_word (resp) rather than
expecting resp++ to work (there's a list broken IMAP daemons that
like to put extra spaces between tokens).
(imap_read_response): Don't expect 'respbuf+2' to be where the
untagged number response to start (see above fix for an
explanation).
Chris Toshok [Mon, 16 Oct 2000 23:09:35 +0000 (23:09 +0000)]
when using the construct (flags & CAMEL_SERVICE_URL_NEED_*) make sure to
2000-10-16 Chris Toshok <toshok@helixcode.com>
* camel-service.c (get_path): when using the construct (flags &
CAMEL_SERVICE_URL_NEED_*) make sure to do ((flags &
CAMEL_SERVICE_URL_NEED_*) == CAMEL_SERVICE_URL_NEED_*)
(check_url): same.
Jeffrey Stedfast [Mon, 16 Oct 2000 21:00:59 +0000 (21:00 +0000)]
Only send the LOGOUT command if the store is connected. (imap_connect):
2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c (imap_disconnect): Only send
the LOGOUT command if the store is connected.
(imap_connect): Set the 'connected' state to TRUE when we
successfully connect.
(get_folder_info): if (!topfi), 'topfi' was allocated but then
'fi' was set. I think Dan meant to set topfi since fi is an
uninitialized value at this point.
* providers/imap/camel-imap-command.c (imap_read_response): Check
for the untagged BYE response and set the 'connected' state to
FALSE if we receive the BYE response. Return NULL if we get a BYE
response.
Dan Winship [Mon, 16 Oct 2000 18:10:42 +0000 (18:10 +0000)]
Deal with the possibility of not getting a LIST response back for the top
* providers/imap/camel-imap-store.c (get_folder_info): Deal with
the possibility of not getting a LIST response back for the top
level.
Dan Winship [Thu, 12 Oct 2000 20:55:11 +0000 (20:55 +0000)]
Simple subclass of CamelFolderSummary that also keeps a UIDVALIDITY value
* providers/imap/camel-imap-summary.c: Simple subclass of
CamelFolderSummary that also keeps a UIDVALIDITY value (and
doesn't, for the moment, build content info).
* providers/imap/camel-imap-folder.c:
(various): Use a CamelImapSummary to store/fetch summary info.
(camel_imap_folder_new): Take a path to a file to use for the
summary. Set the folder's permanent_flags correctly according to
the server response. Read in the summary (checking the
UIDVALIDITY) and update it if it's out of date.
(imap_refresh_info): Just fetch UIDs and flags. If the UIDs all
match, update the flags as needed and be done with it. Otherwise,
delete messages that have been expunged from the server and fetch
full summary info for any new messages.
(imap_sync): Save the summary to disk.
(imap_update_summary): Renamed from imap_get_summary_internal. Can
now be told to get summary for only a subset of messages. Use
camel-mime-utils functions rather than rolling our own header
parsing.
(imap_get_message_info_internal): Merged into imap_update_summary.
(imap_set_message_flags): Don't marked the message FOLDER_FLAGGED
if we're not actually changing the value of any of the flags.
(camel_imap_folder_changed): Deal with EXISTS rather than RECENT.
* providers/imap/camel-imap-store.c (imap_connect): Call
camel_session_get_storage_path and save the value.
(get_folder): Create a local directory to store summary
information and pass a summary file name to camel_imap_folder_new.
Don't call camel_folder_refresh_info from here any more since
camel_imap_folder_new does it again.
* providers/imap/camel-imap-command.c (camel_imap_command): Add a
special case to this to make it possible to get the repsonses from
a SELECT and still have store->current_folder be updated
correctly.
(imap_read_response): parse EXISTS rather than RECENT
* camel-session.c (camel_session_get_storage_path): Use
e_mkdir_hier.
* camel-folder-summary.c (camel_folder_summary_remove_index): New
function.
* camel-mime-utils.c (header_raw_append_parse): fix this.
(camel-mime-parser.c doesn't use this code because of the MEMPOOL
optimization, so nothing was ever actually calling it before.)
Not Zed [Thu, 12 Oct 2000 13:38:51 +0000 (13:38 +0000)]
Removed temp_message_buffer, and content_input_stream fields which seem to
2000-10-11 Not Zed <NotZed@HelixCode.com>
* camel-mime-part.h (struct _CamelMimePart): Removed
temp_message_buffer, and content_input_stream fields which seem to
have come from nowhere, and are unused.
* camel-mime-utils.c: Added a note about touching this file.
Nobody is to touch it without asking me first. That goes for you
too Jeff.
(header_decode_text): In what way is this broken?
2000-10-10 Not Zed <NotZed@HelixCode.com>
* providers/imap/camel-imap-folder.c (imap_get_summary_internal):
Fix camel_summary_* function rename
(imap_get_message_info_internal): Likewise.
* camel-mime-parser.c (camel_mime_parser_finalise): Fixed a spelling mistake.
* camel-folder-summary.c (camel_summary_format_address): Uh, why
do we encode and then decode here ... sigh. This is not the way
to fix this.
(camel_folder_summary_format_address): Renamed to a proper name,
this was only supposed to be a private function.
(camel_folder_summary_format_string): Likewise. Oh i see why it
was made public, code reuse by cut & paste. Joy.
Chris Toshok [Wed, 11 Oct 2000 23:00:53 +0000 (23:00 +0000)]
remove the leading '/'. (nntp_store_subscribe_folder): same.
2000-10-11 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-store.c (nntp_store_unsubscribe_folder): remove the leading '/'.
(nntp_store_subscribe_folder): same.
(nntp_store_folder_subscribed): same.
Jeffrey Stedfast [Wed, 11 Oct 2000 17:42:03 +0000 (17:42 +0000)]
Quote the mailbox name as it may contain spaces. (imap_copy_message_to):
2000-10-11 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_move_message_to): Quote
the mailbox name as it may contain spaces.
(imap_copy_message_to): Same.
Chris Toshok [Wed, 11 Oct 2000 04:37:33 +0000 (04:37 +0000)]
fill in message_count and unread_message_count properly.
2000-10-10 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-store.c
(build_folder_info_from_grouplist): fill in message_count and
unread_message_count properly.
* providers/nntp/camel-nntp-newsrc.h: reformat.
* providers/nntp/camel-nntp-grouplist.c
(camel_nntp_get_grouplist_from_file): remove spew.
* providers/nntp/camel-nntp-newsrc.c
(camel_nntp_newsrc_group_get_num_articles_read): new function.
(camel_nntp_newsrc_group_get_highest_article_read): robustification.
Joe Shaw [Tue, 10 Oct 2000 22:31:26 +0000 (22:31 +0000)]
Un-rasterize my changelog entry
No, I am not artifically inflating my commit numbers.
Joe Shaw [Tue, 10 Oct 2000 21:31:49 +0000 (21:31 +0000)]
Check before deferencing the sep pointer.
2000-10-10 Joe Shaw <joe@helixcode.com>
* providers/imap/camel-imap-store.c
(parse_list_response_as_folder_info): Check before deferencing the
sep pointer.
Jacob "Ulysses" Berkman [Tue, 10 Oct 2000 16:57:29 +0000 (16:57 +0000)]
teach camel about "its" vs. "it's"
2000-10-10 Jacob "Ulysses" Berkman <jacob@helixcode.com>
* camel-*.c: teach camel about "its" vs. "it's"
Chris Toshok [Tue, 10 Oct 2000 00:50:46 +0000 (00:50 +0000)]
write out the newsrc. (nntp_store_get_name): if @brief, just return host.
2000-10-09 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-store.c (finalize): write out the
newsrc.
(nntp_store_get_name): if @brief, just return host.
* providers/nntp/camel-nntp-newsrc.c: robustification and bug
fixes.
Miguel de Icaza [Sun, 8 Oct 2000 06:56:13 +0000 (06:56 +0000)]
Issue a warning if h->value is NULL.
2000-10-08 Miguel de Icaza <miguel@helixcode.com>
* camel-mime-part.c (write_to_stream): Issue a warning if h->value
is NULL.
Jeffrey Stedfast [Fri, 6 Oct 2000 21:38:36 +0000 (21:38 +0000)]
Decode the resulting string.
2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
* camel-folder-summary.c (camel_summary_format_address): Decode
the resulting string.
Chris Toshok [Fri, 6 Oct 2000 19:41:58 +0000 (19:41 +0000)]
add camel-nntp-grouplist.h (libcamelnntp_la_SOURCES): add
2000-10-06 Chris Toshok <toshok@helixcode.com>
* providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add
camel-nntp-grouplist.h
(libcamelnntp_la_SOURCES): add camel-nntp-grouplist.c
* providers/nntp/camel-nntp-provider.c: add our own hash functions
for nntp urls.
* providers/nntp/camel-nntp-newsrc.c
(camel_nntp_newsrc_group_is_subscribed): new function.
(camel_nntp_newsrc_subscribe_group): new function.
(camel_nntp_newsrc_unsubscribe_group): new function.
* providers/nntp/camel-nntp-newsrc.h: add prototypes for
_group_is_subscribed, _subscribe_group, and _unsubscribe_group.
* providers/nntp/camel-nntp-store.c
(build_folder_info_from_grouplist): new function.
(nntp_store_get_folder_info): add subscribed_only_parameter. if
it's FALSE, load the grouplist and call
build_folder_info_from_grouplist.
(nntp_store_folder_subscribed): implement.
(nntp_store_subscribe_folder): implement.
(nntp_store_unsubscribe_folder): implement.
(camel_nntp_store_init): add CAMEL_STORE_SUBSCRIPTIONS to the
store's flags.
* providers/mh/camel-mh-store.c (get_folder_info): add
subscribed_only parameter.
* providers/mbox/camel-mbox-store.c (get_folder_info): add
subscribed_only parameter.
* providers/imap/camel-imap-store.c (get_folder_info): add
subscribed_only parameter.
* camel-store.c (camel_store_supports_subscriptions): new function.
(camel_store_folder_subscribed): new function.
(camel_store_subscribe_folder): new function.
(camel_store_unsubscribe_folder): new function.
* camel-store.h: add prototypes and virtual functions for the
subscribe implementation. also, add a subscribed_only argument to
camel_store_get_folder_info.
Chris Toshok [Fri, 6 Oct 2000 19:31:07 +0000 (19:31 +0000)]
new file.
2000-10-06 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-grouplist.c: new file.
* providers/nntp/camel-nntp-grouplist.h: new file.
* providers/nntp/camel-nntp-types.h: new file.
Jeffrey Stedfast [Fri, 6 Oct 2000 19:05:22 +0000 (19:05 +0000)]
Fix so that we don't encode every single char in the word. Also, do we
2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-utils.c (quoted_encode): Fix so that we don't encode
every single char in the word. Also, do we need a safemask? I
don't see why we would.
(header_encode_string): Don't strip off the last char!!
Jeffrey Stedfast [Fri, 6 Oct 2000 17:59:39 +0000 (17:59 +0000)]
Fix so that we don't encode every single char in the word. Also, do we
2000-10-06 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-utils.c (quoted_encode): Fix so that we don't encode
every single char in the word. Also, do we need a safemask? I
don't see why we would.
Ettore Perazzoli [Fri, 6 Oct 2000 16:31:06 +0000 (16:31 +0000)]
Don't compile the NNTP provider as it currently doesn't build because
of missing `camel-nntp-types.h'.
Chris Toshok [Fri, 6 Oct 2000 08:25:36 +0000 (08:25 +0000)]
add camel-nntp-grouplist.h (libcamelnntp_la_SOURCES): add
2000-10-06 Chris Toshok <toshok@helixcode.com>
* providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add
camel-nntp-grouplist.h
(libcamelnntp_la_SOURCES): add camel-nntp-grouplist.c
* providers/nntp/camel-nntp-provider.c: add our own hash functions
for nntp urls.
* providers/nntp/camel-nntp-newsrc.c
(camel_nntp_newsrc_group_is_subscribed): new function.
(camel_nntp_newsrc_subscribe_group): new function.
(camel_nntp_newsrc_unsubscribe_group): new function.
* providers/nntp/camel-nntp-newsrc.h: add prototypes for
_group_is_subscribed, _subscribe_group, and _unsubscribe_group.
* providers/nntp/camel-nntp-store.c
(build_folder_info_from_grouplist): new function.
(nntp_store_get_folder_info): add subscribed_only_parameter. if
it's FALSE, load the grouplist and call
build_folder_info_from_grouplist.
(nntp_store_folder_subscribed): implement.
(nntp_store_subscribe_folder): implement.
(nntp_store_unsubscribe_folder): implement.
(camel_nntp_store_init): add CAMEL_STORE_SUBSCRIPTIONS to the
store's flags.
* providers/mh/camel-mh-store.c (get_folder_info): add
subscribed_only parameter.
* providers/mbox/camel-mbox-store.c (get_folder_info): add
subscribed_only parameter.
* providers/imap/camel-imap-store.c (get_folder_info): add
subscribed_only parameter.
* camel-store.c (camel_store_supports_subscriptions): new function.
(camel_store_folder_subscribed): new function.
(camel_store_subscribe_folder): new function.
(camel_store_unsubscribe_folder): new function.
* camel-store.h: add prototypes and virtual functions for the
subscribe implementation. also, add a subscribed_only argument to
camel_store_get_folder_info.
Jeffrey Stedfast [Fri, 6 Oct 2000 00:59:34 +0000 (00:59 +0000)]
Encode the name part of the address and don't quote the name.
2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-utils.c (header_address_list_format_append): Encode
the name part of the address and don't quote the name.
(header_decode_text): Rewrote from scratch, the old code was badly
broken.
Jeffrey Stedfast [Thu, 5 Oct 2000 23:20:52 +0000 (23:20 +0000)]
Use the camel_address_encode function again.
2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-message.c (camel_mime_message_set_reply_to): Use the
camel_address_encode function again.
(camel_mime_message_set_from): Same.
Jeffrey Stedfast [Thu, 5 Oct 2000 21:26:28 +0000 (21:26 +0000)]
Modified to not encode space chars in the middle of a line. (isblank): New
2000-10-05 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-utils.c (quoted_encode_step): Modified to not encode
space chars in the middle of a line.
(isblank): New macro if we're not on a system with the GNU isblank
extension.
* camel-mime-message.c (camel_mime_message_set_from): Reversed my
changes, don't header_encode_phrase - it generates broken headers.
(camel_mime_message_set_reply_to): Same.
Chris Toshok [Thu, 5 Oct 2000 00:51:58 +0000 (00:51 +0000)]
revert to old method (only use XOVER if OVER is supported.)
2000-10-04 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-utils.c (camel_nntp_get_headers):
revert to old method (only use XOVER if OVER is supported.)
* providers/nntp/camel-nntp-store.c
(camel_nntp_store_get_overview_fmt): handle the case where the
OVER extension isn't listed but LIST OVERVIEW.FMT works (again,
INN 2.2). enable the OVER extension in this case.
Chris Toshok [Wed, 4 Oct 2000 21:59:06 +0000 (21:59 +0000)]
return a gboolean so we can tell if this command worked. we can't key off
2000-10-04 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-utils.c (get_XOVER_headers): return a
gboolean so we can tell if this command worked. we can't key off
the OVER extension being present because at least one server (INN
2.2) doesn't report the OVER extension but implements the XOVER
command. This could of course just be because I'm a loser for
thinking they were related in the first place.
(camel_nntp_get_headers): always try XOVER first, and if it fails
revert to the slow method.
Dan Winship [Wed, 4 Oct 2000 21:55:53 +0000 (21:55 +0000)]
Fix a case where a variable was free'd and then possibly used in an error
* providers/mbox/camel-mbox-store.c (get_folder): Fix a case where
a variable was free'd and then possibly used in an error message.
Chris Toshok [Wed, 4 Oct 2000 21:41:13 +0000 (21:41 +0000)]
news: -> nntp:.
2000-10-04 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-provider.c
(camel_provider_module_init): news: -> nntp:.
Chris Toshok [Wed, 4 Oct 2000 21:32:32 +0000 (21:32 +0000)]
use "nntp:" instead of "news:" since "news:" urls aren't supposed to have
2000-10-04 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-store.c (nntp_store_get_folder_info):
use "nntp:" instead of "news:" since "news:" urls aren't supposed
to have host/user/port info in them. also, if there's a user
defined in the url, put it in the urls for our folders.
Chris Toshok [Wed, 4 Oct 2000 20:36:10 +0000 (20:36 +0000)]
borrow some code from the imap provider to query the user for their
2000-10-04 Chris Toshok <toshok@helixcode.com>
* providers/nntp/camel-nntp-auth.c (camel_nntp_auth_authenticate):
borrow some code from the imap provider to query the user for
their password, and pass the user/passwd to nntp. be extra
paranoid and zero out the password before freeing it.
* providers/nntp/camel-nntp-store.c (camel_nntp_store_init): add
ALLOW_USER/ALLOW_PASSWORD/ALLOW_AUTH to the url flags.
(nntp_store_query_auth_types_generic): return our list of
auth_types.
(nntp_store_query_auth_types_connected): broken, return same as in
query_auth_types_generic.
Dan Winship [Wed, 4 Oct 2000 20:10:27 +0000 (20:10 +0000)]
IMAP4 (pre-rev1) doesn't support the 'LIST "" ""' idiom, so don't use it.
* providers/imap/camel-imap-store.c (imap_connect): IMAP4
(pre-rev1) doesn't support the 'LIST "" ""' idiom, so don't use
it. Just assume the dir_sep is '/'. Shrug.
Jeffrey Stedfast [Wed, 4 Oct 2000 17:15:41 +0000 (17:15 +0000)]
Use header_encode_phrase instead. (camel_mime_message_set_from): Same.
2000-10-04 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-message.c (camel_mime_message_set_reply_to): Use
header_encode_phrase instead.
(camel_mime_message_set_from): Same.
Not Zed [Wed, 4 Oct 2000 15:56:32 +0000 (15:56 +0000)]
Handle the case where ct != NULL, but type and subtype are, and also match
2000-10-04 Not Zed <NotZed@HelixCode.com>
* camel-mime-utils.c (header_content_type_is): Handle the case
where ct != NULL, but type and subtype are, and also match that
against text/plain.
* camel-folder-summary.c: Bump summary file version.
(message_info_save): Save the size from the messageinfo.
(message_info_load): Load the size from the summary file.
(message_info_load): Fixed up the time_t saving/loading. There
was a reason the warning was left there ... obviously nobody could
read the comment "/* warnings, leave them here */", why do i even
bother.
(camel_folder_summary_decode_time_t): Decode a time_t value from
the summary file.
(camel_folder_summary_encode_time_t): Encode a time_t value to the
summary file.
Jeffrey Stedfast [Tue, 3 Oct 2000 22:49:42 +0000 (22:49 +0000)]
Quote the mailbox name when sending a SELECT request otherwise mailboxes
2000-10-03 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-command.c (camel_imap_command): Quote
the mailbox name when sending a SELECT request otherwise mailboxes
with spaces in their names will cause problems.
* camel-mime-message.c (camel_mime_message_set_reply_to): encode
before setting.
(camel_mime_message_set_from): Same.
Dan Winship [Tue, 3 Oct 2000 20:06:14 +0000 (20:06 +0000)]
New file containing camel_imap_command and friends. Major
* providers/imap/camel-imap-command.c: New file containing
camel_imap_command and friends. Major camel_imap_command rewrite
to remove duplicated code, make the parsing of literals be
more safe/correct, deal with RECENT/EXPUNGE responses more
consistently, and make it possible to implement the AUTHENTICATE
command.
* providers/imap/camel-imap-utils.c (imap_parse_nstring): New
function, to parse an IMAP "nstring".
* providers/imap/camel-imap-store.c: Move command stuff to
camel-imap-command.c. Update for camel_imap_command changes.
* providers/imap/camel-imap-folder.c: Update for
camel_imap_command changes.
(imap_append_message): CRLF filter the message before sending it.
* providers/imap/Makefile.am: Add camel-imap-command.[ch], remove
camel-imap-stream.[ch] for now.
Jeffrey Stedfast [Mon, 2 Oct 2000 23:26:53 +0000 (23:26 +0000)]
New convenience function to determine if there are any 8bit mime parts in
2000-10-02 Jeffrey Stedfast <fejj@helixcode.com>
* camel-mime-message.c (camel_mime_message_has_8bit_parts): New
convenience function to determine if there are any 8bit mime parts
in a mime message.
(camel_mime_message_encode_8bit_parts): New convenience function
to recursively reencode all 8bit mime parts to either
quoted-printable or base64 depending on which would be the best
encoding for that part.
* providers/smtp/camel-smtp-transport.c (smtp_data): If the mime
message contains 8bit parts and the server doesn't support 8bit
transfers, reencode those parts before proceding with the send.
(smtp_mail): If the mime message contains 8bit parts and the
server supports the 8BITMIME extension to SMTP, notify the server
that we'll be sending it 8bit mime parts.
(_send_to): Find out if the message contains 8bit parts.
Jeffrey Stedfast [Mon, 2 Oct 2000 21:13:08 +0000 (21:13 +0000)]
Use the CamelInternetAddress parser. (smtp_get_email_addr_from_text):
2000-10-02 Jeffrey Stedfast <fejj@helixcode.com>
* providers/smtp/camel-smtp-transport.c (_send_to): Use the
CamelInternetAddress parser.
(smtp_get_email_addr_from_text): deprecated.
Dan Winship [Mon, 2 Oct 2000 20:14:57 +0000 (20:14 +0000)]
Remove default_ports.
* camel-provider.h: Remove default_ports.
* camel-remote-store.c (remote_connect): Get default_port from
CamelRemoteStore rather than CamelProvider.
* providers/{imap,nntp,pop3}/camel-*-store.c: Initialize
CamelRemoteStore::default_port
* providers/*/camel-*-provider.c: Remove default_ports.
Dan Winship [Mon, 2 Oct 2000 19:08:20 +0000 (19:08 +0000)]
Remove camel_folder_{get,free}_subfolder_info, as we want to be able to
* 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
Dan Winship [Mon, 2 Oct 2000 18:23:40 +0000 (18:23 +0000)]
More updating... still not usable, or even compilable
Jeffrey Stedfast [Fri, 29 Sep 2000 04:08:11 +0000 (04:08 +0000)]
another mem leak fix
Jeffrey Stedfast [Fri, 29 Sep 2000 02:53:47 +0000 (02:53 +0000)]
Fixed some memory leaks. (camel_smtp_transport_init): Initialize
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 :-(
Jeffrey Stedfast [Fri, 29 Sep 2000 01:56:39 +0000 (01:56 +0000)]
Don't send the recipient data through smtp_get_email_addr_from_text - this
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.
Jeffrey Stedfast [Thu, 28 Sep 2000 23:57:54 +0000 (23:57 +0000)]
Make sure to add the space char after an encoded word when the encoding is
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.
Jeffrey Stedfast [Thu, 28 Sep 2000 20:20:56 +0000 (20:20 +0000)]
When getting a literal string response, don't include the \r\n after the
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.
Not Zed [Thu, 28 Sep 2000 11:31:29 +0000 (11:31 +0000)]
New function to fold headers.
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.
Dan Winship [Wed, 27 Sep 2000 23:55:26 +0000 (23:55 +0000)]
Return untagged data in a GPtrArray rather than a string, since it saves
* 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.
Jeffrey Stedfast [Tue, 26 Sep 2000 17:25:22 +0000 (17:25 +0000)]
Quote the folder name as it may contain spaces.
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.
Jeffrey Stedfast [Fri, 22 Sep 2000 22:35:10 +0000 (22:35 +0000)]
Again...wrap the folder names in quotes
2000-09-22 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c
(imap_get_message_count_internal): Again...wrap the folder names
in quotes
* providers/imap/camel-imap-store.c (imap_folder_exists): Wrap the
mailbox name in the LIST command in quotes just in case the folder
has spaces in the name.
(imap_create): Again, wrap folder name in quotes.
(check_current_folder): Same...
* providers/imap/camel-imap-utils.c (imap_parse_list_response):
Update to unquote mailbox if it's quoted (allows us to get folders
with spaces in the name).
Dan Winship [Fri, 22 Sep 2000 18:44:07 +0000 (18:44 +0000)]
The root folder's name is "", not the namespace. (camel_imap_folder_new):
* 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.
Dan Winship [Thu, 21 Sep 2000 21:05:56 +0000 (21:05 +0000)]
New function to convert Camel flags to an IMAP flag_list.
* 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.
Dan Winship [Thu, 21 Sep 2000 19:40:20 +0000 (19:40 +0000)]
INBOX is case-insensitive. (get_root_folder_name): Make the root folder ""
* 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.
Jeffrey Stedfast [Tue, 19 Sep 2000 21:50:35 +0000 (21:50 +0000)]
ack, remove the ~ and object files
Jeffrey Stedfast [Tue, 19 Sep 2000 21:49:15 +0000 (21:49 +0000)]
Use the linewrap filter to achieve full RFC0821 compliance.
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.
Jeffrey Stedfast [Tue, 19 Sep 2000 19:11:15 +0000 (19:11 +0000)]
When encoding the internet address, quote the name as the name may have
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.
Dan Winship [Tue, 19 Sep 2000 18:56:26 +0000 (18:56 +0000)]
Fix the case where INBOX isn't returned in the folder listing.
* providers/imap/camel-imap-folder.c
(imap_get_subfolder_info_internal): Fix the case where INBOX
isn't returned in the folder listing.
Dan Winship [Tue, 19 Sep 2000 17:27:09 +0000 (17:27 +0000)]
Removed (camel_folder_init, camel_folder_construct): New object init
* 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.
Christopher James Lahey [Mon, 18 Sep 2000 03:42:58 +0000 (03:42 +0000)]
Added check for gnome-app-lib. Removed directories that have been moved to
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* configure.in: Added check for gnome-app-lib. Removed
directories that have been moved to gal.
From addressbook/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* backend/ebook/Makefile.am, contact-editor/Makefile.am,
ename/Makefile.am, gui/component/Makefile.am,
gui/widgets/Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
$(EXTRA_GNOME_LIBS). Removed unneeded libraries.
* backend/ebook/e-card.c, backend/pas/pas-backend-file.c,
contact-editor/e-contact-editor-address.c,
contact-editor/e-contact-editor-categories.c,
contact-editor/e-contact-editor-categories.h,
contact-editor/e-contact-editor-fullname.c,
contact-editor/e-contact-editor.c,
contact-editor/e-contact-save-as.c, ename/e-address-western.c,
ename/test-ename-western-gtk.c,
gui/component/addressbook-factory.c, gui/component/addressbook.c,
gui/component/e-cardlist-model.h, gui/component/e-ldap-storage.c,
gui/component/select-names/e-select-names-bonobo.c,
gui/component/select-names/e-select-names-manager.c,
gui/component/select-names/e-select-names-model.c,
gui/component/select-names/e-select-names-table-model.c,
gui/component/select-names/e-select-names-table-model.h,
gui/component/select-names/e-select-names-text-model.h,
gui/component/select-names/e-select-names.c,
gui/component/select-names/e-select-names.h,
gui/search/e-addressbook-search-dialog.c,
gui/widgets/e-addressbook-model.h,
gui/widgets/e-addressbook-view.c, gui/widgets/e-minicard-label.c,
gui/widgets/e-minicard-view-widget.c,
gui/widgets/e-minicard-view-widget.h,
gui/widgets/e-minicard-view.c, gui/widgets/e-minicard-view.h,
gui/widgets/e-minicard-widget.h, gui/widgets/e-minicard.c,
gui/widgets/test-minicard-label.c, gui/widgets/test-reflow.c,
printing/e-contact-print.c: Fixed the #include lines to deal
properly with gal.
From calendar/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* gui/Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
$(EXTRA_GNOME_LIBS). Removed unneeded libraries.
* gui/calendar-model.h, gui/e-calendar-table.c, gui/e-day-view.c,
gui/e-week-view-event-item.c, gui/e-week-view.c,
gui/event-editor.c, gui/gncal-todo.c, gui/gnome-cal.c, gui/main.c,
gui/print.c, gui/dialogs/task-editor.c: Fixed the #include lines
to deal properly with gal.
* gui/check-filled.xpm: New file since we can't include it from
e-table anymore.
From camel/ChangeLog:
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.
From composer/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
$(EXTRA_GNOME_LIBS). Removed unneeded libraries.
* e-msg-composer-address-dialog.c, e-msg-composer-address-entry.c,
e-msg-composer-attachment.c, e-msg-composer-hdrs.c,
e-msg-composer.c: Fixed the #include lines to deal properly with
gal.
From e-util/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Removed all the files moved to gal.
* e-dialog-widgets.c: Fixed the #include lines to deal properly
with gal.
* e-gui-utils.c, e-gui-utils.h: Removed all of the functionality
that was moved to gal.
* e-canvas-utils.c, e-canvas-utils.h, e-canvas-vbox.c,
e-canvas-vbox.h, e-canvas.c, e-canvas.h, e-cursors.c, e-cursors.h,
e-font.c, e-font.h, e-popup-menu.c, e-popup-menu.h, e-printable.c,
e-printable.h, e-unicode.c, e-unicode.h, e-util.c, e-util.h,
e-xml-utils.c, e-xml-utils.h: Moved to gal.
From filter/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* filter-editor.c, filter-filter.c, filter-folder.c,
filter-input.c, filter-message-search.c, filter-option.c,
filter-rule.c, score-editor.c, vfolder-editor.c, vfolder-rule.c:
Fixed the #include lines to deal properly with gal.
From mail/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
$(EXTRA_GNOME_LIBS). Removed unneeded libraries.
* component-factory.c, folder-browser-factory.c, folder-browser.c,
mail-callbacks.c, mail-config-gui.c, mail-display.c,
mail-display.h, main.c, message-list.c, message-list.h: Fixed the
#include lines to deal properly with gal.
From po/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* POTFILES.in: Removed files that have been moved to gal.
From shell/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
$(EXTRA_GNOME_LIBS). Removed unneeded libraries.
* e-component-registry.c, e-corba-storage-registry.c,
e-corba-storage.c, e-folder-type-registry.c, e-folder.c,
e-local-folder.c, e-local-storage.c,
e-shell-folder-creation-dialog.c,
e-shell-folder-selection-dialog.c, e-shell-folder-title-bar.c,
e-shell-view.c, e-shell.c, e-shortcuts-view.c, e-shortcuts.c,
e-storage-set-view.c, e-storage-set-view.h, e-storage-set.c,
e-storage.c, evolution-local-storage.c, evolution-session.c,
evolution-shell-client.c, evolution-shell-component-client.c,
evolution-shell-component.c, evolution-shell-view.c,
evolution-storage-listener.c, evolution-storage.c, main.c: Fixed
the #include lines to deal properly with gal.
From widgets/meeting-time-sel/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
$(EXTRA_GNOME_LIBS). Removed unneeded libraries.
* e-meeting-time-sel-list-item.c, e-meeting-time-sel.c,
e-meeting-time-sel.h: Fixed the #include lines to deal properly
with gal.
If you've read this far, you deserve a prize. The first email in my
mailbox with the subject "What a commit message!" (and your physical
mailing address somewhere in the message) will receive a free Helix
Code T-shirt mailed to anywhere within the continental United States.
I cannot be held responsible for problems with email systems anywhere.
This is supposed to be for fun, so please don't make a fuss if
something goes wrong and your mail doesn't reach me. Find my email
elsewhere in this message, and if it's been more than a few days,
you're probably too late.
From widgets/misc/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
$(EXTRA_GNOME_LIBS). Removed unneeded libraries.
* e-calendar-item.c, e-calendar.c, e-calendar.h, e-title-bar.c:
Fixed the #include lines to deal properly with gal.
* e-scroll-frame.c, e-scroll-frame.h: Moved to gal.
From widgets/shortcut-bar/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Added $(EXTRA_GNOME_CFLAGS) and
$(EXTRA_GNOME_LIBS). Removed unneeded libraries.
* e-icon-bar.c, e-icon-bar.h, e-shortcut-bar.c,
e-shortcut-model.c, test-shortcut-bar.c: Fixed the #include lines
to deal properly with gal.
From widgets/ChangeLog:
2000-09-18 Christopher James Lahey <clahey@helixcode.com>
* Makefile.am: Removed directories that have been moved to gal.
* e-paned/.cvsignore, e-paned/Makefile.am, e-paned/e-hpaned.c,
e-paned/e-hpaned.h, e-paned/e-paned.c, e-paned/e-paned.h,
e-paned/e-vpaned.c, e-paned/e-vpaned.h: Moved to gal.
* e-reflow/.cvsignore, e-reflow/Makefile.am,
e-reflow/e-reflow-sorted.c, e-reflow/e-reflow-sorted.h,
e-reflow/e-reflow.c, e-reflow/e-reflow.h: Moved to gal.
* e-table/.cvsignore, e-table/ChangeLog, e-table/LICENSE,
e-table/Makefile.am, e-table/ROADMAP.e-table, e-table/TODO,
e-table/add-col.xpm, e-table/arrow-down.xpm, e-table/arrow-up.xpm,
e-table/check-empty.xpm, e-table/check-filled.xpm,
e-table/clip.png, e-table/e-cell-checkbox.c,
e-table/e-cell-checkbox.h, e-table/e-cell-string.c,
e-table/e-cell-text.c, e-table/e-cell-text.h,
e-table/e-cell-toggle.c, e-table/e-cell-toggle.h,
e-table/e-cell-tree.c, e-table/e-cell-tree.h, e-table/e-cell.c,
e-table/e-cell.h, e-table/e-table-click-to-add.c,
e-table/e-table-click-to-add.h, e-table/e-table-col-dnd.h,
e-table/e-table-col.c, e-table/e-table-col.h,
e-table/e-table-column-model.h, e-table/e-table-column.c,
e-table/e-table-config.c, e-table/e-table-config.glade,
e-table/e-table-config.glade.h, e-table/e-table-config.h,
e-table/e-table-defines.h, e-table/e-table-example-1.c,
e-table/e-table-example-2.c,
e-table/e-table-field-chooser-dialog.c,
e-table/e-table-field-chooser-dialog.h,
e-table/e-table-field-chooser-item.c,
e-table/e-table-field-chooser-item.h,
e-table/e-table-field-chooser.c,
e-table/e-table-field-chooser.glade,
e-table/e-table-field-chooser.glade.h,
e-table/e-table-field-chooser.h,
e-table/e-table-group-container.c,
e-table/e-table-group-container.h, e-table/e-table-group-leaf.c,
e-table/e-table-group-leaf.h, e-table/e-table-group.c,
e-table/e-table-group.glade, e-table/e-table-group.glade.h,
e-table/e-table-group.h, e-table/e-table-header-item.c,
e-table/e-table-header-item.h, e-table/e-table-header.c,
e-table/e-table-header.h, e-table/e-table-item.c,
e-table/e-table-item.h, e-table/e-table-model.c,
e-table/e-table-model.h, e-table/e-table-one.c,
e-table/e-table-one.h, e-table/e-table-scrolled.c,
e-table/e-table-scrolled.h, e-table/e-table-selection-model.c,
e-table/e-table-selection-model.h, e-table/e-table-simple.c,
e-table/e-table-simple.h, e-table/e-table-size-test.c,
e-table/e-table-sort-info.c, e-table/e-table-sort-info.h,
e-table/e-table-sorted-variable.c,
e-table/e-table-sorted-variable.h, e-table/e-table-sorted.c,
e-table/e-table-sorted.h, e-table/e-table-sorter.c,
e-table/e-table-sorter.h, e-table/e-table-subset-variable.c,
e-table/e-table-subset-variable.h, e-table/e-table-subset.c,
e-table/e-table-subset.h, e-table/e-table-text-model.c,
e-table/e-table-text-model.h, e-table/e-table-tooltip.h,
e-table/e-table-tree.h, e-table/e-table.c, e-table/e-table.h,
e-table/e-tree-example-1.c, e-table/e-tree-example-2.c,
e-table/e-tree-model.c, e-table/e-tree-model.h,
e-table/e-tree-simple.c, e-table/e-tree-simple.h,
e-table/image1.png, e-table/image2.png, e-table/image3.png,
e-table/remove-col.xpm, e-table/sample.table,
e-table/table-test.c, e-table/table-test.h, e-table/test-check.c,
e-table/test-cols.c, e-table/test-table.c: Moved to gal.
* e-text/.cvsignore, e-text/Makefile.am, e-text/e-entry-test.c,
e-text/e-entry.c, e-text/e-entry.h,
e-text/e-text-event-processor-emacs-like.c,
e-text/e-text-event-processor-emacs-like.h,
e-text/e-text-event-processor-types.h,
e-text/e-text-event-processor.c, e-text/e-text-event-processor.h,
e-text/e-text-model.c, e-text/e-text-model.h,
e-text/e-text-test.c, e-text/e-text.c, e-text/e-text.h: Moved to
gal.
i.e.,
...
changed evolution to work with gal.
Dan Winship [Sun, 17 Sep 2000 17:13:57 +0000 (17:13 +0000)]
update CamelFolderInfo New function to free the contents of a
* camel-folder-summary.h: update CamelFolderInfo
* camel-folder-summary.c (camel_folder_info_free): New function to
free the contents of a CamelFolderInfo
Dan Winship [Fri, 15 Sep 2000 18:26:36 +0000 (18:26 +0000)]
Set camel_verbose_debug to TRUE if CAMEL_VERBOSE_DEBUG is set in the
* 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.
Jeffrey Stedfast [Thu, 14 Sep 2000 23:06:03 +0000 (23:06 +0000)]
Don't use dir_sep as top-level directory, use "/".
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.
Dan Winship [Thu, 14 Sep 2000 17:51:34 +0000 (17:51 +0000)]
Don't look at the response of the command. camel_imap_command_extended()
* 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.
Jeffrey Stedfast [Wed, 13 Sep 2000 22:13:09 +0000 (22:13 +0000)]
Rewrote to take a third argument (gboolean *selectable) so that we can
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.
Jeffrey Stedfast [Wed, 13 Sep 2000 01:42:12 +0000 (01:42 +0000)]
Make sure *datalength is > 0 before calling camel_mime_filter_filter
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().
Peter Teichman [Tue, 12 Sep 2000 19:09:28 +0000 (19:09 +0000)]
fixes to make this beast distcheck
Christopher James Lahey [Fri, 8 Sep 2000 16:46:55 +0000 (16:46 +0000)]
Fixed a warning.
2000-09-08 Christopher James Lahey <clahey@helixcode.com>
* providers/nntp/camel-nntp-auth.c,
providers/nntp/camel-nntp-auth.h: Fixed a warning.
Dan Winship [Thu, 7 Sep 2000 21:00:56 +0000 (21:00 +0000)]
Make this not leak.
* camel-session.c (camel_session_get_storage_path): Make this not
leak.