| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_refresh_info): If the
folder is frozen, don't refresh, just record that we need to do it
later.
(imap_append_online): If the APPEND doesn't trigger an immediate
EXISTS response (because the folder isn't the selected folder, or
because the server doesn't do that until the next command), call
imap_refresh_info on the folder.
(imap_copy_online): Likewise. (Replacing the unconditional NOOP
that was there before, which absolutely killed filter performance
by forcing the IMAP provider to switch back and forth between
folders after every copy or move.)
(imap_thaw): If the folder needs a refresh, do it.
* camel-folder.c (camel_folder_is_frozen): New method
svn path=/trunk/; revision=10565
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (camel_imap_folder_selected,
imap_append_offline, imap_append_online,
camel_imap_folder_changed): lock the cache around accesses
* providers/imap/camel-imap-store.c (get_folder_online): ref the
newly-created folder (as current_folder) before calling
camel_imap_folder_selected, in case that needs to do something
that causes another folder to become current...
svn path=/trunk/; revision=10509
|
|
|
|
|
|
|
|
|
|
| |
2001-06-25 Jeffrey Stedfast <fejj@ximian.com>
* camel-filter-search.c (get_source): g_strdup() the message
source here or we will have problems later when we go to free the
result ;-)
svn path=/trunk/; revision=10498
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (try_auth): Fix this: IMAP
doesn't allow an extra argument to AUTHENTICATE to avoid a useless
round trip like some other SASL bindings do.
* providers/imap/camel-imap-command.c (imap_read_response): Deal
with IMAP servers that (incorrectly) return "+\r\n" rather than
"+ \r\n" for an empty continuation response.
(camel_imap_response_extract_continuation): Likewise.
svn path=/trunk/; revision=10480
|
|
|
|
|
|
| |
helixcode.com with ximian.com all over the place.
svn path=/trunk/; revision=10440
|
|
|
|
|
|
|
|
|
|
| |
2001-06-21 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_send): Use
camel_address_length() rather than casting and accessing data
members.
svn path=/trunk/; revision=10365
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-06-18 Not Zed <NotZed@Ximian.com>
* camel-folder-summary.c
(camel_folder_summary_info_new_from_parser): Only create a missing
uid if we have indexing turned on.
* camel-lock-helper.c (setup_process): Function to setup
process/sanity/security checks. Change to the real uid as soon as
we can.
(lock_path): First try to lock as the real uid, if that fails, try
the root uid.
(unlock_id): Unlock as the uid we created the lock as.
* Makefile.am (INCLUDES): Added -DCAMEL_SBINDIR for lock helper
location.
* providers/local/camel-spool-folder.c (spool_lock): Implemented,
using lock helper locking. Need to work out if the locking
requires a root created lock?
(spool_unlock): Likewise.
2001-06-15 Not Zed <NotZed@Ximian.com>
* camel-lock-helper.c: Setuid Lock helper process. Creates and manages
.locks, keeping them active, removing them, etc. What real perms it
needs is a little system dependent.
2001-06-14 Not Zed <NotZed@Ximian.com>
* providers/local/camel-maildir-store.c (get_folder_info): Implement.
(scan_dir): Does the work of scanning for maildir directories.
2001-06-13 Not Zed <NotZed@Ximian.com>
* providers/local/camel-spool-store.c (get_folder_info):
Implemented, just returns a hardcoded INBOX folder.
(free_folder_info): implemented, free's the 1 possible level of
folder info.
* providers/local/camel-spool-folder.c
(camel_spool_folder_construct): Set the real unread message
count on the folder_created thing.
svn path=/trunk/; revision=10261
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-message-cache.c
(camel_imap_message_cache_max_uid): Return the largest real UID in
the cache (as an integer). Eventually to be used for an
optimization in the new-message fetch code.
(cache_put): Keep track of max_uid.
svn path=/trunk/; revision=10254
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-06-12 Not Zed <NotZed@Ximian.com>
* providers/local/camel-spool-*.[ch]: A new provider, for spool
mailboxes. Mostly a cut and paste of the mbox code, but not a
subclass CamelLocal*. Not tested a lot, doesn't lock yet, use
with extreme caution.
* tests/lib/folders.c (test_folder_message_ops): Added spool arg,
spool folders can't be deleted, renamed, etc.
(test_folder_basic): Same.
* tests/folder/test2.c (main): Added checks for spool type.
* tests/[message|stream|folder|misc|smime]/Makefile.am (LDADD):
Added db3 flags, so make check compiles, doesn't run though.
2001-05-24 Not Zed <NotZed@Ximian.com>
* providers/local/camel-local-provider.c
(camel_provider_module_init): Added spool provider.
svn path=/trunk/; revision=10198
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_rescan): Don't fetch
the UID and FLAGS of messages we don't know about yet, since
they'll just get discarded.
svn path=/trunk/; revision=10132
|
|
|
|
| |
svn path=/trunk/; revision=10042
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (imap_connect_online,
imap_connect_offline): Create a CamelDiscoDiary.
(imap_disconnect_offline): And free it.
* providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
If RESYNCING, don't do any sort of checking that the remote folder
matches the summary, beyond making sure that the UIDVALIDITY is
correct.
(imap_rescan): Add a missing camel_folder_summary_info_free when
removing a UID from the summary.
(imap_expunge_uids_offline): Implement. Fairly simple.
(imap_expunge_uids_resyncing): Implement. If the store supports
UIDPLUS, we can just use imap_expunge_uids_online. If not, we need
to temporarily undelete any messages marked deleted on the server
that aren't supposed to get expunged.
(imap_append_offline): Implement, using cache and summary
operations, and triggering the folder_changed event by hand.
(imap_append_resyncing): Implement. Redo imap_append_online a bit
in the process to make them able to share more code.
(imap_copy_offline): Implement.
(imap_copy_online): Move parts of this out into a helper.
(imap_copy_resyncing): Implement. In most cases this is just like
imap_copy_online, but if you are copying a message that was itself
copied or appended into the folder, and the server doesn't do
UIDPLUS, it will be necessary to replace at least part of the copy
operation with one or more appends.
* providers/imap/camel-imap-command.c (imap_read_response): Don't
record the current folder in the response when in RESYNCING mode.
(This means that EXISTS and EXPUNGE responses won't be processed,
which is needed because the summary may not match the folder at
this point.)
(imap_read_response): On error, call
camel_imap_response_free_without_processing, not
camel_imap_response_free.
* providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Make
this work better when operating on UIDs that aren't in the summary.
* providers/imap/camel-imap-summary.c
(camel_imap_summary_add_offline): New routine used by
imap_append_offline and imap_copy_offline to create new summary
entries.
svn path=/trunk/; revision=10041
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c: Add a "need_rescan" flag
saying if we want to rescan the entire folder for flag changes
next time it's selected.
(camel_imap_folder_init): Set need_rescan TRUE.
(camel_imap_folder_selected): If need_rescan is TRUE, call
imap_rescan.
(imap_refresh_info): Only do a full rescan if need_rescan is TRUE.
Otherwise just do a NOOP, making this a MUCH more lightweight
operation. Also, don't call imap_rescan directly if the folder
isn't selected, since that could end up causing the folder to be
scanned *twice* (imap_rescan -> camel_imap_command ->
camel_imap_folder_selected -> imap_rescan).
(imap_rescan): Set need_rescan FALSE.
(imap_sync_online): Don't NOOP if no changes were pushed: the
caller will call refresh_info if it wants to poll for changes.
Fixes evolution-mail doing lots of unnecessary extra work at
quit time.
svn path=/trunk/; revision=10010
|
|
|
|
|
|
|
|
|
|
| |
2001-05-25 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_auth): Oops. Use a
strNcmp to make sure the response begins with a 334 code, not a
strcmp. Duh.
svn path=/trunk/; revision=10004
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-05-25 Jeffrey Stedfast <fejj@ximian.com>
* providers/local/camel-maildir-folder.c (maildir_append_message):
remove the summary info so we are not out-of-sync with the maildir
folder.
* providers/local/camel-mh-folder.c (mh_append_message): remove
the summary info so we are not out-of-sync with the mh folder.
* providers/local/camel-mbox-folder.c (mbox_append_message):
remove the summary info so we are not out-of-sync with the mbox.
svn path=/trunk/; revision=9996
|
|
|
|
|
|
|
|
|
|
| |
2001-05-23 Jeffrey Stedfast <fejj@ximian.com>
* providers/local/camel-local-folder.c
(camel_local_folder_construct): s/folder_deleted/folder_created -
result of a bad copy/paste.
svn path=/trunk/; revision=9957
|
|
|
|
|
|
|
|
|
| |
2001-05-23 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-search.c (imap_body_contains):
Optimize the match "" case.
svn path=/trunk/; revision=9955
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-05-21 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (get_folder_info_online):
Store the CamelFolderInfo tree that was returned from
camel_folder_info_build() in a new variable, 'tree', rather than
'fi' since we later use 'fi' when syncing folders. Not only does
this fix a memory leak, but it also fixes the bug where the user
would only see the last folder in the folder list and/or it's
subfolders.
svn path=/trunk/; revision=9911
|
|
|
|
|
|
|
|
|
|
|
| |
2001-05-11 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_auth): Don't check
the initial auth response until we get into the while-loop
otherwise we have problems if the SASL mechanism supported a
client initiated challenge (like PLAIN and LOGIN do).
svn path=/trunk/; revision=9771
|
|
|
|
|
|
|
|
|
|
| |
2001-05-09 Peter Williams <peterw@ximian.com>
* providers/imap/camel-imap-folder.c (imap_move_messages_to): Pass
appropriate parameters to CF_CLASS and add comment explaining why
my initial attempt at a solution didn't work.
svn path=/trunk/; revision=9742
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-disco-store.c (camel_disco_set_status): Set the
disconnected status.
(camel_disco_store_can_work_offline): Return whether or not a
given CamelDiscoStore can work offline or not.
* camel-disco-folder.c (camel_disco_folder_cache_message):
Explicitly tell a folder to cache a message. (Better than using
get_message, because for IMAP that doesn't guarantee you'll get
all the message parts.)
(camel_disco_folder_prepare_for_offline): Prepare a folder for
offline use by caching all messages meeting given search criteria
(and doing anything else the particular folder implementation
needs).
* camel-session.c (camel_session_set_online,
camel_session_is_online): A session-wide online/offline toggle.
(camel_session_init): Set online to TRUE.
* providers/imap/camel-imap-store.c (can_work_offline):
Implementation of CamelDiscoStore::can_work_offline. (Checks that
the store has been used online at least once.)
(imap_get_folder_online, imap_get_folder_offline): Deal with
request for "inbox" properly. ("Don't you mean... 'INBOX'?").
* providers/imap/camel-imap-folder.c (imap_cache_message):
Implementation of CamelDiscoFolder::cache_message.
* camel.h: Add camel-disco-store.h and camel-disco-folder.h
svn path=/trunk/; revision=9738
|
|
|
|
| |
svn path=/trunk/; revision=9737
|
|
|
|
|
|
|
|
|
| |
2001-05-09 Jeffrey Stedfast <fejj@ximian.com>
* camel-mime-part.c (camel_mime_part_set_content_id): Wrap the
content-id with <>'s.
svn path=/trunk/; revision=9734
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-05-04 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (connect_to_server): Add
support for using OpenSSL.
* camel-remote-store.c (remote_connect): Add support for using the
OpenSSL implementation.
* camel-tcp-stream-ssl.c (ssl_bad_cert): Hmmmm, don't pass in a
NULL as the last argument to alert_user - prototype doesn't take
that argument anymore?
* camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_finalize):
(ssl_verify): Use a global hash table to try and lookup the
CamelTcpStreamOpenSSL object given the ssl context since OpenSSL
doesn't think one needs to pass data around, we should all be
living in a world of global variables, duh!
svn path=/trunk/; revision=9697
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (get_folder_online): Fix up
refcounting on current_folder.
* camel-disco-folder.c, camel-disco-store.h: Remove
CamelDiscoDiary refs that weren't supposed to escape yet.
svn path=/trunk/; revision=9667
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-disco-store.c: new abstract class for disconnectable
remote stores
* camel-disco-folder.c: new abstract class for folders on
disconnectable stores.
* Makefile.am: Add camel-disco-folder.[ch] and
camel-disco-store.[ch].
* providers/imap/camel-imap-store.c: Make this a subclass of
CamelDiscoStore, and fix up the offline interfaces for the changes
since they were first written (particularly the fact that some
IMAP stores don't just use subscribed folders).
* providers/imap/camel-imap-folder.c: Make this a subclass of
CamelDiscoFolder, although most ops still fail in disconnected
mode.
* camel-store.c (camel_store_get_folder_info): Change gboolean,
gboolean, gboolean to guint32 in the prototype for this function.
* providers/local/camel-local-store.c (get_folder_info): Update
for prototype change.
svn path=/trunk/; revision=9659
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.h: Clean this up a bit. Add a
"tag_prefix" member. Move "useful_lsub" into capabilities.
* providers/imap/camel-imap-store.c (camel_imap_store_init):
Initialize the tag_prefix, based on a static variable.
* providers/imap/camel-imap-command.c (camel_imap_command): Use
the store's tag_prefix character rather than "A" at the start of
the tag. Makes the verbose debug output easier to parse when
connected to multiple IMAP servers. (Well, unless you're connected
to more than 26 servers...)
svn path=/trunk/; revision=9649
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-utils.c (imap_uid_array_to_set): Fix
this up... it was losing count in some cases and giving a more
verbose answer than it needed to.
svn path=/trunk/; revision=9644
|
|
|
|
|
|
|
| |
* providers/pop3/camel-pop3-store.c: Rescue the KPOP code from bit
rot.
svn path=/trunk/; revision=9643
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-command.c (camel_imap_command): Redo
command locking. Since command_lock is recursive, we can just get
a lock here, and release it either on error, or when the caller
frees the response data. (This simplifies a lot of stuff, and
fixes some problems with camel_imap_folder_changed being called
without the command_lock locked because of the 2001-03-22 change.)
(camel_imap_response_free):
(camel_imap_response_free_without_processing):
(camel_imap_response_extract):
(camel_imap_response_extract_continuation): These all take a
CamelImapStore now as well, to deal with locking.
* providers/imap/camel-imap-private.h: Add
CAMEL_IMAP_STORE_ASSERT_LOCKED, which defaults to a noop, but can
be made to call e_mutex_assert_locked.
* providers/imap/camel-imap-folder.c, camel-imap-search.c,
camel-imap-store.c: Simplify using new locking stuff. Add a few
CAMEL_IMAP_STORE_ASSERT_LOCKED checks.
svn path=/trunk/; revision=9639
|
|
|
|
| |
svn path=/trunk/; revision=9636
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
resync after disconnected operation more efficiently, but also
makes it possible to do appends and moves/copies more efficiently
now.
* providers/imap/camel-imap-folder.c (imap_append_message): If the
server supports UIDPLUS, grab the APPENDUID response and cache the
message into the folder's message cache.
(imap_copy_messages_to): Likewise, for COPYUID, copy any message
parts we have cached between the source and destination folder
caches.
(imap_get_message): If the entire message is already in the cache,
just return that rather than building it from parts.
(imap_update_summary): Fetch just the "UID FLAGS RFC822.SIZE" of
the new messages first, then only fetch the headers for messages
where we don't already have the headers cached.
* providers/imap/camel-imap-message-cache.c: Add gtk-doc comments.
(cache_put): Fix refcounting stuff here.
(camel_imap_message_cache_insert_stream,
camel_imap_message_cache_insert_wrapper): New.
(camel_imap_message_cache_get): Fix a bug here so the memory
caching actually works.
(camel_imap_message_cache_copy): New routine, used by
imap_copy_messages_to.
* providers/imap/camel-imap-utils.c (imap_uid_set_to_array):
Inverse operation of imap_uid_array_to_set. Used to parse COPYUID
response.
svn path=/trunk/; revision=9635
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-utils.c (imap_uid_array_to_set):
New-and-improved version of get_uid_set() from
camel-imap-folder.c. Looks at the summary as it goes so that if
you ask for messages 5, 6, 8, and 9, and there is no message 7,
then you get "5:9" instead of "5:6,8:9"
* providers/imap/camel-imap-folder.c (imap_copy_messages_to): Use
imap_uid_array_to_set() rather than get_uid_set().
(get_uid_set): Gone
svn path=/trunk/; revision=9632
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-session.c: Redo this a lot so that instead of having a
class full of callbacks, we have a subclassable class. Also,
replace the increasingly horrifying
camel_session_query_authenticator with three new routines,
camel_session_get_password, camel_session_forget_password, and
camel_session_alert_user.
* camel-pgp-context.c:
* camel-pkcs7-context.c:
* camel-smime-context.c:
* providers/imap/camel-imap-store.c:
* providers/pop3/camel-pop3-store.c:
* providers/smtp/camel-smtp-transport.c:
Use camel_session_get_password / camel_session_forget_password.
* camel-tcp-stream-ssl.c (ssl_bad_cert): Use
camel_session_alert_user.
svn path=/trunk/; revision=9617
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-file-utils.c: New file, with the int, string, time_t, and
off_t encode/decode routines from camel-folder-summary.c moved
here and renamed, for the enjoyment of non-CamelFolderSummary
subclasses.
* Makefile.am (libcamel_la_SOURCES): Add camel-file-utils.c
(libcamelinclude_HEADERS): and camel-file-utils.h
* camel-folder-summary.c: Remove functions that were moved to
camel-file-utils.c, update uses of them for the new names.
(camel_folder_summary_{en,de}code_token are still here.)
* providers/local/camel-mbox-summary.c: Use camel_file_util_*
names
* providers/imap/camel-imap-summary.c: Use camel_file_util_* names
* providers/imap/camel-imap-store.c (imap_store_setup_online,
imap_store_setup_offline): Use camel_file_util_* names, which
makes much more sense since this isn't folder summary stuff.
svn path=/trunk/; revision=9590
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile.am (INCLUDES): Remove UNICODE_CFLAGS (and some other
stuff that's redundant with EXTRA_GNOME_CFLAGS)
(libcamel_la_LIBADD): Replace UNICODE_LIBS with GAL_LIBS.
* camel-search-private.c:
* camel-pgp-context.c:
* camel-mime-utils.c: Use gunicode interfaces rather than
libunicode.
* camel-charset-map.c: Use gunicode rather than libunicode. (The
charmap-regen code still depends on libunicode though.)
* camel-mime-filter-charset.h:
* tests/message/test2.c (convert): Use iconv rather than
unicode_iconv.
* providers/smtp/Makefile.am (libcamelsmtp_la_LIBADD):
* providers/pop3/Makefile.am (libcamelpop3_la_LIBADD):
* providers/local/Makefile.am (libcamellocal_la_LIBADD): Remove
UNICODE_LIBS.
* camel.c (camel_init): Remove call to unicode_init.
* camel-mime-parser.c: Remove unused unicode.h include.
svn path=/trunk/; revision=9585
|
|
|
|
|
|
|
|
| |
2001-04-26 Not Zed <NotZed@Ximian.com>
* Applied jacob's patches for e-poolv stuff.
svn path=/trunk/; revision=9571
|
|
|
|
|
|
|
|
|
| |
2001-04-23 Mikael Hallendal <micke@codefactory.se>
* providers/nntp/Makefile.am (INCLUDES):
Changed GTK_INCLUDEDIR to EXTRA_GNOME_CFLAGS.
svn path=/trunk/; revision=9494
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (camel_imap_store_finalize):
Free base_url and storage_path.
* providers/pop3/camel-pop3-store.c (finalize): Free the
implementation string.
(camel_pop3_command): Clarify documentation to mention that
@ex isn't set (and *@ret is) on CAMEL_POP3_ERR.
(connect_to_server): Set @ex properly on CAMEL_POP3_ERR.
* providers/pop3/camel-pop3-folder.c (pop3_refresh_info,
pop3_get_message): Set @ex properly on CAMEL_POP3_ERR.
svn path=/trunk/; revision=9450
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-04-16 Jeffrey Stedfast <fejj@ximian.com>
* providers/local/camel-mbox-summary.c (summary_rebuild): Don't we
want to tell where we are by using the start of the message? I
think this should be using camel_mime_parser_tell_start_from()
instead. Also divide by the size *before* multiplying by 100 so
that we don't overflow the int which was giving us negative values
for our progress status (oops).
svn path=/trunk/; revision=9394
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-04-16 Jeffrey Stedfast <fejj@ximian.com>
* Makefile.am: Remove the EXTRA_GNOME_CFLAGS include.
* camel-store.c (camel_mkdir_hier): Convenience function that it
seems a number of camel-store implementations used gal for.
* providers/nntp/camel-nntp-store.c (ensure_news_dir_exists): Lets
not depend on gal for just e_mkdir_hier() - use camel_mkdir_hier()
instead.
* providers/nntp/camel-imap-store.c: Lets not depend on gal for
just e_mkdir_hier() - use camel_mkdir_hier() instead.
* camel-session.c (camel_session_get_storage_path): Don't depend
on e_mkdir_heir() anymore, use the CamelStore version.
* camel-folder-search.h: Removed gal dependency, why was this even
there in the first place?
* providers/imap/camel-imap-folder.c: Don't need gal/util/e-util.h
here, so remove it.
* string-utils.c (strstrcase): New function, well more like old
function brought back to life so we don't have to depend on gal.
* providers/imap/camel-imap-store.c (imap_store_setup_online): Use
strstrcase rather than e_strstrcase so we don't depend on gal.
(get_unread_online): Same here.
* providers/smtp/camel-smtp-transport.c (smtp_helo): Use
strstrcase.
svn path=/trunk/; revision=9383
|
|
|
|
|
|
|
|
|
|
| |
2001-04-13 Jon Trowbridge <trow@ximian.com>
* providers/imap/camel-imap-store.c (imap_disconnect):
s/imap_store/store/, fixing a typo that was causing the build to
fail.
svn path=/trunk/; revision=9306
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-object.c (camel_object_hook_event):
* camel-uid-cache.c (camel_uid_cache_get_new_uids):
* camel-url.c (camel_url_new_with_base): Plug leaks.
* camel-remote-store.c (camel_remote_store_init): Don't
re-initialize the folders hash table.
* providers/imap/camel-imap-store.c (imap_disconnect): Free
authtypes since they'll be re-read on re-connect.
(get_folder_info): Free folderinfos that we're discarding from the
list.
svn path=/trunk/; revision=9302
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-message-cache.c
(camel_imap_message_cache_remove):
* camel-url.c (camel_url_to_string): Plug memory leaks.
svn path=/trunk/; revision=9271
|
|
|
|
| |
svn path=/trunk/; revision=9265
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-utils.c (imap_parse_string_generic):
Simplify peterw's imap_is_atom_char fix.
svn path=/trunk/; revision=9250
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-04-11 JP Rosevear <jpr@ximian.com>
* configure.in: Check if gethostbyname_r take five params
* acconfig.h: add GETHOSTBYNAME_R_FIVE_ARGS
2001-04-11 JP Rosevear <jpr@ximian.com>
* providers/imap/Makefile.am: user GNOME_INCLUDEDIR since gnome
files are included in the top level camel headers and the gtk
include dir is now versioned and such
* providers/local/Makefile.am: ditto
* providers/pop3/Makefile.am: ditto
* providers/smtp/Makefile.am: ditto
* providers/sendmail/Makefile.am: ditto
* camel-service.c: use five arg version of gethostbyname_r if
appropriate
(camel_get_host_byname): check if msg->herr is non-zero instead of
checking if msg->hp is null since we may not always have msg->hp
svn path=/trunk/; revision=9239
|
|
|
|
|
|
|
|
|
|
|
| |
001-04-07 Peter Williams <peterw@ximian.com>
* providers/imap/camel-imap-utils.c (imap_parse_string_generic): It
would be a good idea to recognize '\0'. Before, this code was running
off the ends of strings and intermittently coredumping (if it didn't
hit an imap_atom_char first) -- whoops!
svn path=/trunk/; revision=9202
|
|
|
|
|
|
|
|
| |
2001-04-05 Not Zed <NotZed@Ximian.com>
* merge from evolution-0-10-branch to evolution-0-10-merge-0
svn path=/trunk/; revision=9194
|
|
|
|
|
|
|
|
| |
server_flags field as well, and don't overwrite any flags set by
camel_folder_summary_info_new_from_message. Might help with some
of the flag problems...
svn path=/trunk/; revision=9149
|
|
|
|
|
|
|
| |
messages all-at-once, since they don't support the [#.MIME]
syntax.
svn path=/trunk/; revision=9145
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_sync): If we don't
change any flags or expunge, send a NOOP to give the server a
chance to send EXISTS, etc, messages.
svn path=/trunk/; revision=9142
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-service.h: Remove the "quick_login" member, which is
unnecessary.
* providers/smtp/camel-smtp-transport.c (smtp_auth): Remove the
references to quick_login and fix this to use the CamelSasl
interfaces correctly to do the same thing.
(connect_to_server): Split this out of smtp_connect
(smtp_connect): Use connect_to_server. When re-EHLO'ing after
auth, ignore errors.
(query_auth_types): Use connect_to_server rather than
smtp_connect, so it doesn't try to authenticate. Add LOGIN
authtype to the list of authtypes to check for.
* providers/smtp/camel-smtp-provider.c
(camel_provider_module_init): Add LOGIN authtype to the authtypes
list explicitly.
* camel-sasl.c (camel_sasl_authtype_list): Don't list LOGIN here:
it's not a real SASL authtype and is only used for SMTP.
* camel-sasl-plain.c:
* camel-sasl-login.c:
* camel-sasl-kerberos4.c:
* camel-sasl-cram-md5.c:
* camel-sasl-anonymous.c:
* providers/pop3/camel-pop3-provider.c: Remove "quick_login"
argument from authtypes.
svn path=/trunk/; revision=9100
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
* camel-sasl-login.[c,h]: New files to handle the LOGIN SASL
mechanism.
* camel-sasl-plain.c: Removed the definition of
camel_sasl_login_authtype.
* camel-sasl.c (camel_sasl_new): Oops. I thought LOGIN was an
alias to PLAIN. I was wrong. These two SASL objects have to be
separate.
* providers/smtp/camel-smtp-transport.c (smtp_auth): Updated to
check for and use authmech->quick_login when available.
svn path=/trunk/; revision=9088
|
|
|
|
|
|
|
|
|
| |
2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-provider.c: Updated the authtypes here
too.
svn path=/trunk/; revision=9087
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-04-01 Jeffrey Stedfast <fejj@ximian.com>
* camel-sasl-plain.c:
* camel-sasl-anonymous.c:
* camel-sasl-digest-md5.c:
* camel-sasl-cram-md5.c:
* camel-sasl-kerberos4.c: Updated the authtype values.
* camel-service.h: Added another field to CamelServiceAuthType
that specifies whether or not the mechanism supports "quick auth"
which means that the client can send the initial challenge in the
AUTH request.
* camel-sasl.c (camel_sasl_new): Add support for LOGIN.
(camel_sasl_authtype_list): Here too.
(camel_sasl_authtype): And finally here.
* camel-sasl-plain.c: Define camel_sasl_login_authtype.
* providers/smtp/camel-smtp-transport.c (smtp_auth): Only unref
the SASL object if it exists.
svn path=/trunk/; revision=9086
|
|
|
|
|
|
|
|
|
| |
* providers/pop3/camel-pop3-store.c (connect_to_server,
query_auth_types, pop3_connect): Move things around here to make
this all work right again (so you don't get prompted for a
password when checking the supported authtypes.)
svn path=/trunk/; revision=9056
|
|
|
|
| |
svn path=/trunk/; revision=9037
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-29 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (get_folder_info): Don't
blindly append "/INBOX", construct a CamelURL and set the path
that way.
(parse_list_response_as_folder_info): Don't blindly append
"/<foldername>", construct a CamelURL and set the path that way
instead.
(get_folders_offline): And again here.
svn path=/trunk/; revision=9036
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-29 Not Zed <NotZed@Ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_connect): Free host
name info when done ... blah blah.
* camel-sasl-kerberos4.c (krb4_challenge): Free host name info
after we're done with it.
* camel-sasl-digest-md5.c (digest_md5_challenge): Free host name
info after we're done with it.
* camel-remote-store.c (remote_connect): Free the host name info
from get_host after we're finished with it.
* camel-service.c (camel_get_host_byname): New function to
lookup a name, and still be cancellable.
(camel_free_host): And a function to free the structure
returned.
(camel_service_gethost): Call get_host_byname for this.
svn path=/trunk/; revision=9033
|
|
|
|
| |
svn path=/trunk/; revision=9024
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-url.c (camel_url_to_string): change "gboolean show_passwd"
to "guint32 flags".
* tests/misc/url.c (main): Update calls to camel_url_to_string
* providers/imap/camel-imap-store.c (construct): Call
camel_url_to_string with flags to hide password, authtype, and
params to create the base_url.
(etc): Update for the fact that the base_url no longer has the "/"
at the end.
* camel-service.c (construct): Update calls to camel_url_to_string
(pass CAMEL_URL_HIDE_PASSWORD)
svn path=/trunk/; revision=9014
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-27 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-folder.c (pop3_sync): If we aren't
going to even check the resp/free buffer that gets returned from
camel_pop3_command, don't even bother using it. Send in NULL
instead.
(pop3_get_message): Check to make sure that the `result' string is
non-NULL. It's possible that some POP servers may return with
"+OK\r\n<message>..." rather than the expected
"+OK ### octets\r\n<message>..."
svn path=/trunk/; revision=8985
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-sasl.c (camel_sasl_authtype_list): add an argument to say
whether or not you want "PLAIN" in the list (so you don't end up
with "Password" twice in the config dialog).
* providers/imap/camel-imap-provider.c (camel_provider_module_init):
* providers/imap/camel-imap-store.c (query_auth_types): We don't
want PLAIN.
* providers/smtp/camel-smtp-provider.c (camel_provider_module_init):
* providers/smtp/camel-smtp-transport.c (query_auth_types): But we
do.
svn path=/trunk/; revision=8972
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-provider.h: Add an "extra_conf" field to CamelProvider
with structures and defines and stuff, for providers to specify
additional configuration options that they want. Also add a
"supports ssl" flag to the provider flags.
* camel-remote-store.c: add a "default_ssl_port" field.
(remote_construct): If the URL has the "use_ssl" parameter, set
the store's use_ssl flag.
(remote_connect): If using SSL and no port specified, use the
default_ssl_port rather than the default_port.
* providers/smtp/camel-smtp-provider.c (smtp_provider): add
CAMEL_PROVIDER_SUPPORTS_SSL and CAMEL_URL_ALLOW_USER. (The config
gui code knows that the ALLOW_USER and ALLOW_AUTH go together.)
(ssmtp_provider): gone
* providers/smtp/camel-smtp-transport.c (smtp_construct): Set a
flag if "use_ssl" param is set.
(smtp_connect): Check the CamelSmtpTransport use_ssl flag rather
than checking if this is smtp or ssmtp.
* providers/imap/camel-imap-provider.c (imap_conf_entries): Add a
bunch of IMAP-specific configuration options, like "check for new
mail in all folders" (default TRUE), "show only subscribed
folders" (default TRUE), "ignore server-supplied namespace", and
"apply filters to INBOX" (not yet implemented).
(imap_provider): We support SSL and we no longer allow a path in
the URL. (namespace is handled via extra_conf)
(simap_provider): Gone
* providers/imap/camel-imap-store.c (camel_imap_store_init): Set
default_ssl_port, don't set CAMEL_STORE_SUBSCRIPTIONS here
(construct): remove simap stuff, deal with "use_lsub",
"namespace", "check_all", and "filter" parameters. Set base_url
to not include params.
(imap_store_setup_online): Don't ask for the namespace if it was
set explicitly. Don't get subscribed folders if !use_lsub.
(imap_concat): Fix a bug.
(get_folder_info): Support for not checking all folders.
* providers/pop3/camel-pop3-provider.c (pop3_conf_entries): "keep
on server" (currently still implemented by the mailer code, not
here), "delete after N days" (not yet implemented).
(pop3_provider): we support SSL
(spop_provider): gone
* providers/pop3/camel-pop3-store.c (camel_pop3_store_init): Set
default_ssl_port
(pop3_connect): Remove spop code
svn path=/trunk/; revision=8968
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_get_full_name): Rewrite
to use imap_store->namespace, not service->url->path
svn path=/trunk/; revision=8966
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-26 Jeffrey Stedfast <fejj@ximian.com>
* camel-store.c (init_trash): Use camel_vtrash_folder_new() to
create the vtrash folder now.
* camel-vtrash-folder.[c,h]: New subclass of CamelVeeFolder for
our vTrash folders.
* camel-folder.c (camel_folder_copy_messages_to): Don't watch for
vtrash folders anymore.
(camel_folder_move_messages_to): Same.
* camel-vee-folder.c (camel_vee_folder_class_init): Update.
(vee_move_messages_to): Rewrite to use the new move API.
* camel-filter-driver.c (do_copy): Updated to reflect
copy_message_to changes. Create a temporary uid array and use
that.
(do_move): Same.
(camel_filter_driver_filter_message): And again, here...
* providers/imap/camel-imap-folder.c (imap_copy_messages_to):
Update to the new API.
(imap_move_messages_to): Same.
(get_uid_set): New function to create a `set' string based on an
array of UIDs for use with imap_copy_messages_to.
* camel-folder.c (camel_folder_copy_messages_to): Replaces
camel_folder_copy_message_to
(camel_folder_move_message_to): Replaces
camel_folder_move_message_to.
svn path=/trunk/; revision=8960
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-command.c (camel_imap_command): keep a
reference on the store's current_folder.
* providers/imap/camel-imap-store.c (camel_imap_store_finalize):
(imap_disconnect): unref the current_folder before clearing it.
svn path=/trunk/; revision=8945
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-command.c (imap_read_response): Don't
look at untagged responses other than "* BYE"...
(camel_imap_response_free): ...do it here instead...
(camel_imap_response_free_without_processing): ...but not here.
* providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
Remove the "EXISTS" line from the response so
camel_imap_response_free won't try to process it.
(camel_imap_folder_selected): If we get an EXISTS response mixed
in with the FETCH responses, record the new EXISTS value.
Use camel_imap_response_free_without_processing so that an EXISTS
response won't cause a loop.
(imap_rescan): Use camel_imap_response_free_without_processing.
(imap_update_summary): Use
camel_imap_response_free_without_processing. If an EXISTS response
shows up, call imap_update_summary again to get the new messages.
(imap_protocol_get_summary_specifier): Use BODY.PEEK[0], not
RFC822.HEADER for prev IMAP4rev1, since the FETCH parser won't
deal with RFC822.HEADER responses.
* providers/imap/camel-imap-store.c (get_folder_info): Fix an
uninitialized variable
svn path=/trunk/; revision=8905
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-provider.h: (CamelProvider) add a "GList *authtypes", so
you can get the list of authtypes used by a provider without
needing to have an actual CamelService object handy. (Will be
needed by the new config druid.)
(CAMEL_PROVIDER_ALLOWS, CAMEL_PROVIDER_NEEDS): New macros to test
the URL part stuff, since the way it works is too complicated and
everyone always does it wrong.
* camel-service.c (camel_service_query_auth_types): Remove the
@connected arg again: if you don't want to connect, you can just
get the list of authtypes off the provider.
(camel_service_free_auth_types): Remove this. All existing
implementations do authtypes the same way, so just say the caller
should "g_list_free" the list. (Oh, look, removing this function
doesn't actually cause the mailer to not build. How 'bout that.)
(construct, get_path): Use the new URL part macros.
* camel-remote-store.c (remote_query_auth_types): Update
(remote_free_auth_types): Nuke
(camel_remote_store_authtype_list): New function for use by
subclasses.
* providers/imap/camel-imap-provider.c:
* providers/pop3/camel-pop3-provider.c:
* providers/smtp/camel-smtp-provider.c: Update CamelProvider
structures.
(camel_provider_module_init): Put all the SSL parts together so
there's only 1 #ifdef. Set up the provider authtypes field using
the SASL, CamelRemoteStore, and standard authtypes, as
appropriate. Copy that from the normal provider to the SSL
provider.
* providers/local/camel-local-provider.c:
* providers/sendmail/camel-sendmail-provider.c:
* camel-session.c: Update CamelProvider structures.
* providers/imap/camel-imap-store.c (query_auth_types):
* providers/pop3/camel-pop3-store.c (query_auth_types): Update
* providers/smtp/camel-smtp-store.c (query_auth_types): Update.
Remove the no_authtype, because that's what "ALLOW_AUTH" rather
than "NEED_AUTH" means.
(free_auth_types): Nuke.
svn path=/trunk/; revision=8872
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c
(camel_imap_store_check_online): Function to check if the store is
online and set an exception if not. Currently controlled by an
environment variable, but eventually there will be both a global
(session-level) setting and a per-store setting.
(construct): Set up storage_path and base_url here rather than at
connect-time.
(imap_auth_loop): Split out from imap_connect.
(imap_setup_online): Split out from imap_connect. Do the
post-authentication connection setup, and cache the results to
disk.
(imap_setup_offline): Set up a CamelImapStore with information
saved from a previous imap_setup_online.
(imap_connect): If online, do connect_to_server(),
imap_auth_loop(), and imap_setup_online(). Otherwise, do
imap_setup_offline().
(get_folder, get_folder_info): Add offline support.
(create_folder, subscribe_folder, unsubscribe_folder): Disable
these when offline (for now).
* providers/imap/camel-imap-folder.c (camel_imap_folder_new):
Remove the sync'ing-with-server stuff... it's done by
camel_imap_folder_selected now, which only gets called if the
store is online.
(camel_imap_folder_selected): add the code removed from
camel_imap_folder_new. Besides simplifying the folder_new and
summary_new code, this also means now that we'll DTRT if a
folder's UIDVALIDITY changes while we're connected. Also, when
that happens, clear the message cache explicitly.
(imap_refresh_info, imap_sync): These are no-ops when offline.
(imap_expunge, imap_append_message, imap_copy_message_to,
imap_search_by_expression): These don't yet work offline.
(imap_get_message, camel_imap_folder_fetch_data): Return an error
when trying to fetch a non-cached body part when we're offline.
* providers/imap/camel-imap-summary.c (camel_imap_summary_new):
Rewrite to not check the validity here. (We'll do it from
camel_imap_folder_selected instead.)
* providers/imap/camel-imap-command.c (camel_imap_command): Call
camel_imap_folder_selected even when the selection is all we're
doing, to match the changes in camel-imap-folder.c.
* providers/imap/camel-imap-message-cache.c
(camel_imap_message_cache_clear): New function to clear out a
message cache.
svn path=/trunk/; revision=8851
|
|
|
|
|
|
|
|
|
|
| |
2001-03-19 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-store.c (pop3_connect): Set the errbuf
to NULL after freeing it? I don't think this should fix bug #1801
but I guess it can't hurt.
svn path=/trunk/; revision=8818
|
|
|
|
|
|
|
|
|
|
| |
2001-03-17 Not Zed <NotZed@Ximian.com>
* providers/local/camel-maildir-summary.c (maildir_summary_sync):
Modified patch from Dan Berger <dberger@ix.netcom.com> to re-check
the maildir directory for new/updated messages at sync time.
svn path=/trunk/; revision=8781
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-16 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-ssl.c (ssl_bad_cert): Print info about the
issuer of the certificate.
* providers/smtp/camel-smtp-transport.c (smtp_connect): Use
camel_tcp_stream_get_socket().
* camel-tcp-stream-openssl.c (stream_get_socket): Implemented.
* camel-tcp-stream-ssl.c (stream_get_socket): Implemented.
* camel-tcp-stream-raw.c (stream_get_socket): Implemented.
* camel-tcp-stream.c (camel_tcp_stream_get_socket): New function.
svn path=/trunk/; revision=8764
|
|
|
|
|
|
|
|
| |
2001-03-16 Kjartan Maraas <kmaraas@gnome.org>
* providers/pop3/camel-pop3-folder.c: Added #include <config.h>
svn path=/trunk/; revision=8762
|
|
|
|
| |
svn path=/trunk/; revision=8744
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
caching of message parts, but NOT any actual disconnected support.
(But it should speed up IMAP use.)
* providers/imap/camel-imap-message-cache.c: New class for caching
message data to disk, and removing it when it's no longer
relevant. Will eventually also support merging message parts
together to save on files. Or maybe using a db instead of files?
* providers/imap/camel-imap-private.h: Add a cache_lock to
CamelImapFolderPrivate. This lock must be recursive, so make both
locks EMutexes rather than GMutex.
* providers/imap/camel-imap-folder.c (parse_fetch_response): "The
only FETCH response parser you need!" Replaces the various
almost-correct bits of code formerly scattered throughout this
file with a single fully-correct function that can handle any
FETCH response at any time, so we don't get confused by seeing a
flags update when we were only expecting a message body, etc.
(camel_imap_folder_fetch_data): FETCH a message body part either
from the cache or the server
(camel_imap_folder_changed): Remove expunged messages from the
message cache.
(camel_imap_folder_new): Change to take a directory instead of a
summary file name. Create a CamelImapMessageCache for the folder.
(imap_finalize): Unref the message cache.
(camel_imap_folder_selected, imap_rescan, get_content,
get_message, imap_get_message, imap_update_summary): Redone a
bunch to use parse_fetch_data, CamelImapMessageCache, etc.
* providers/imap/camel-imap-store.c (get_folder): Pass directory
name to camel_imap_folder_new, not summary filename. Use
e_path_to_physical to generate a path with /subfolders/ inserted
between directory components.
* providers/imap/camel-imap-wrapper.c (camel_imap_wrapper_new):
Call camel_imap_folder_fetch_data (with cache_only TRUE) and if
the data is cached, return an online datawrapper rather than an
offline one.
(write_to_stream): Use camel_imap_folder_fetch_data (with
cache_only FALSE) here too
* providers/imap/camel-imap-utils.c (imap_skip_list): Renamed from
skip_list and made non-static.
svn path=/trunk/; revision=8743
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-15 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-ssl.h: Uninclude prnetdb.h since it's not
needed here.
* providers/smtp/camel-smtp-transport.c: #include prnetdb.h here
instead of making camel-tcp-stream-ssl.h include it. Prevents some
header bloat.
* providers/smtp/Makefile.am: Include the NSPR_CFLAGS and
NSS_CFLAGS.
svn path=/trunk/; revision=8738
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_connect): Update for
using CamelTcpStreams and also for using SSL.
* providers/smtp/libcamelsmtp.urls: defined "ssmtp"
* providers/smtp/camel-smtp-provider.c: Defined the Secure SMTP
provider.
(camel_provider_module_init): Register the Secure SMTP provider.
svn path=/trunk/; revision=8728
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/libcamelsmtp.urls: defined "ssmtp"
* providers/smtp/camel-smtp-provider.c: Defined the Secure SMTP
provider.
(camel_provider_module_init): Register the Secure SMTP provider.
svn path=/trunk/; revision=8726
|
|
|
|
| |
svn path=/trunk/; revision=8725
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (imap_connect): Check for
"simap" instead of "imaps".
* providers/pop3/camel-pop3-store.c (pop3_connect): Change the
port to be 995 for spop.
* providers/pop3/libcamelpop3.urls: Change to "spop".
* providers/imap/libcamelimap.urls: Change "imaps" to "simap" to
correspond to /etc/services.
svn path=/trunk/; revision=8724
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-store.c (pop3_connect): Check to see
if we are using "pops" and then set the appropriate SSL settings.
* providers/pop3/libcamelpop3.urls: Add "pops"
* providers/pop3/camel-pop3-provider.c: Defined the pops provider.
(camel_provider_module_init): Register the pops provider.
svn path=/trunk/; revision=8723
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
* camel.c (camel_init): So it turns out that NSS_Init *isn't*
idempotent, so we have to protect against initializing it more
than once(contrary to what their design specs suggest).
* camel-session.c (camel_session_get_service): Use
camel_exception_is_set() - Makes no difference but it's more
consistant with how we normally do it.
* camel-provider.h (CAMEL_URL_ALLOW_SSL): We don't need this.
* providers/imap/camel-imap-provider.c: Define the imaps provider.
(camel_provider_module_init): Register the imaps provider.
* camel-provider.c (camel_provider_init): Only add the protocol to
the hash table if it's non empty. Also, g_strdup() the filename
into the hash table.
* providers/imap/camel-imap-store.c (camel_imap_store_init): Eek!
So the service's URL isn't set until after this is
initialized. This means we can't check for SSL here.
(imap_connect): Set the SSL options here instead.
svn path=/trunk/; revision=8718
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (camel_imap_store_init): Eek!
So the service's URL isn't set until after this is
initialized. This means we can't check for SSL here.
(imap_connect): Set the SSL options here instead.
svn path=/trunk/; revision=8715
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-14 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-ssl.c: Numerous fixes to get it to build
correctly with NSS enabled.
* camel-remote-store.c (remote_connect): Pass in the session and
expected host args, oops.
* camel-provider.h (CAMEL_URL_ALLOW_SSL): Defined.
* providers/imap/camel-imap-store.c (camel_imap_store_init): Check
to see if we are supposed to use SSL and set the options
accordingly.
(imap_connect): Return FALSE here instead of NULL.
* providers/imap/camel-imap-provider.c: Add CAMEL_URL_ALLOW_SSL.
* providers/imap/libcamelimap.urls: Add "imaps" which is the
protocol for Secure IMAP.
svn path=/trunk/; revision=8711
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (imap_connect): When trying
again after a failed password attempt, check if the connection got
dropped (which Courier will do) and deal accordingly.
svn path=/trunk/; revision=8675
|
|
|
|
|
|
|
|
| |
* providers/sendmail/camel-sendmail-transport.c (sendmail_send_to,
sendmail_send): More fixing for exim: It can't deal with "-tif",
you need to say "-t -i -f".
svn path=/trunk/; revision=8674
|
|
|
|
|
|
|
|
|
|
| |
* providers/sendmail/camel-sendmail-transport.c (sendmail_send,
sendmail_send_to): Remove the "-U" for now, because it breaks
exim's "sendmail" wrapper. (And it doesn't actually do all that
much to sendmail's behavior, and it was working fine before
anyway.)
svn path=/trunk/; revision=8621
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-07 Jeffrey Stedfast <fejj@ximian.com>
* providers/pop3/camel-pop3-store.c (init_trash): Implement.
(get_trash): Implement.
(camel_pop3_store_class_init): Override the default init_trash and
get_trash virtual functions. Hopefully this should fix the problem
of pop3 sotre's not disconnecting after the send&recv code
finishes downloading mail.
Wonder if I should override the default implementation for the
mbox, mh, and maildir too?
svn path=/trunk/; revision=8592
|
|
|
|
|
|
|
|
| |
* providers/local/camel-mbox-provider.c:
* providers/vee/.cvsignore:
* providers/vee/libcamelvee.urls: Remove some unused stuff
svn path=/trunk/; revision=8582
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-05 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (imap_connect): i18n'd some
strings in here.
* providers/smtp/camel-smtp-transport.c (smtp_connect): Keep
trying to authenticate until either we succeed or until the user
cancels.
svn path=/trunk/; revision=8561
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-02 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-provider.c: Doh! Set the
CAMEL_URL_ALLOW_AUTH flag.
* providers/smtp/camel-smtp-transport.c (get_smtp_error_string):
Updated with the extended AUTH return codes.
svn path=/trunk/; revision=8530
|
|
|
|
|
|
|
|
|
| |
2001-03-02 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (get_smtp_error_string):
Updated with the extended AUTH return codes.
svn path=/trunk/; revision=8527
|
|
|
|
| |
svn path=/trunk/; revision=8526
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-03-02 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (try_auth): Don't forget to
unref the SASL object.
* providers/smtp/camel-smtp-transport.c (query_auth_types):
Implemented.
(smtp_auth): Implemented.
(smtp_helo): Don't bother parsing the authtypes if we already have
them.
(smtp_connect): call smtp_auth() here if we found any authtypes.
(smtp_disconnect): Updated as I now use a hash table for the
supported authtypes rather than a linked list.
(esmtp_get_authtypes): modify to use a hash table instead of a
linked list and also use isspace() rather than == ' '.
svn path=/trunk/; revision=8525
|
|
|
|
|
|
|
|
|
| |
* providers/sendmail/camel-sendmail-transport.c (sendmail_send_to,
sendmail_send): Use "-f" to set the envelope from address so
bounces go to the right place. Also, pass "-U" since the man page
says we're supposed to...
svn path=/trunk/; revision=8521
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c: Add an "authtypes" hash table
to CamelImapStore recording the supported authtypes.
(connect_to_server): Record supported authtypes in the authtypes
hash rather than the capabilities bitmask, since now the IMAP code
is no longer responsible for keeping track of which authtypes we
support.
(query_auth_types): Use camel_sasl_authtype_list to get the
SASL-supported authtypes.
(try_auth): New function to try a SASL auth mechanism. Sort of
formerly imap_try_kerberos_v4_auth.
(imap_connect): Get rid of the krb4-specific bits and genericize
them for any SASL authtype.
* providers/imap/Makefile.am: Remove camel-imap-auth.[ch] (moved
into camel-imap-store.c since it's now constant size) and the
KRB4_CFLAGS and KRB4_LDFLAGS references.
svn path=/trunk/; revision=8463
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-02-28 Jeffrey Stedfast <fejj@ximian.com>
* Makefile.am: Added camel-sasl*.[c,h] to the build.
* camel-sasl.[c,h]: new "abstract" SASL class
* camel-sasl-kerberos4.[c,h]: new SASL class for KERBEROS_V4
* camel-sasl-cram-md5.[c,h]: new SASL class for CRAM-MD5
* camel-sasl-plain.[c,h]: new SASL class for PLAIN
* providers/imap/camel-imap-auth.c: Removed the base64 functions.
* camel-mime-utils.c (base64_encode_simple): Moved here from
camel-imap-auth.c
(base64_decode_simple): Same.
svn path=/trunk/; revision=8428
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_sync): Group messages
into sets with the same flags and use the IMAP message set
notation rather than doing a separate STORE FLAGS for each one.
This cuts the network traffic down to just a handful of commands
per sync rather than one per changed message. Removed the progress
notification stuff since it's no longer meaningful and should
hopefully be unnecessary.
(imap_copy_message_to): move the former sync_message function
into here, since it's no longer shared with imap_sync.
svn path=/trunk/; revision=8396
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-02-23 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-folder.c (imap_sync): Add some
internal progress reporting.
(imap_rescan): Do some progress reporting.
* camel-mime-part.c (init_header_name_table): Add the message-id
to the formatted table, so we dont try and wrap it, and break it.
svn path=/trunk/; revision=8350
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-summary.h (CAMEL_IMAP_SERVER_FLAGS):
#define this as the set of all IMAP system flags
* providers/imap/camel-imap-folder.c (sync_message): after syncing
flags, set server_flags to (flags & CAMEL_IMAP_SERVER_FLAGS)
rather than just "flags", since any other flags won't have been
synced. Prevents the CAMEL_MESSAGE_ATTACHMENTS flag from getting
lost.
svn path=/trunk/; revision=8344
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-02-22 Not Zed <NotZed@Ximian.com>
* providers/vee/*: Removed all files.
* camel-private.h: Move camel-vee-private.h stuff into here.
* camel-session.c: Move the vee_provider here, and initialise it
always as part of a session. The vfolder provider is always
available.
* providers/Makefile.am: Remove "vee" from the build list, now
built as part of the main library.
* Makefile.am (libcamelinclude_HEADERS):
(libcamel_la_SOURCES): Added camel-vee-store.[ch],
camel-vee-folder.[ch].
svn path=/trunk/; revision=8340
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-02-22 Not Zed <NotZed@Ximian.com>
* providers/vee/camel-vee-folder.c (vee_folder_build): Removed,
not used.
(camel_vee_folder_new): Removed call to build_folder.
(vee_get_message): Dont try and free the mi if we didn't get it.
* camel-folder.c (camel_folder_change_info_new): Added a hash
table of what we have in the lists, plus moved private things into
private pointer.
(camel_folder_change_info_add_source): Fixed up private accesses.
(camel_folder_change_info_add_uid): Changed to use a hashtable to
see if we already have the uid, etc.
(camel_folder_change_info_remove_uid): Similar.
(change_info_remove): Likewise.
(camel_folder_change_info_clear): Fixes for privatisations.
(camel_folder_change_info_free): "
svn path=/trunk/; revision=8339
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (fetch_medium): Fixes for
IMAP4-pre-rev1 from Torsten Schulz.
svn path=/trunk/; revision=8318
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-02-19 Not Zed <NotZed@Ximian.com>
* providers/vee/camel-vee-folder.c (camel_vee_folder_new): Added
flags argument.
(message_changed): Add support for the auto-update flag, in which
case we auto-match the content as it changes.
(camel_vee_folder_init): Remoive "DYNAMIC" optionality
(camel_vee_folder_finalise): "
(vee_expunge): As we expunge folders, re-sync their content by
rerunning the query.
* providers/vee/camel-vee-store.c (vee_get_folder): Pass flags to
folder new.
2001-02-18 Not Zed <NotZed@Ximian.com>
* providers/vee/Makefile.am (noinst_HEADERS): Added
camel-vee-private.h.
* providers/vee/camel-vee-private.h: New file to add locking stuff
for vee folders.
* providers/vee/camel-vee-folder.c (camel_vee_folder_new): Add
locking around unmatched setup.
(camel_vee_folder_init): Setup lock.
(camel_vee_folder_finalise): Free locks.
(folder_changed): Add locking.
(unmatched_finalise): "
(message_changed): "
(vee_folder_build): "
2001-02-17 Not Zed <NotZed@Ximian.com>
* providers/vee/camel-vee-folder.c (vee_folder_add): Check uid
doesn't exist before adding it.
2001-02-16 Not Zed <NotZed@Ximian.com>
* providers/vee/camel-vee-folder.c (camel_vee_folder_new): Create
a new virtual virtual folder UNMATCHED, to store all messages that
dont match other vfolders.
(unmatched_folder_changed): When a vfolder issues a changed event,
use its info to update the unmatched folder info.
(unmatched_finalise): When a vfolder is finalised, remove any uids
it has as if we had a removed event for it.
svn path=/trunk/; revision=8276
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-02-15 Jeffrey Stedfast <fejj@ximian.com>
* providers/vee/camel-vee-folder.c (camel_vee_folder_new): Emit
the folder_created signal here.
* providers/local/camel-local-folder.c
(camel_local_folder_construct): Emit the folder_created signal.
* providers/local/camel-local-store.c (delete_folder): On error,
free the 'name' string so we don't leak. Also emit the
folder_deleted signal.
* providers/imap/camel-imap-store.c (subscribe_folder): Emit the
folder_created signal.
(unsubscribe_folder): Emit the folder_deleted signal.
* camel-store.c (camel_store_class_init): Added folder_created and
folder_deleted signal defs.
svn path=/trunk/; revision=8246
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (fetch_medium): IMAP4
(pre-rev1) doesn't allow BODY.PEEK[], so use RFC822.PEEK instead
in that case.
svn path=/trunk/; revision=8244
|
|
|
|
| |
svn path=/trunk/; revision=8233
|
|
|
|
|
|
|
|
|
| |
* camel-store.c (camel_store_create_folder): New method to create
a folder when you don't know its full name.
* providers/imap/camel-imap-store.c (create_folder): Implement.
svn path=/trunk/; revision=8231
|
|
|
|
|
|
|
|
|
|
|
| |
2001-02-12 Jeffrey Stedfast <fejj@ximian.com>
* providers/local/camel-local-provider.c: mbox, mh, and maildir
camel-url's need absolute paths.
* camel-provider.h (CAMEL_URL_PATH_IS_ABSOLUTE): New flaggy flag.
svn path=/trunk/; revision=8193
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-store.c: Rewrite a bunch. Replace the existing folder
cache stuff with much simpler code that still handles all the
existing cases. Now the folder hash table is always created by the
base class, using hash and compare functions provided by the class
implementation. (If they are set to NULL, CamelStore won't cache
folders.) lookup_folder, cache_folder, and uncache_folder are no
longer class methods, and get_name is gone completely.
(camel_store_get_inbox): Renamed from
camel_store_get_default_folder, since that wasn't being used, and
this is what we actually need.
(camel_store_get_root_folder): Removed, since it's not needed for
anything given get_folder_info.
* camel-remote-store.c:
* providers/local/camel-local-store.c:
* providers/local/camel-mbox-store.c:
* providers/local/camel-mh-store.c:
* providers/local/camel-maildir-store.c:
* providers/nntp/camel-nntp-store.c:
* providers/pop3/camel-pop3-store.c:
* providers/vee/camel-vee-store.c: Minor updates for CamelStore
changes
* providers/imap/camel-imap-store.c (camel_imap_store_class_init):
Update for CamelStore changes.
(hash_folder_name, compare_folder_name): treat INBOX
case-insensitively, otherwise use g_str_hash and g_str_equal.
* camel-service.c (camel_service_construct): Remove
camel_service_new and create camel_service_construct (as a class
method) in its place.
* camel-session.c (camel_session_get_service): Use
camel_object_new and camel_service_construct to replace
camel_service_new.
* providers/local/camel-local-store.c (construct): Append a '/' to
the URL path if it doesn't end with one
svn path=/trunk/; revision=8145
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-02-07 Not Zed <NotZed@Ximian.com>
* camel-operation.c (camel_operation_start): Changed to push the
operation into a status stack.
(camel_operation_progress): Changed to only accept % complete.
(camel_operation_reset): Free status stack as well.
* providers/pop3/camel-pop3-folder.c (pop3_get_message): Get the
octect count from the return line, and pass it to
get_additional_data().
(pop3_refresh_info): Added status stuff.
* providers/pop3/camel-pop3-store.c
(camel_pop3_command_get_additional_data): Added a total bytes
expected argument for progress reporting & fixed callers.
(camel_pop3_command_get_additional_data): Added progress
reporting.
* providers/local/camel-mbox-summary.c (mbox_summary_sync_full):
(mbox_summary_sync_quick):
(summary_rebuild): Added progress reporting stuff.
svn path=/trunk/; revision=8095
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-02-05 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (query_auth_types): Updated.
* providers/nntp/camel-nntp-store.c (nntp_store_query_auth_types):
Updated.
* providers/pop3/camel-pop3-store.c (query_auth_types): Updated.
* providers/imap/camel-imap-store.c (query_auth_types): Updated.
* camel-service.c (camel_service_query_auth_types): Now takes a
boolean value to specify whether or not to connect when
constructing a supported authtype list.
svn path=/trunk/; revision=7979
|
|
|
|
|
|
|
|
|
|
| |
2001-01-29 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-command.c
(imap_command_strdup_vprintf): Include the terminating NUL in the
calculated string length. This hit memcheck.
svn path=/trunk/; revision=7884
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-01-25 Not Zed <NotZed@Ximian.com>
* tests/folder/test3.c: Changed the subject search to handle case
sensitive when it is mixed case.
* Makefile.am (libcamel_la_SOURCES): Added camel-ssearch-private.c
(noinst_HEADERS): Added camel-search-private.h
* camel-folder-search.c (check_header): New function to do the
work of the various header checks.
(search_header_matches):
(search_header_starts_with):
(search_header_ends_with):
(search_header_contains): Use check_header to do the work.
(build_match_regex): Removed.
* camel-search-private.c (header_soundex): New
function to match words to phrases using soundex algorithm.
* camel-filter-search.c (soundexcmp): Removed.
(check_match): Moved to search-private.h
2001-01-24 Not Zed <NotZed@Ximian.com>
* camel-search-private.c (camel_search_build_match_regex): Added
extra flags, so the same function can be used for
start/end/whole/partial matches.
(camel_search_header_match): Convenience function to check a
single header against all sorts of different matches.
* providers/imap/camel-imap-search.c (imap_body_contains): Fix for
e_sexp api changes.
* camel-folder-search.c: Fix for e_sexp api changes.
(search_header_contains): Free args/quit on unknown header.
(search_header_matches): "
(search_header_starts_with): "
(search_header_ends_with): "
(match_message): Add an exception argument.
(search_body_contains): Free args/quit on fatal error.
(message_body_contains): Removed (moved to
camel-search-private.c), fixed callers.
* camel-filter-search.c: Fix for e_sexp api changes.
(build_match_regex, message_body_contains): Moved into
camel-filter-private.c Fixed callers.
(check_header): moved guts to camel-search-private, and
changed to use regex's for everything. Just calls that with the
right args.
(check_header): GEts the header, decodes it, and checks for
failure, and whatnot.
(check_match): Removed.
(header_soundex): Changed significantly. Now it soundexes each
word in the header separately, and compares it to the first
argument.
* tests/folder/test9.c (main): Fix for api changes.
(main): Added tests to see that invalid match and action
rules are properly detected.
* camel-filter-driver.c (camel_filter_driver_filter_mbox): Remove
the 'finished message' bit.
(camel_filter_driver_filter_message): Remove an accidentally
checked in debug.
(camel_filter_driver_filter_message): Fix for e-sexp api changes.
svn path=/trunk/; revision=7796
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-wrapper.c: Add a lock around the
delayed loading, so two threads won't try to do it at the same
time.
svn path=/trunk/; revision=7752
|
|
|
|
|
|
|
|
| |
* providers/vee/camel-vee-folder.c (camel_vee_folder_new): Set the
CamelFolder::name to just the base part of the vfolder name (the
non-query part)
svn path=/trunk/; revision=7743
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-01-23 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-summary.c (message_info_load): Removed
some debug 'warnings', as they should now be displayed at the
toplevel loader, and just made the code match similar code
elsewhere.
* providers/local/camel-mbox-summary.c (message_info_load): Error
handling.
(message_info_save): more error handling.
* camel-folder-summary.c (message_info_load): Add error handling
and sanity checking.
(camel_folder_summary_load): Add error checks.
(perform_content_info_load): Error + sanity checks.
(content_info_load): error + sanity checks.
svn path=/trunk/; revision=7737
|
|
|
|
|
|
|
|
|
| |
2001-01-22 Christopher James Lahey <clahey@helixcode.com>
* component/e-summary-url.c: Change the callbacks in this file to
match the callback function types. Fixes warnings.
svn path=/trunk/; revision=7723
|
|
|
|
|
|
|
|
|
| |
2001-01-22 Not Zed <NotZed@Ximian.com>
* .cvsignore */*/.cvsignore: Added profiling temp
files.
svn path=/trunk/; revision=7705
|
|
|
|
| |
svn path=/trunk/; revision=7657
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c
(get_subscribed_folders_by_hand): If LISTing a subscribed folder
doesn't return a LIST response, just ignore that folder. Yay
RFC2060.
svn path=/trunk/; revision=7650
|
|
|
|
|
|
|
|
| |
2001-01-19 Kjartan Maraas <kmaraas@gnome.org>
* providers/smtp/camel-smtp-provider.c: Mark strings for translation.
svn path=/trunk/; revision=7643
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-store.c (camel_folder_info_build): More tweaking... skip
separator characters after the namespace character. (Gets rid of
the shell folder registration warning some people have had with
IMAP)
* providers/imap/camel-imap-store.c (imap_connect): I'm sure there
was some clever reason I was storing the flags of the folder in
the hash table rather than just "1", but I don't remember what it
was now. Anyway, since we only ever test NULL/non-NULL, store 1,
since flags is sometimes 0.
svn path=/trunk/; revision=7628
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_update_summary): Oops.
Somewhere in one of the reorgs, the code to add new messages to
the CamelFolderChangeInfo structure got removed. Fix that.
svn path=/trunk/; revision=7627
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-01-17 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-summary.c (message_info_load): Add
some g_warnings() to help debug later if I ever get the segfaults
I was getting earlier. Can't seem to reproduce them after my
previous "fix".
* camel-folder-summary.c (camel_folder_summary_load): Undid my
change here, NotZed said it was wrong and that if it gets a NULL
mi then it should abort and not continue.
svn path=/trunk/; revision=7609
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-01-17 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (get_smtp_error_string):
New smtp error-code to string mapping function.
(smtp_connect): Use the new error->string function for reporting
useful errors.
(smtp_helo): Same. Also use a case-insensitive strstr for 8BITMIEM
as it seems Exchange sends back lowercase for that one single SMTP
extension. Everything else is uppercase. I'm seeing a lack of love
for that extension by Microsoft dudes...
(smtp_mail): Use get_smtp_error_string.
(smtp_rcpt): Same.
(smtp_data): Same.
(smtp_quit): Same.
(smtp_rset): Same.
svn path=/trunk/; revision=7605
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-types.h: typedef CamelMessageInfo and
CamelMessageContentInfo here
* camel-folder-summary.h: Add a "size" field to
CamelMessageContentInfo.
* camel-folder-summary.c (camel_folder_summary_content_info_new,
camel_folder_summary_content_info_free): Renamed and made
non-static for providers that construct their own content info.
(content_info_load, content_info_save): load/save size
* camel-data-wrapper.c (camel_data_wrapper_is_offline): New
function to return if a data wrapper's contents are "offline". (So
that, for example, we don't make thumbnails of images that haven't
been loaded off the IMAP server yet.) Defaults to FALSE.
* providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
Fix a bug in re-selecting a folder when messages have been
expunged from it by another client in the meantime.
(imap_get_message): Rewrite. If the message is larger than a
certain size, just create a skeleton message containing
CamelImapWrappers that will read parts as needed. This way, large
attachments only need to be downloaded if the user looks at them,
and multipart/alternative alternatives that aren't used will never
be downloaded at all.
(imap_update_summary): Rewrite this a bunch too to make the
parsing more robust.
* providers/imap/camel-imap-summary.c
(CAMEL_IMAP_SUMMARY_VERSION): bump.
(camel_imap_summary_new): Set build_content to TRUE.
(content_info_load, content_info_save): Only save/load the content
for messages that have it. (The content info gets created as a
side effect of imap_get_message.)
* providers/imap/camel-imap-utils.c (imap_parse_body): New routine
(and helpers) to parse an IMAP 'body' FETCH response and fill in a
CamelMessageContentInfo from it.
* providers/imap/Makefile.am (libcamelimap_la_SOURCES,
libcamelimap_la_HEADERS): add camel-imap-wrapper.
svn path=/trunk/; revision=7557
|
|
|
|
|
|
|
|
|
| |
2001-01-16 Chris Toshok <toshok@ximian.com>
* providers/Makefile.am (NNTP_DIR): set to nntp if ENABLE_NNTP
(SUBDIRS): use $(NNTP_DIR)
svn path=/trunk/; revision=7552
|
|
|
|
|
|
|
|
|
| |
2001-01-16 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_rcpt): Don't check
errno as it's not being set. Fixes bug #1150.
svn path=/trunk/; revision=7547
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-01-16 Jeffrey Stedfast <fejj@ximian.com>
Ugh, this design is ugly like my butt.
* camel-session.c (camel_session_query_cert_authenticator): New
function which will be useful when we integrate SSL.
* camel-tcp-stream-ssl.c (ssl_auth_cert): Callback to authenticate
a certificate.
(ssl_bad_cert): Callback that gets the reason the certificate is
bad and then calls camel's cert-authenticator callback to notify
the user and to allow the user to override the check.
(stream_connect): Set the URL we expect to connect with and setup
the auth_cert and bad_cert callbacks.
(camel_tcp_stream_ssl_new): Now takes a CamelSession and a
expected_host argument that it will use for certificate
authentication.
(camel_tcp_stream_ssl_finalize): Unref the session and free the
expected_host.
svn path=/trunk/; revision=7531
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-01-16 Not Zed <NotZed@Ximian.com>
* camel-folder-summary.c (camel_folder_summary_decode_string):
Chganged len back to be unsigned. And do a simple range check on
the string value to try and detect corrupted summary files.
* providers/imap/camel-imap-command.c (imap_read_untagged): Handle
cancelled stream reads with an appropriate exception.
* providers/imap/camel-imap-private.h: Fix the include-once
macro. Doh, confliced with camel-private.h.
* providers/imap/camel-imap-store.c (imap_store_refresh_folders):
A copy of camel_remote_store_refresh_folders. We avoid locking
each folder when we call it though. This should be removed when i
can work out how to remove the folder lock from this function
easily.
* camel-stream-fs.c (stream_write): Fix n' argument of select.
(stream_read): Likewise.
* camel-remote-store.c (socket_connect): Bump the connect timeout
upto 4 minutes.
(socket_connect): Oops, fix the 'n' argument of select.
* camel-session.c (camel_cancel_cancel): If we are given no
cancellation node, then do it for all active ones.
svn path=/trunk/; revision=7526
|
|
|
|
|
|
|
|
|
| |
2001-01-15 Peter Williams <peterw@ximian.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_new): Lock around the
imap_rescan, which needs it.
svn path=/trunk/; revision=7513
|
|
|
|
|
|
|
|
|
|
|
| |
before copying so that they end up correct in the remote folder.
And poke the destination folder after doing the copy so it notices
the new message right away.
(imap_move_message_to): Call imap_copy_message_to for most of the
work rather than duplicating the code (since it's much more
complicated now).
svn path=/trunk/; revision=7419
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
Fix a bug in previous commit: don't check for deleted messages if
there are no known messages in the folder (because it would end up
sending "FETCH 0 ...").
svn path=/trunk/; revision=7412
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
New function to check for added/deleted messages when re-selecting
a folder.
(imap_refresh_info, imap_rescan, imap_update_summary): Various
locking tweaks that turn out to be irrelevant since command_lock
is recursive, but whatever.
* providers/imap/camel-imap-command.c (camel_imap_command): When
selecting a new folder, call camel_imap_folder_selected on it.
svn path=/trunk/; revision=7410
|
|
|
|
|
|
|
|
|
| |
2001-01-10 Jeffrey Stedfast <fejj@helixcode.com>
* providers/local/camel-local-provider.c: Changed the descriptions
for mh, mbox, and maildir to be more "user-friendly".
svn path=/trunk/; revision=7373
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-types.h: New header to prevent
recursive #include problems
svn path=/trunk/; revision=7368
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-types.h: New header to prevent
recursive #include problems
* providers/imap/*.h: Replace some #includes with #include
"camel-imap-types.h", remove typedefs that were moved to
camel-imap-types.h
* providers/imap/*.c: Add #includes to make up for #includes
removed from .h files
* providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Add
camel-imap-types.h
svn path=/trunk/; revision=7367
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-store.c (camel_store_sync): New class function, parallel
to camel_folder_sync. (The default implementation just calls
camel_folder_sync on each cached folder.)
* providers/imap/camel-imap-store.c (get_folder_info): Call
camel_store_sync before doing anything else so that the IMAP
server and Camel are working from the same data. Don't ask the
server for the unread message count of the current folder, since
UW will return often-incorrect cached data, and we can calculate
it without talking to the server anyway.
svn path=/trunk/; revision=7365
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
available). Deal with servers that don't return LIST flags in
response to LSUB (like UW) to get rid of the "not a selectable
folder" error messages in the UI. Take advantage of the \Marked
and \Unmarked flags to try to speed up the folder scan by not
doing STATUS on unmarked folders. Some further tweaks on the shape
of the resulting folder tree in various situations...
* camel-store.h: Remove the (read) message_count, since nothing
uses it, and we can speed up IMAP a bit this way.
* camel-store.c (camel_folder_info_build): Redo this a bit to make
it more useful for IMAP since that's the only thing that uses it.
* camel-remote-store.c (camel_remote_store_connected): Public
function to check if the store is connected, and try to connect it
if it's not.
(remote_send_string, remote_send_stream, remote_recv_line): Use
that.
* providers/imap/camel-imap-store.c (camel_imap_store_finalize):
fix up for changes.
(camel_imap_store_init): Initialize subscribed_folders to NULL
rather than an empty hash table.
(imap_connect): Get the list of subscribed folders here. If the
server doesn't claim that any of them are either Marked or
Unmarked, then assume that it doesn't do that for LSUB and
remember that for later. If the server supports the NAMESPACE
extension and the user didn't specify a namespace, use the
server-provided one.
(imap_disconnect): Free the list of subscribed folders, and the
namespace.
(get_folder): check camel_remote_store_connected
(get_folder_info): check camel_remote_store_connected. Add a bunch
of new cleverness. If we learned that the server doesn't do LSUB
usefully, do a bunch of LISTs by hand. Then, if we're getting
unread counts, only do it for folders that weren't listed as
Unmarked. Also, deal with namespaces that end with the separator
character, and update for changes to camel_folder_info_build.
(folder_subscribed): Add a g_return_val_if_fail.
(subscribe_folder, unsubscribe_folder): check
camel_remote_store_connected.
* providers/nntp/camel-nntp-store.c (build_folder_info,
build_folder_info_from_grouplist, nntp_store_get_folder_info):
Don't fill in message_count since it doesn't exist any more.
svn path=/trunk/; revision=7343
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
query_auth_types_generic.
* camel-url.c: Remove "empty" from CamelURL.
(camel_url_new): No longer set it.
(camel_url_to_string): Treat "" as equivalent to NULL for
authmech. (Unrelated change, but it simplifies some stuff with the
new config dialog.)
* camel-service.c (camel_service_new): Remove url->empty check: if
the URL isn't valid, we don't create the service.
(camel_service_query_auth_types): No longer need to switch between
generic and connected variants.
* providers/smtp/camel-smtp-transport.c (query_auth_types):
* providers/pop3/camel-pop3-store.c (query_auth_types):
* providers/nntp/camel-nntp-store.c (nntp_store_query_auth_types):
* providers/imap/camel-imap-store.c (query_auth_types):
* camel-remote-store.c (remote_query_auth_types): Remove generic
version, rename connected version.
svn path=/trunk/; revision=7327
|
|
|
|
|
|
|
|
|
|
|
|
| |
2001-01-06 Not Zed <NotZed@HelixCode.com>
* providers/vee/camel-vee-folder.c (vee_folder_build_folder): Dont
try and unref a messageinfo that wasn't there, and use the right
free function too. Modified patch from Iain.
(vee_move_message_to): New method, call the real folders'
move_message_to method.
svn path=/trunk/; revision=7278
|
|
|
|
| |
svn path=/trunk/; revision=7252
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_rescan): Fix two
problems in figuring out server-expunged messages.
svn path=/trunk/; revision=7251
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_rescan): Fix two
problems in figuring out server-expunged messages.
svn path=/trunk/; revision=7247
|
|
|
|
|
|
|
|
|
|
| |
2001-01-03 Christopher James Lahey <clahey@helixcode.com>
* providers/imap/camel-imap-folder.c (camel_imap_folder_new):
Initialize the exists variable so that we don't do random things
if the imap server misbehaves.
svn path=/trunk/; revision=7235
|
|
|
|
| |
svn path=/trunk/; revision=7220
|
|
|
|
|
|
|
|
|
| |
2001-01-02 Christopher James Lahey <clahey@helixcode.com>
* providers/maildir/, providers/mbox/, providers/mh/: Removed
these directories since they're unused.
svn path=/trunk/; revision=7219
|
|
|
|
| |
svn path=/trunk/; revision=7217
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-stream.[ch]: Remove. To be replaced.
* providers/imap/Makefile.am (libcamelimapinclude_HEADERS): Remove
camel-imap-stream.h
* providers/imap/camel-imap-utils.c (imap_parse_flag_list): Take a
char ** instead of char *, to return the position at the end of
parsing like the string parsing functions.
(imap_parse_string_generic): New function to parse a string,
nstring, or astring.
(imap_parse_nstring, imap_parse_astring): Now macros
(imap_parse_string): Added
* providers/imap/camel-imap-folder.h: Remove the "exists" field
from CamelImapFolder.
* providers/imap/camel-imap-folder.c: Remove unused include of
camel-imap-stream.h.
(camel_imap_folder_init): Remove no-longer-relevant summary
initialization.
(camel_imap_folder_new): Update for imap_parse_flag_list change,
exists removal, and imap_rescan.
(imap_rescan): New function that does most of the work of the old
imap_refresh_info, but taking "exists" as an argument instead of
getting it from the folder. Also calls camel_imap_folder_changed
to do the summary updating and signalling, rather than duplicating
that code.
(imap_refresh_info): Just call imap_rescan (using the size of the
folder summary as "exists").
(imap_update_summary): Update for imap_parse_flag_list change
(camel_imap_folder_changed): Update for "exists" change.
svn path=/trunk/; revision=7216
|
|
|
|
|
|
|
|
| |
* providers/pop3/camel-pop3-store.c (connect_to_server): Fix the
APOP check to not crash on servers that don't return any
information on the +OK greeting line.
svn path=/trunk/; revision=7184
|
|
|
|
| |
svn path=/trunk/; revision=7156
|
|
|
|
| |
svn path=/trunk/; revision=7155
|
|
|
|
| |
svn path=/trunk/; revision=7151
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-12-24 Not Zed <NotZed@HelixCode.com>
* providers/imap/camel-imap-search.c (imap_body_contains): Lock
the command channel while searching.
(imap_body_contains): If performing a whole uid search, then add
references to our own summary items, dont look it up in the
folder. This way they can't vanish unexpectedly.
* providers/imap/camel-imap-folder.h (CamelImapFolder): Added a
private field.
* providers/imap/camel-imap-private.h: Added lock for imap
searches.
* Merge from camel-mt-branch.
* providers/imap/camel-imap-folder.c (imap_update_summary): Merge
fix, use the folder->summary.
(imap_get_message_flags, imap_set_message_flags,
imap_get_message_user_flag, imap_set_message_user_flag): Removed
again.
(camel_imap_folder_init): Setup private data/lock.
(imap_finalize): Free private data/search lock.
(imap_search_free): Lock the search_lock.
(imap_search_by_expression): Lock the search lock when using the
search object. Also copy/ref hte summary, rather than getting it
directly.
(imap_refresh_info): Free any info lookups. Use folder->summary
not imap_folder->summary. And lock around commands.
svn path=/trunk/; revision=7150
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (get_folder_info): When
getting the top-level folder list, include INBOX even if it's not
subscribed. Don't show subscribed folders outside of the given
namespace. Do a better job of pruning the namespace from the
returned folder tree.
svn path=/trunk/; revision=7131
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-search.c: New CamelFolderSearch
subclass that just reimplements body_contains (using the IMAP
SEARCH command). All other kinds of searching are done against the
local summary.
* providers/imap/camel-imap-folder.c (imap_search_by_expression):
Use a CamelImapSearch to do searching.
* providers/imap/camel-imap-utils.c (imap_translate_sexp, etc): No
longer needed.
* camel-folder-search.h: Add missing CAMEL_FOLDER_SEARCH_TYPE
#define
svn path=/trunk/; revision=7119
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_refresh_info): Oops.
Don't do "FETCH 1:0" when the folder is empty.
(imap_protocol_get_summary_specifier): Request RFC822.SIZE too.
(imap_update_summary): Parse RFC822.SIZE and add it to the
summary.
svn path=/trunk/; revision=7088
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-summary.c: Add "guint32 server_flags"
to CamelImapMessageInfo to keep track of the last known message
flag state on the server.
(message_info_save, message_info_load): Save/load the
server_flags.
* providers/imap/camel-imap-folder.c: Make this use
CamelFolderChangeInfo and emit folder_changed notifications as it
gets them rather than only on refresh_info.
(imap_refresh_info): Notice flags that get cleared on the server
as well as flags that get set.
(imap_update_summary): Remove a comment that never actually
applied to the committed code.
svn path=/trunk/; revision=7086
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-command.c (camel_imap_command): Change
the semantics of fmt: Now %S (capital S) means an IMAP "string",
(which can be sent as either a quoted string or a literal). If
the server supports LITERAL+, these will be sent as extended
literals (which don't require any special escaping). Otherwise
they'll be sent as quoted strings (and it now properly deals with
" or \ in the string).
(imap_command_strdup_vprintf): Utility routine that does the real
work for the functionality mentioned above.
* providers/imap/camel-imap-utils.c (imap_quote_string): Turns a
string into a proper IMAP "quoted string".
* providers/imap/camel-imap-store.c:
* providers/imap/camel-imap-folder.c: Use %S instead of "%s" where
appropriate.
svn path=/trunk/; revision=7070
|
|
|
|
|
|
|
| |
* Namespace cleanup: change a bunch of IS_CAMEL_* macros to
CAMEL_IS_*
svn path=/trunk/; revision=6972
|
|
|
|
|
|
|
|
|
| |
2000-12-13 Chris Toshok <toshok@helixcode.com>
* providers/imap/camel-imap-auth.c: add #include <sys/types.h> for
freebsd.
svn path=/trunk/; revision=6971
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-12-12 Christopher James Lahey <clahey@helixcode.com>
* camel-folder-summary.c, camel-folder-summary.h: Added #ifndef
NO_WARNINGS around a #warning. Added (void) to the prototype and
declaration of camel_message_info_new.
* camel-mime-message.h: Added an include for
camel-mime-filter-bestenc.h. Added a prototype for
camel_mime_message_set_best_encoding. Reformatted prototypes to
line up.
* camel-mime-parser.c: Added #if d(!)0 around the states string
lookup table since it's only used in debugging output.
* camel-seekable-substream.c (stream_flush): Added a cast.
* providers/imap/camel-imap-auth.c: Added #include <netinet/in.h>.
* providers/imap/camel-imap-folder.c (imap_refresh_info): Made uid
and flags const to fix warnings here.
* providers/imap/camel-imap-store.c (get_folder_info): Made p
const to fix warnings here.
svn path=/trunk/; revision=6954
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/smtp/camel-smtp-transport.c (smtp_data): Remove use of
linewrap filter. Headers are now wrapped. encode_8bit already
enforces a 998 octet line limit.
(smtp_data): Also fixed a memleak, we always have to unref our own
copy of the filters. We also dont need to remove them manually,
so dont bother. The type's an int too ...
* camel-internet-address.c (internet_unformat): When scanning past
quotes, remove them also.
(camel_internet_address_format_address): If the name contains "'s,
or ','s then strip and quotes and wrap the whole lot in one set of
quotes.
* Makefile.am (noinst_HEADERS): We dont want to install
camel-charset-map-private.h, ever. There are probably other
similar files ..?
* camel-mime-part.c (write_to_stream): Fold header lines
appropriately as we're writing them out.
* camel-mime-utils.c (header_fold): Add a new argument, headerlen,
tells it how long the associated header token is.
(header_fold): Also,k check to see if we need to fold first, using
a better algorithm, and also accept already-folded lines, and
re-process accordingly.
(rfc2047_decode_word): Add a little buffer space to iconv output
for shifting overheads?
(rfc2047_decode_word): finish the iconv with a null call, to flush
shift state, etc.
(rfc2047_encode_word): Attempt to break up long words into
appropriately sized, independent, chunks. See rfc2047, section 2.
(header_decode_mailbox): Dont add in extra spaces into the output
if we are decoding adjacent encoded words. We can only guess this
case, as some broken mailers put encoded words inside quoted
words.
(header_encode_phrase): Dont merge words if they are going to end
up too long. Also change back ot only merge consecutive words of
the same type. e.g. 'foo. blah fum.' -> "foo." blah "fum." or
'iam an. idiot' -> iam "an." idiot
svn path=/trunk/; revision=6902
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-12-11 Not Zed <NotZed@HelixCode.com>
* camel-medium.c (camel_medium_set_header): Hrm, we actually want
to call set_header, not add_header here, probably explains some
duplicate X-Evolution headers i was trying to track down. Also
changed the api to handle a NULL value == remove the header.
* providers/local/camel-maildir-summary.c
(maildir_summary_decode_x_evolution): Always return error, we dont
use x-evolution for maildir.
(maildir_summary_encode_x_evolution): Always return a NULL string,
likewise.
(maildir_summary_add): Hook in here, since the _new function
doesn't have access to any flags from the caller. If we have
flags, then update the filename again. Not ideal, but should
work.
svn path=/trunk/; revision=6897
|
|
|
|
|
|
|
|
|
|
|
| |
2000-12-06 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-folder.c (imap_refresh_info): We want
to bitwise-or the server and cached flags here so that we keep the
flags that we have set locally and set any additional flags that a
parallel connection may have set.
svn path=/trunk/; revision=6834
|
|
|
|
|
|
|
|
|
|
| |
2000-12-05 Jeffrey Stedfast <fejj@helixcode.com>
* providers/smtp/camel-smtp-transport.c (smtp_data): If the data
wrapper fails to be written to the stream, unref it and the
filters before returning.
svn path=/trunk/; revision=6804
|
|
|
|
| |
svn path=/trunk/; revision=6801
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_get_message): use
BODY.PEEK[] rather than RFC822, so the message doesn't get marked
as \Seen.
svn path=/trunk/; revision=6800
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_set_message_flags): Fix
the check for "flags aren't actually changing".
* providers/local/camel-local-folder.c (local_set_message_flags,
local_set_message_user_flag, local_set_message_user_tag): Don't
emit message_changed unless the flags actually changed.
* providers/nntp/camel-nntp-folder.c
(nntp_folder_set_message_flags): Don't emit message_changed unless
the flags actually changed. Fix the check for marked as seen.
svn path=/trunk/; revision=6797
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-12-05 Not Zed <NotZed@HelixCode.com>
* camel-seekable-substream.c (stream_flush): stream_flush does
make sense for a substream afterall (if you have a stream_write).
(stream_write): Implement this.
(stream_seek): Change the STREAM_END behaviour to be more sane.
if bounded go from the end of the bound, if unbounded, go from the
end of the parent stream.
* camel-stream-mem.c (stream_read): Dont return error if reading
past the end of data, just return 0.
* camel-stream-fs.c (camel_stream_fs_init): Initialise the stream
to be unbound.
(stream_seek): Fix the logic when seeking from the end of an
unbounded stream.
(camel_stream_fs_new_with_fd): If the fd is invalid (-1), then
return NULL immediately.
(stream_seek): Range check a SEEK_END so it fits within
bound_start.
2000-12-01 Not Zed <NotZed@HelixCode.com>
* tests/lib/folders.c (test_folder_basic): New test to perform
basic store operations on folders (taken from folders/test1).
(test_folder_message_ops): Tkane the guts out of folders/test2.
svn path=/trunk/; revision=6790
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-12-04 Jeffrey Stedfast <fejj@helixcode.com>
* providers/smtp/camel-smtp-transport.c (smtp_connect): i18n-ize
exception strings.
(get_name): And here.
(_send_to): Here too.
(smtp_helo): And here and there...
(smtp_mail): And around the square...
(smtp_rcpt): Saying catch me if you can...
(smtp_data): And here three.
(smtp_rset): And here.
(smtp_quit): And finally here.
svn path=/trunk/; revision=6785
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-service.c (camel_service_disconnect): Don't
g_return_if_fail if the service is already disconnected. Just
return.
* providers/pop3/camel-pop3-store.c (pop3_try_authenticate):
Return FALSE (don't try again) if we get CAMEL_POP3_FAIL.
(pop3_connect): If we don't succeed, disconnect.
svn path=/trunk/; revision=6756
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-30 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c
(parse_list_response_as_folder_info): Fix a possible bug where
'name' could be uninitialized.
* camel-folder-summary.c (camel_message_info_new): New convenience
function, doesn't do much but it sure makes code cleaner to read.
(camel_message_info_new_from_header): This one makes my life heaven.
svn path=/trunk/; revision=6752
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-30 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-summary.c (camel_imap_summary_new):
Handle the case where the summary failed to load - clear the
summary and then set the dirty bit so that it is sure to save
later. Is this the right fix?
svn path=/trunk/; revision=6743
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-30 Not Zed <NotZed@HelixCode.com>
* providers/local/camel-mbox-folder.c (mbox_get_message): Remove
assertion that content is there, when it no longer can be.
* camel-folder-summary.h: Removed pos/bodypos/endpos from
camelmeessagecontentinfo.
(CamelMessageFlags): Added an attachments flag.
* providers/local/camel-local-summary.h: Added load virtual
function.
* tests/lib/folders.c (test_message_info): Accessors.
(test_folder_message): "
* camel-folder-thread.c (get_root_subject): Fix accessors.
(dump_tree_rec): "
* camel-folder-search.c (camel_folder_search_execute_expression):
Accessors for messageinfo.
(search_match_all): "
(search_header_contains): "
(search_header_contains): "
(search_body_contains): "
(camel_folder_search_execute_expression): Use mepool_strdup.
* providers/local/camel-mbox-summary.c (summary_update): Accessors
for messageinfo.
(mbox_summary_sync_full): "
* providers/local/camel-mh-summary.c (remove_summary): Accessors
for messageinfo.
(mh_summary_check): "
(mh_summary_sync_message): "
(mh_summary_sync): "
* providers/local/camel-mh-folder.c (mh_append_message): Use
accessor for uid.
* providers/local/camel-local-summary.c
(local_summary_decode_x_evolution): Use accessor to uid.
(local_summary_encode_x_evolution): Likewise.
(message_info_new): And here.
(camel_local_summary_load): Call virtual load function.
(local_summary_load): Default load function, load summary.
(camel_local_summary_load): Check file exists before trying to
load.
(camel_local_summary_construct): Turn off building content info!
(CAMEL_LOCAL_SUMMARY_VERSION): Bump, since we dont build content
info anymore.
(camel_local_summary_load): After a successful load/check, do a
save too so we dont have to go through it again randomly.
* providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Use
accessors for messageinfo.
* providers/nntp/camel-nntp-folder.c (nntp_folder_get_uids): Use
accessors for uid.
* providers/imap/camel-imap-folder.c (imap_refresh_info): Use
accessor for uid.
(imap_sync): Likewise.
(imap_get_uids): Likewise.
(imap_update_summary): And here.
* providers/vee/camel-vee-folder.c (vfolder_remove_match): Use
accessor for uid.
(vfolder_add_match): Handle estrv stuff.
(vfolder_change_match): Accessor for uid.
(get_real_message): "
(vee_get_uids): "
(vee_folder_build): " + estrv.
(vee_folder_build_folder): "
* providers/local/camel-maildir-folder.c (maildir_append_message):
Use acccessors for uid's.
(maildir_get_message): Here too.
* providers/local/camel-maildir-summary.c
(camel_maildir_summary_init): Setup the string count for us.
(message_info_new): Access the string array directly.
(message_info_free): No need to free string if using array.
(camel_maildir_summary_info_to_name): Use accessor to get to uid.
(remove_summary): And here.
(maildir_summary_check): Likewise.
(maildir_summary_sync): And here.
(maildir_summary_load): Load up a cache of uid->filename mappings
before loading the actual summary file. This saves us having to
waste the diskspace storing the filenames in the summary itself,
and also helps us sync the summary better on load.
(message_info_load): If we have the load_map setup, and the uid
exists, then set the filename cache from it, and update the flags
from the name, incase our summary mismatches it.
* camel-folder-summary.c (camel_folder_summary_init): Setup string
count for compressed info record. An optional compile mode which
stores all strings for a given messageinfo into a packed array,
which should save 36-50 bytes/record.
(camel_folder_summary_info_new): Init the string array.
(message_info_new): Set the string array items, as required.
(message_info_load): And here too.
(message_info_save): Use accessors to get to strings.
(message_info_free): Free strings as one.
(camel_message_info_dup_to): Handle packed array case.
(camel_folder_summary_add): Use accessors. And pack the strv
before storing it.
(summary_assign_uid): New function to assign a unique uid to a
message, if it doesn't have one.
(camel_folder_summary_add): Call assign_uid instead of doing it
ourselves.
(camel_folder_summary_info_new_from_parser): "
(camel_folder_summary_info_new_from_message): "
(camel_folder_summary_encode_string): constify.
(camel_folder_summary_encode_token): "
(summary_build_content_info_message): Fix accessors to messageinfo.
(CAMEL_FOLDER_SUMMARY_VERSION): Bumped, for removal of
contentinfo->pos data.
(camel_folder_summary_info_new_from_parser): Calculate the size
based on the parser position, not the removed contentinfo stuff.
(camel_folder_summary_info_new_from_message): Remove size stuff.
(camel_folder_summary_offset_content): Removed, no longer means anything.
(content_info_new):
(content_info_load):
(content_info_save):
(summary_build_content_info): Remove stuff for contentinfo->pos*.
(summary_build_content_info): Take a msginfo argument, set
attachments flag if we find any attachments.
(summary_build_content_info_message): set attachments flag if we
find any attachments.
(camel_folder_summary_info_new_from_parser): Always scan the
content info, even if we dont save it.
(camel_folder_summary_info_new_from_message): And here too.
(summary_build_content_info): Only create the contentinfo stuff if
we have it turned on, otherwise just parse and discard.
(summary_build_content_info_message): Likewise.
svn path=/trunk/; revision=6731
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-command.c (imap_read_untagged): Fix
some off-by-one-ness.
* camel-stream-buffer.c (stream_read): Fix another bug found in
previously-unused code here.
svn path=/trunk/; revision=6718
|
|
|
|
| |
svn path=/trunk/; revision=6712
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-29 Not Zed <NotZed@HelixCode.com>
* tests/message/test2.c (main): Add a missed unref.
* camel-stream-mem.c (camel_stream_mem_set_buffer): We must set
ourselves as the owner of the byte-array.
Weird, someone has modified this file (its been reindented), but i
can't see any changelogs ...
* tests/lib/messages.c (content_finalise): Fix memleak in tester,
free byte array when our content object is deleted.
* camel-folder-search.c (camel_folder_search_finalize): Yeah
great, so the sexp is a gtk object, not a camel object. Isn't
that going to be fun to fix?
* camel-session.c (camel_session_finalise): Free the storage path.
* providers/local/camel-local-store.c (camel_local_store_init): If
store->folders is setup, free it first, then overwrite. Hmm,
this seems a bit crappy to me.
* camel-store.c (camel_store_init): Dont setup store->folders if
its already setup.
* camel-exception.c (camel_exception_setv): Removed a memleak. no
need to strdup after a strdup_printf!!!
* camel-address.c (camel_address_finalize): Free the address
ptrarray, once finished.
* providers/local/camel-local-folder.c (local_finalize): Make sure
we dont leave the folder locked on close.
(local_finalize): Free summary/search.
* providers/local/camel-mh-summary.c (mh_summary_next_uid_string):
Small memleak, always free name after using it.
* camel-mime-part.c (set_content_object): Free txt after setting
the header.
* providers/local/camel-maildir-summary.c (maildir_summary_check):
Fix a memleak, close the dir after scanning new.
(message_info_free): Added so we can free the filename cached in
the messageinfo.
(camel_maildir_summary_finalise): Free the hostname.
* tests/folder/test[12].c (main): Clear out camel-test before
starting.
* providers/local/camel-mbox-summary.c (mbox_summary_sync_quick):
Because encode_x_evolution folds the line (sigh, because
encode_param does, unlike every other function in
camel-mime-utils), unfold the encoded result before comparing.
(mbox_summary_sync_quick): Another small memleak, free xevnew once
finished with it.
* camel-mime-utils.c (header_decode_quoted_string): Removed a
redundant check for c=0.
(header_unfold): New function to un-fold headers.
* providers/local/camel-local-summary.c
(local_summary_encode_x_evolution): some problems with encoding
tags, using the wrong output strings.
(local_summary_encode_x_evolution): We dont need to append a ;
either, param_list_format_append() will do it for us.
`
svn path=/trunk/; revision=6711
|
|
|
|
|
|
|
| |
* providers/pop3/camel-pop3-folder.c (pop3_finalize): Don't try to
free things if they haven't been set yet.
svn path=/trunk/; revision=6698
|
|
|
|
| |
svn path=/trunk/; revision=6696
|
|
|
|
|
|
|
|
|
|
| |
2000-11-28 Jeffrey Stedfast <fejj@helixcode.com>
* providers/smtp/camel-smtp-transport.c (smtp_connect): Clear the
exception if EHLO fails before trying HELO in the cases where the
SMTP provider doesn't announce its ESMTPness.
svn path=/trunk/; revision=6695
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-28 Not Zed <NotZed@HelixCode.com>
* providers/local/camel-maildir-summary.c
(camel_maildir_summary_init): Set the info size's properly, oops!
* tests/lib/folders.[ch]: Folder testing helpers.
* tests/folder/test2.c: Test basic message ops on folders.
* tests/folder/test1.c (main): Test basic folder ops on (local)
stores.
* providers/local/camel-local-provider.c
(camel_provider_module_init): Removed some debug.
* providers/local/camel-maildir-folder.c
(camel_maildir_folder_class_init): fix parent class.
* providers/local/camel-mh-folder.c (camel_mh_folder_class_init):
Fix parent class (damn cut & paste).
* providers/local/camel-maildir-store.c (get_folder): Call parent
impl.
(camel_maildir_store_class_init): Fix parent class setup.
(delete_folder): Check the folder exists before trying to delete
it.
(delete_folder): Try and make the delete operation atomic/rollback
failures. e.g. if one directory isn't empty, then create the
other empty ones back. Also clear the tmp directory fully first.
* providers/local/camel-mbox-store.c (get_folder): Call parent
impl.
(camel_mbox_store_class_init): parent class is camel_local_store,
not camel_folder, oops.
(delete_folder): Return an error if it doesn't exist, rather than
covering it up.
* providers/local/camel-mh-store.c (get_folder): Call parent impl.
(camel_mh_store_class_init): fix parent class setup.
(delete_folder): Error if it doesn't exist now.
* camel-folder.c (camel_folder_move_message_to):
(camel_folder_copy_message_to): Added warnings as these functions
are going to be removed later.
* camel-store.c (camel_store_get_root_folder): Fix for an early
api change. We want CAMEL_STORE_FOLDER_CREATE, not TRUE, since
its a flag.
(camel_store_get_default_folder): And here too.
* providers/local/camel-local-store.c (xrename): Handle renaming
folders differently to renaming files.
(get_default_folder_name): local stores dont have a default
folder, so make it so. Or at least, it doesn't seem to make sense
to have one.
(get_root_folder_name): Same for root.
(get_folder): Added parent implementation, that makes sure the
service path exists, if we are creating a new folder (but doesn't
create the folder).
2000-11-27 Not Zed <NotZed@HelixCode.com>
* providers/local/camel-local-store.c (xrename): Fixed races. Use
link/unlink, rather than rename, to properly detect overwriting
another file. And allow some files to be missing.
* providers/Makefile.am: Removed mh, mbox, added local, to the default.
svn path=/trunk/; revision=6693
|
|
|
|
|
|
|
|
|
|
| |
2000-11-28 Radek Doulik <rodo@helixcode.com>
* providers/local/camel-local-summary.c
(local_summary_decode_x_evolution): add scan = scan->next; to
avoid infinite loop
svn path=/trunk/; revision=6690
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-command.c (imap_read_untagged): Make
this gratuitously more complicated. No wait, I mean, fix bugs. Now
fully handles NULs in the data stream (which "can't happen" but
do) and also handles responses containing multiple literals. Also
does less copying than the original code.
* camel-stream-buffer.c (stream_read): Fix a bug that could make
it lose sync and/or overrun buffers.
svn path=/trunk/; revision=6688
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-27 JP Rosevear <jpr@helixcode.com>
* conduit/address-conduit.h: Remove "complete" field
* conduit/address-conduit.c (print_local): Make it print useful debug
info
(print_remote): ditto
(local_record_from_ecard): Make sure phone numbers get out to the pilot
(ecard_from_remote_record): Set phone strings to "" if they are null
(sequence_complete): unref the book view
(view_cb): ref the book view
(free_prepare): do nothing
* backend/pas/pas-backend-file.c (pas_backend_file_book_view_free):
Destroy the card lists with the rest of the view.
(pas_backend_file_changes): Don't destroy the card lists here
(pas_backend_file_book_view_free): Free the card/id lists in the
change context here, the correct place.
(pas_backend_file_changes): instead of here...
2000-11-27 JP Rosevear <jpr@helixcode.com>
* conduits/todo/todo-conduit.c (free_prepare): Ditto
* conduits/calendar/calendar-conduit.c (free_prepare): Adjust
free_prepare to the correct signal parameters. Don't actually
do anything - there is a semantic discrepancy that needs to be
resolved.
2000-11-27 JP Rosevear <jpr@helixcode.com>
* providers/local/.cvsignore: shush
svn path=/trunk/; revision=6681
|
|
|
|
|
|
|
|
| |
2000-11-27 Not Zed <NotZed@HelixCode.com>
* providers/Makefile.am: Removed mh, mbox, added local, to the default.
svn path=/trunk/; revision=6678
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-21 Not Zed <NotZed@HelixCode.com>
* providers/local/camel-mh-summary.c (mh_summary_sync_message):
Shite, -1 on error, >=0 on success. So i've just been truncating
all the messages I touched, good one zed.
(mh_summary_sync_message): Sigh, and write to the right damn fd as
well.
(mh_summary_sync_message): Argh, and we need to compare the length
of the old xev -1 to the new xev, to check if we can optimise it.
* camel-folder.c (camel_folder_change_info_new): Init the pool.
(camel_folder_change_info_add_source): Allocate string in the
pool.
(camel_folder_change_info_add_source_list):
(camel_folder_change_info_add_update): No longer free the key, as
it cannot be yet.
(change_info_add_uid): Add a new arg, copy, telling it whether to
copy the uid argument or not, and copy using mempool_strdup.
(change_info_cat): Tell add_uid to copy the string.
(camel_folder_change_info_add_update): Call add_uid directly.
(change_info_remove): Call add_uid directly, with no copy, and
dont free the key.
(change_info_free_update): No longer required since we dont malloc
the keys.
(camel_folder_change_info_add_uid): Fix for add_uid change.
(camel_folder_change_info_remove_uid):
(camel_folder_change_info_change_uid):
(change_info_clear): No longer needed, just set the size to 0 on
the array directly.
(camel_folder_change_info_clear): Empty the arrays directly, and
flush the mempool too, and also clear uid_source, incase anyone
was silly enough to call us in the wrong order.
(camel_folder_change_info_free): Dont bother clearing the array's
contents, just free the pool and throw away all the indexes.
* camel-folder.h: Added a mempool to CamelFolderChangeInfo to
store the uid's we get.
* camel-folder-search.c (search_match_all): If we are only
matching a single info, just use that/do the search.
(camel_folder_search_match_expression): New function. Matches a
single message info against an expression.
(camel_folder_search_init): Init a hash table used to map the
returned gptrarrays' to mempools.
(camel_folder_search_execute_expression): Store all of the string
data in a mempool, slightly faster, less wasted space (usually),.
(camel_folder_search_free_result): Check for the mempool that
stores the data for the list, and free that if we have it,
otherwise assume we need to use g_free() (which should only happen
if the list is empty at the moment).
: commented out the debugging prints. Got sick of 'executing
header search' crap.
* providers/vee/camel-vee-folder.c (camel_vee_folder_init): Init
changes.
(camel_vee_folder_finalise): Free changes.
(vfolder_add_match): Simple helper to add a new matching info
record.
(camel_vee_folder_add_folder): Only trigger a changed event if we
have changes.
(vfolder_change_match): New function, changes our local vfolder
info to match the source.
(vfolder_add_match): Add a new info to the vfolder list.
(vfolder_remove_match): Remove a no-longer matching info from the
vfolder summary.
(message_changed): check if the message still matches, and
remove/etc as required.
(camel_vee_folder_finalise, init): init/free search object.
(vee_folder_build_folder): Build the changes to the folder into
the changes data, as we go.
(folder_changed): If the folder gave us an explicit list of
changes, then process each one separately (unless there's a lot
added/changed).
* providers/vee/camel-vee-folder.h: Added a changes field to the
folder.
svn path=/trunk/; revision=6628
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-20 Jeffrey Stedfast <fejj@helixcode.com>
* camel-remote-store.c (remote_recv_line): Fixed to return the
correct bytecount in all cases which is the real fix to
imap_parse_nstring.
* providers/imap/camel-imap-command.c (imap_read_untagged): Again,
don't use strlen for the post-data, use 'n'.
* providers/imap/camel-imap-utils.c (imap_parse_nstring): Undo my
previous temp-fix.
svn path=/trunk/; revision=6621
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-20 Not Zed <NotZed@HelixCode.com>
* providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Fixes for
the summary messageid changes. Hash the messageid and store it.
(get_XOVER_headers): Use camel_folder_summary_info_new() to create
the summary item before adding it.
* camel-folder-summary.h (CamelMessageInfo): Changed the
messgae-id to be an 8 byte md5 hash, and the references list to be
an array of these.
* providers/local/camel-mh-summary.c (mh_summary_sync_message):
New function, sync out the message info stuff. Only updates the
X-Ev header if it can get away with it, otherwise writes out a
whole new message.
(mh_summary_sync): Added more functionality. All summary info is
now written to the X-Ev header, etc, and new messages re-written
if required during the sync process.
* providers/local/camel-local-folder.c
(local_set_message_user_flag): Set the XEVCHANGE flag.
(local_set_message_user_tag): And here too.
* providers/local/camel-local-summary.h: New flag
CAMEL_MESSAGE_FOLDER_XEVCHANGE to indicate the XEV header has
probably changed size and needs to be rewritten in whole.
* camel-folder-summary.c (next_uid_string): Want this static, not
const.
(message_info_new): Store the references and message-id values as
64 bit, binary hashes.
(message_info_load): fix for message-id/references changes.
(message_info_save): Likewise.
(camel_message_info_dup_to): And here.
(camel_message_info_free): And here too. No longer free
message_id, and simple free for references array.
(CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision.
(camel_folder_summary_init): Init memchunk allocators to empty.
(camel_folder_summary_finalize): Free memchunk allocators if
there.
(message_info_new): Use the chunk allocator to allocate message
info's.
(camel_folder_summary_info_new): New helper to allocate the
message info, and setup the memchunk if required.
(content_info_alloc): Likewise for content info's.
(message_info_load): Use summary_info_new_empty.
(content_info_new): Use content_info_alloc.
(content_info_load): "
(content_info_free): Free the content info as a memchunk.
(message_info_free): Free everything directly and the base as a
memchunk, rather than calling camel_message_info_free(), which
assumes a malloc'd array.
* providers/local/camel-local-summary.c: Include ctype.h, kill a
warning.
(local_summary_decode_x_evolution): If we get a NULL message info,
then dont try and set anything, just check for validity.
(camel_local_summary_write_headers): New function to write a set
of headers to an fd.
(camel_local_summary_check): Added some statistic generation
stuff for memory profiling.
* providers/local/camel-mbox-summary.c (header_write): Changed to
use stdoi functions to write out the header to a buffered stream,
instead of using writev, which is apparently slow (and writing
each line separately is slow anyway).
(mbox_summary_sync_full): New implementation. Does things
differently, doesn't use or require the content info stuff.
(summary_rebuild): Dont return an error if we start scanning at
the end of file.
(mbox_summary_sync_full): If we are not writing out new headers,
make sure we copy the From line as we go, and update frompos
appropriately.
(mbox_summary_sync_full): Always copy the From line from the
existing one, rather than trying to make one up ourselves.
(mbox_summary_sync): If we can get by with a quick-sync, then try
it, if that fails, then try a full sync anyway.
(mbox_summary_sync_quick): Quick sync. Only update system flags,
etc.
(mbox_summary_sync_full): Use the proper local summary encode_xev
function.
(header_evolution_decode): Removed, no longer needed.
(header_evolution_encode): Same.
(copy_block): No longer needed, removed.
(header_write): Removed, replaced with
camel_local_summary_write_headers.
(mbox_summary_sync_full): Fixed for header_write change.
* camel-mime-parser.c (folder_scan_step): Implement the new
optional parser state HSCAN_PRE_FROM, that returns the (currently
unfiltered) input data.
(folder_scan_drop_step): Do the right thing for the PRE_FROM
state.
(camel_mime_parser_scan_from): Update the doco.
(camel_mime_parser_scan_pre_from): Ok, make this behaviour
optional, it simplifies a lot of loops that dont otherwise need to
know about it.
(folder_scan_step): Made the PRE_FROM state optional.
(struct _header_scan_state): Made the bool vars 1 bit.
(folder_pull_part): Free the from_line buffer if it is there.
(folder_scan_skip_line): Added a new arg, can save the skpped data
to a byte_array, as we go.
(folder_scan_step): Fixed calls to skip_line approrpiately. Now
we save the from line as we parse it.
(camel_mime_parser_read): New function to read from the mime
parser buffer directly. Useful if you use the parser to read the
first/some headers, then need to scan the rest of the data,
without needing to use a seek(), or allocate your own buffers.
* camel-mime-parser.h (struct _header_state): Added a new parser state,
pre-from which returns any data found before a from line during
parsing (all other data can be retrieved by the caller except
this).
svn path=/trunk/; revision=6618
|
|
|
|
| |
svn path=/trunk/; revision=6601
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-17 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-utils.c (imap_parse_nstring): When
extracting a literal string, capture up until the end of the last
line - this we we don't lose any data if the byte count is off.
* providers/imap/camel-imap-command.c (imap_read_untagged): Use
the byte-read count to decrement the number of bytes left to read
rather than using strlen. Not only does this protect against a DoS
(embedded NUL chars in the literal string would make strlen
inaccurate) but it also improves performace a little.
* camel-remote-store.c (remote_recv_line): *Sigh* Return the
number of bytes read on success rather than 0. Also don't use
camel_stream_buffer_read_line since we can't get an accurate octet
count.
svn path=/trunk/; revision=6600
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-17 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-command.c (imap_read_untagged): Use
the byte-read count to decrement the number of bytes left to read
rather than using strlen. Not only does this protect against a DoS
(embedded NUL chars in the literal string would make strlen
inaccurate) but it also improves performace a little.
* camel-remote-store.c (remote_recv_line): *Sigh* Return the
number of bytes read on success rather than 0. Also don't use
camel_stream_buffer_read_line since we can't get an accurate octet
count.
svn path=/trunk/; revision=6599
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-17 Not Zed <NotZed@HelixCode.com>
* camel-stream-buffer.c (camel_stream_buffer_gets): We should
always terminate the string. No need to check outptr is in range,
its already been checked.
* providers/local/camel-mbox-summary.c (mbox_summary_sync): When
we update the summary, do it from mbox_summary->folder_size, not
the content info endpos (which isn't any good anymore anyway).
* providers/local/camel-mbox-folder.c (mbox_append_message): Set
the frompos from the current folder size, since summary_add wont
have initialised it to anything useful.
svn path=/trunk/; revision=6597
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-16 Not Zed <NotZed@HelixCode.com>
* providers/local/camel-local-summary.c
(local_summary_encode_x_evolution): Check the uid string is all
digits before trying to write a 'standard' x-ev header.
* providers/local/camel-maildir-summary.c
(camel_maildir_summary_info_to_name): Convert an info into a
maildir name:info filename.
(camel_maildir_summary_name_to_info): Convert a name:info filename
into an info, and tell us if it didn't match it.
(message_info_new): When creating a new filename, gets its info
from the flags field. Likewise if creating from an existing file,
extract the flags.
(maildir_summary_sync): Remove a small memleak. Also, if our
flags and that requires a filename change, perform that here.
(message_info_new): Get the received date from the filename.
Also, dont overwirte the uid if we have one.
(maildir_summary_check): Sort the summary in received order before
completion.
(maildir_summary_next_uid_string): Test the name for collusions
before we give it out. Retry, and if that fails, well, I guess we
collide :(
* providers/local/camel-mbox-folder.c (mbox_lock): Implement mbox
locking.
(mbox_unlock): And unlocking.
(mbox_append_message): Lock the folder for write before doing
anything.
(mbox_get_message): Lock the folder for read before doing
anything.
* providers/local/camel-local-folder.c (camel_local_folder_lock):
Implement something here. We handle the recursive ability but
pass the locking to the folder itself.
(camel_local_folder_unlock): Likewise for unlocking.
(local_lock): Default - do nothing, return success.
(local_unlock): Same.
(local_sync): Changed slightly for locking api changes, and also,
only lock around the sync process itself.
* camel-lock.c: New file - utility functions for locking using
different strategies and/or for locking folders safely.
* Makefile.am (libcamel_la_SOURCES): Adde camel-lock.[ch]
svn path=/trunk/; revision=6592
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-16 Not Zed <NotZed@HelixCode.com>
* camel-lock.c: New file - utility functions for locking using
different strategies and/or for locking folders safely.
* Makefile.am (libcamel_la_SOURCES): Adde camel-lock.[ch]
svn path=/trunk/; revision=6590
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-15 Not Zed <NotZed@HelixCode.com>
* providers/Makefile.am: Removed local again, not quite ready.
2000-11-14 Not Zed <NotZed@HelixCode.com>
* camel-folder-summary.c (message_info_new_from_message): Use
message_info_new to create the summary from headers, instead of
getting directly from the message.
(format_recipients): No longer required.
* providers/Makefile.am (SUBDIRS): Added local.
2000-11-11 Not Zed <NotZed@HelixCode.com>
* camel-mime-parser.c (folder_push_part): Make sure 'atleast' is
at least 1, always. This is possibly a temporary fix for a
bad failure mode on bad multipart messages.
(folder_scan_content): Go until inend, not inend+1. Changed the
continuation and retry logic to be simpler and more robust. If we
can't find a marker within
the atleast we need, just set it to 1, and try again, rather than
just going to the next smaller limit (boundary check checks the
length anyway).
(header_append): streamline the empty line case. And strip
trailing \r's if there are any (\n's already stripped).
(folder_scan_header): Reordered and cleaned up a lot. Check for
continuation only once, and compress lwsp then. Assume the header
buffer already has end of line's stripped, and simplify some things:
Only check for end of headers once and easier.
Dont check to remove end of line character
Dont bother testing inptr-start if we get a boundary match - it is
always zero.
(folder_scan_header): Removed the unused part variable, and a few
pointless assignments.
(folder_scan_header): Change the end limit to be 1 higher, to make
sure we get all content.
(folder_scan_content): And here too.
(folder_scan_header): Killed a warning.
(folder_push_part): Removed a bad comment. Actually
boundarylenfinal can be zero for a new message not in a
multipart. So we fix that here.
2000-11-09 Not Zed <NotZed@HelixCode.com>
* camel-mime-utils.c (header_decode_param_list): Renamed from
header_param_list_decode.
(header_param_list_decode): New external function to decode a
parameter list.
(header_param_list_format_append): Made public.
(header_param_list_format): Another new public helper function for
formatting just a param list.
* camel-folder-summary.c (next_uid_string): Default implementation
is the same as before.
(camel_folder_summary_class_init): And set it up.
* camel-folder-summary.h: Make next_uid_string a virtual function.
* camel-folder.c (camel_folder_change_info_changed): New function
to return true if the changeset contains any changes.
svn path=/trunk/; revision=6577
|
|
|
|
| |
svn path=/trunk/; revision=6576
|
|
|
|
|
|
|
| |
least.
Checking in to make a backup.
svn path=/trunk/; revision=6575
|
|
|
|
|
|
|
|
|
| |
* providers/mbox/camel-mbox-summary.c
(camel_mbox_summary_build_from): put a space before a single-digit
day of the month since it seems some mailers are fantastically
picky about this. (bugs.gnome.org #27232)
svn path=/trunk/; revision=6538
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-auth.c (imap_try_kerberos_v4_auth):
Fix error handling. (Only send a "*" to bail out of authentication
if the server hasn't already bailed on us.)
svn path=/trunk/; revision=6520
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-07 Not Zed <NotZed@HelixCode.com>
* camel-mime-filter-bestenc.c (complete): Implement a complete()
function, now we need one.
(filter): Upgraded to match rfrc2045 properly. Checks also for
length of line and valid CRLF sequences.
(camel_mime_filter_bestenc_get_best_encoding): Do the work of
working out what is the best encoding given what we found about
the stream.
* camel-mime-part.c (camel_mime_part_encoding_to_string): Use a
lookup table to get the encoding naem, and add the binary type.
(camel_mime_part_encoding_from_string): Likewise for the reverse.
* camel-mime-part.h: Added the binary encoding type, see rfc2045.
* camel-mime-utils.c (header_param_list_format_append): Dont put a
space before ;'s in parameter lists, makes them more
readable/consistent.
* camel-mime-message.c (multipart_has_8bit_parts): Cleaned up the
old stuff, well removed it.
(camel_mime_message_set_best_encoding): Added another argument
that lets you select what you want to set the best of. i.e. for
smtp transport we only need 7 bit, and dont need to optimise the
charset (although of course, we should always).
(find_best_encoding): Implement this feature, if we are not
getting the best charset, use the one we have.
(best_encoding): Set the charset on the part appropriately. Sigh,
the interfaces for this are nonexistant.
(find_best_encoding): Tell the bestenc filter that lf should be
treated as crlf for the purposes of determining encodings.
2000-11-06 Not Zed <NotZed@HelixCode.com>
* camel-charset-map.c (camel_charset_init): Init function for an
iterative charset determinator.
(camel_charset_step): Iterate another buffer.
(camel_charset_mask): Removed, since it couldn't have worked.
(camel_charset_best): Use the iterative interface to do the work.
(camel_charset_best_name): Get the best name for a charset so far.
* camel-mime-filter-bestenc.c: New class, a stream
filter that can be used to memory-efficiently determine the best
encoding and/or charset to use for a given stream of bytes.
* Makefile.am (libcamelinclude_HEADERS): Added stream-null*.
(libcamel_la_SOURCES): Added bestenc*
* camel-stream-null.c: New class, a null-stream, that always
succeeds, and never has any contents.
* camel-stream.c: Minor pointless changes. Was going to do
something else but changed my mind. Added trivial default
implementations for all callbacks.
* camel-mime-message.h: Cleaned up some old cruft.
* camel-folder-summary.c (camel_folder_summary_format_address):
address_list_format() no longer encodes, so we dont need to decode
it.
* camel-address.c (camel_address_unformat): New function, attempts
to reverse the formatting process on display addresses.
(camel_address_length): New function to get the number of
addresses, without having to peek the structure.
* camel-mime-message.c (camel_mime_message_set_from): Fix a typo.
(camel_mime_message_finalize): Only unref from/reply_to if we have
it.
(camel_mime_message_set_recipients): New function - set the
recipients as a CamelInternetAddress. This function effectively
deprecates the older recipient setting functions.
(camel_mime_message_add_recipient): What the hell, i'll bite the
bullet. Terminate this function. The old api was ambiguious and
inefficient and didn't work right anyway.
(camel_mime_message_remove_recipient_address): And this one.
(camel_mime_message_remove_recipient_name): And this one too.
(camel_mime_message_set_recipients): If we set an empty header,
then remove it from the header list. Allow a null receipient
object to clear a header.
(camel_mime_message_set_from): Likewise, if setting an empty from
address.
(camel_mime_message_encode_8bit_parts): Eeek!!
camel_stream_mem_new_with_byte_array owns the byte_array we give
it, so make sure we dont free any of it!
(camel_mime_message_encode_8bit_parts): Infact, i'll just rewrite
the whole lot, its a bit of a mess. Should really rename it and
make it a little more useful too, lets see ...
(best_encoding): This has a string interface? Oh boy.
(camel_mime_message_foreach_part): New experimental function to
iterate over all message parts. Might not remain.
(camel_mime_message_has_8bit_parts): New implementation using
foreach_part. Fixed a couple of problems.
(find_best_encoding): New function, that finds the best encoding
for a given part (will probably be moved to camel-mime-part), and
also the best charset to use if it is a text part. Since one
affects the other it is a two pass process, but uses streams and
not memory to achieve this.
(camel_mime_message_set_best_encoding): Uses the function above to
configure an entire message for the best encoding possible given
transport constraints.
(camel_mime_message_encode_8bit_parts): Reimplemented to use the
function above to perform the work.
* camel-internet-address.c
(camel_internet_address_format_address): Dont put <> around a lone
address with no real name.
(camel_internet_address_encode_address): Similarly.
(internet_decode): Actually return the count of decoded addresses.
(internet_unformat): Implement the unformatting routine.
2000-11-05 Not Zed <NotZed@HelixCode.com>
* providers/smtp/camel-smtp-transport.c (_send_to): Changed to get
the internetaddress directly, rather than having to parse it
itself.
* camel-address.c (camel_address_format): Added a new function
which will format address, suitable for display.
(camel_address_cat): Concatentate 1 camel address onto another.
It is upto the caller to ensure the addresses are of compatible
types.
(camel_address_new_clone): New function to create a new address by
copying an existing one of the same type.
(camel_address_copy): New helper function to copy an address.
* camel-mime-message.h (struct _CamelMimeMessage): Removed cached
copy of date string.
(struct _CamelMimeMessage): Added date_received info.
* camel-mime-message.c (camel_mime_message_get_date_string):
Removed. Nothing uses it anyway, and it is redundant.
(camel_mime_message_finalize): No more date_str.
(camel_mime_message_init): No more date_str, initialise
date_received*
(write_to_stream): Change the check for a date header.
(process_header): No longer track the date_str.
(camel_mime_message_get_received_date): Removed. totally invalid
anyway.
(camel_mime_message_get_sent_date): Removed. Redundant. The only
'date' is the sent date, the received date is just made up.
(camel_mime_message_get_date): Args changed to be more consistent
with utility functions.
(camel_mime_message_get_date): Dont set the date when we're asked
for it (if its not set by the time its written, it'll be set
then).
(camel_mime_message_get_date_received): Actually do 'the right
thing' here, if we have a received header, use that to determine
the received date. And return the data in the same format as
get_date.
(camel_mime_message_set_from): Changed the api to better match
what we should be doing. Pass a camelinternetaddress, etc.
(camel_mime_message_set_reply_to): Cahnged similarly to take an
internetaddress.
(camel_mime_message_get_reply_to): Likewise.
(camel_mime_message_finalize): Unref the from/reply_to objects.
(format_address): Removed, no longer needed.
(process_header): Changed to store the from/reply_to as
internetaddress's.
(write_to_stream): Set the from header directly to empty, if we
dont have one. Maybe we should just abort, and/or create one
based on the current user.
* camel-mime-utils.c (header_address_list_format): Renamed to
header_address_list_encode, which is what it is actually doing.
(header_address_list_format_append): Similarly.
(encoding_map[]): Removed, no longer used.
(header_address_list_encode_append): Take another arg, do we
encode the address (for internet), or not (for display - utf8
only).
(header_address_list_format): Re-added this function, but now it
generates a display version only. Surprise surprise, that is all
anythign needs to generate anyway. Sigh.
* camel-internet-address.c (camel_internet_address_get): Return
false if we get an invalid index only.
(camel_internet_address_encode_address): Helper function to encode
a single address for mailing.
(internet_encode): Use the above function to format it.
(camel_internet_address_format_address): Format a single address
for display.
(internet_format): Implement the display version.
(camel_internet_address_class_init): Init the internet_format
virtual function.
(internet_cat): Implement virtual function to concatenate
addresses.
* camel-folder-summary.c
(camel_folder_summary_info_new_from_header): new function, only
build the summary info, dont add it.
(camel_folder_summary_info_new_from_parser): Likewise, for new
info from parser.
(camel_folder_summary_add_from_parser): Cahnged to call function
above to build info.
(camel_folder_summary_add_from_header): Changed to call function
above, to build info.
(camel_folder_summary_info_free): New function to free the summary
message info.
(camel_folder_summary_clear): Changed to clal above to free info.
(camel_folder_summary_remove): Likewise.
(camel_folder_summary_add): Cleaned up the clashing uid
re-assignment logic a little bit.
(camel_folder_summary_decode_uint32): Fixed a typo, 01 != -1.
(camel_folder_summary_decode_time_t): Return -1 on error.
(camel_folder_summary_encode_off_t): New function to encode an
off_t type.
(camel_folder_summary_decode_off_t): And likewise for the reverse.
(CAMEL_FOLDER_SUMMARY_VERSION): Bumped the summary version, since
we're now encoding time/off_t's right.
(summary_header_save): Use time_t encoder to save the timestamp.
(summary_header_load): Likewise for decoding the timestamp.
(content_info_load): Decode off_t types directly, now we can.
(content_info_save): And likewise for encoding.
(camel_folder_summary_add_from_message): New function, create a
summary item from an existing message and add it.
(camel_folder_summary_info_new_from_message): New function, create
a summary item from an existing message.
(summary_build_content_info_message): New function to do the dirty
work of building the conent info/indexing, from a message source.
(format_recipients): Format an internetaddress suitable for the
summary.
(message_info_new_from_message): Build a new summary item from a
mime message.
(content_info_new_from_message): Build a new conent info from a
mime part.
(camel_folder_summary_class_init): Init the new class functions.
(message_info_new_from_message): Fixed for message api change.
Added documentation to the functions.
svn path=/trunk/; revision=6474
|
|
|
|
| |
svn path=/trunk/; revision=6472
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2000-11-04 Not Zed <NotZed@HelixCode.com>
* camel-mime-part-utils.c
(camel_mime_part_construct_content_from_parser): Set the
preface/postface from the parser into the multipart object.
* camel-multipart.c (camel_multipart_set_postface): Function to
set the postface text on a multipart.
(camel_multipart_set_preface): Similarly for preface text.
* camel-mime-parser.c (folder_scan_content): If we scan until a
boundary, then we do not include the \n that starts the boundary
line in the content.
(struct _header_scan_stack): Added a ByteArray to store the
multipart pre/post-text as we're scanning.
(folder_pull_part): Free pre/posttext if they are allocated.
(folder_scan_step): Build into the pre/posttext arrays as we
encounter data.
(camel_mime_parser_preface): REturn the multipart preface text, if
there is any scanned.
(camel_mime_parser_postface): Likewise for postface text.
(byte_array_to_string): helper function for above.
* providers/mbox/camel-mbox-folder.c (mbox_append_message): Change
the from line to be "\nFrom ..." always, so no need to
check/append a \n to messages.
(mbox_append_message): Open the output stream with append mode
[assuming this is more efficient than seeking to the end]
And dont prepend \n on the From line if its the first in the
mbox.
(mbox_append_message): Pass the offset of the real start of the
"From " line when we perform the update (which may != 'seek')
* camel-mime-filter-charset.c (complete): Removed the terminating
NUL 'fix'.
* camel-stream-filter.c (do_read): Added some debug.
(do_flush): And here.
(do_write): And here too.
(do_write): ARGH!!! ARGH! Ok, so the filter stream was writing a
different number of bytes than the requester was asking it to
write (because of filtering, of course!). So instead of returning
the true number of written bytes, we'll return what they asked us
to write - unless there is an error in which case we return -1.
* camel-mime-utils.c (base64_encode_close): Sigh, forgot to make
it unsigned. I think this is actually a gcc bug as (48 >> 2)
somehow ended up negative, when it obviously should not, even if
the data load was signed.
svn path=/trunk/; revision=6388
|
|
|
|
|
|
|
| |
* providers/pop3/camel-pop3-store.c (camel_pop3_store_expunge):
Unbreak this.
svn path=/trunk/; revision=6381
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-provider.h: Add an "url_flags" field to CamelProvider.
Move the CAMEL_SERVICE_URL_* defines here and remove the SERVICE_
part of the name.
* camel-service.h: Remove CAMEL_SERVICE_URL_* flags and
service->url_flags field.
* camel-service.c (check_url, get_path): Get URL flags from
service->provider, update for changed flag names.
* providers/*/camel-*-provider.c: Add URL flags to provider
structures.
* providers/*/camel-*-{store,transport}.c, camel-remote-store.c:
Remove service->url_flags initialization.
svn path=/trunk/; revision=6370
|
|
|
|
|
|
|
|
|
|
| |
2000-11-02 Jeffrey Stedfast <fejj@helixcode.com>
* providers/imap/camel-imap-store.c (get_folder_info): Quote
foldernames when sending to the IMAP server because the folder
name might contain spaces.
svn path=/trunk/; revision=6344
|
|
|
|
|
|
|
|
| |
2000-11-02 Not Zed <NotZed@HelixCode.com>
* Merged in camel-incremental-branch.
svn path=/trunk/; revision=6336
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (get_folder_info): Remove old
subbed folders from hash table after freeing them.
svn path=/trunk/; revision=6335
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_get_full_name): Deal
correctly with namespace == ""
svn path=/trunk/; revision=6322
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* camel-service.c (service_disconnect): Add a new argument, clean,
that says whether or not to try to disconnect cleanly.
* camel-remote-store.c (remote_send_string, remote_send_stream,
remote_recv_line): disconnect uncleanly on failure to prevent
infinite loops when providers would normally send commands from
disconnect(). Remove some unneeded CamelException goo.
* providers/smtp/camel-smtp-transport.c (smtp_disconnect):
* providers/pop3/camel-pop3-store.c (pop3_disconnect):
* providers/nntp/camel-nntp-store.c (nntp_store_disconnect):
* providers/imap/camel-imap-store.c (imap_disconnect): Don't send
QUIT/LOGOUT if !clean.
svn path=/trunk/; revision=6303
|
|
|
|
| |
svn path=/trunk/; revision=6275
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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().
svn path=/trunk/; revision=6272
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=6256
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
svn path=/trunk/; revision=6253
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=6234
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (get_folder_info): Fix folder
listing code infinite loop.
svn path=/trunk/; revision=6178
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
svn path=/trunk/; revision=6167
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=6157
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (get_folder_info): Fill in the
message_count and unread_message_count flags (if !fast).
svn path=/trunk/; revision=6151
|
|
|
|
| |
svn path=/trunk/; revision=6143
|
|
|
|
|
|
|
|
|
| |
2000-10-23 Chris Toshok <toshok@helixcode.com>
* providers/nntp/Makefile.am (libcamelnntpinclude_HEADERS): add
camel-nntp-types.h.
svn path=/trunk/; revision=6133
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-command.c (imap_read_untagged): Fix a
"how could this have been working before" memory overrun bug
found by Vlad.
svn path=/trunk/; revision=6129
|
|
|
|
|
|
|
|
| |
2000-10-20 Chris Toshok <toshok@helixcode.com>
* providers/Makefile.am (SUBDIRS): re-enable the nntp provider.
svn path=/trunk/; revision=6090
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=6089
|
|
|
|
|
|
|
|
| |
* 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.
svn path=/trunk/; revision=6065
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-folder.c (imap_refresh_info): Emit
message_changed and folder_changed as appropriate.
svn path=/trunk/; revision=6064
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
svn path=/trunk/; revision=6046
|
|
|
|
| |
svn path=/trunk/; revision=6035
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5978
|
|
|
|
|
|
|
| |
folder selection again, since it depends on the uidvalidity
having been set.
svn path=/trunk/; revision=5976
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
svn path=/trunk/; revision=5974
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5961
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
svn path=/trunk/; revision=5960
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5944
|
|
|
|
|
|
|
|
| |
* providers/imap/camel-imap-store.c (get_folder_info): Deal with
the possibility of not getting a LIST response back for the top
level.
svn path=/trunk/; revision=5941
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.)
svn path=/trunk/; revision=5891
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5881
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5868
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5853
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5832
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5822
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5808
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5769
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5767
|
|
|
|
|
|
| |
of missing `camel-nntp-types.h'.
svn path=/trunk/; revision=5762
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5760
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
svn path=/trunk/; revision=5739
|