2002-06-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_ctx_op_step): Loop on our reads while
errno is EINTR or EAGAIN. Also make sure to completely read stdout
and stderr by keeping better state.
svn path=/trunk/; revision=17311
2002-06-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_ctx_op_step): Loop on our reads while
errno is EINTR or EAGAIN.
svn path=/trunk/; revision=17307
2002-06-26 Jeffrey Stedfast <fejj@ximian.com>
* camel-multipart-encrypted.c (camel_multipart_encrypted_encrypt):
Oops, this needs to take a userid argument.
svn path=/trunk/; revision=17299
2002-06-26 Jeffrey Stedfast <fejj@ximian.com>
* camel-multipart-encrypted.[c,h]: New class implementing the
multipart/encrypted content type. Contains methods for encrypting
and decrypting a multipart/encrypted MIME object.
svn path=/trunk/; revision=17296
2002-06-26 Not Zed <NotZed@Ximian.com>
* camel-gpg-context.c: Include <sys/time.h> for struct timeval.
* providers/local/camel-local-provider.c
(camel_provider_module_init): Removed spoold provider. The spool
provider does it now.
2002-06-25 Not Zed <NotZed@Ximian.com>
* providers/local/camel-spool-folder.c (camel_spool_folder_new):
Support a new xstatus option - folders update/honour the
Status/X-Status headers in addition to X-Evolution.
* providers/local/camel-local-summary.c
(camel_local_summary_write_headers): If supplied with an
additional status or xstatus arg, write a Status header and/or
X-Status. Also fix the case of properly terminating the headers
if an xev line isn't supplied.
* providers/local/Makefile.am (libcamellocalinclude_HEADERS,SOURCES):
Removed spoold-store.[ch].
* providers/local/camel-local-provider.c
(camel_provider_module_init): For the spoold type, just use the
spool store instead.
* providers/local/camel-spool-store.h: Added a type field, so the
1 store can implement different types without having to subclass.
* providers/local/camel-spool-store.c
(camel_spool_store_get_toplevel_dir): Removed, inherits from local
store now.
(construct): If we're pointing to a file, treat it as mbox mode,
otherwise treat it as 'elm' mode.
(get_folder): Only test for INBOX in mbox mode.
(get_folder_info_elm):
(get_folder_info_mbox): Two alternatives for getting folder info,
depending on the type of folder we're looking at.
(get_folder_info_mbox): Make the url include the protocol.
(scan_dir): "
* providers/local/camel-spoold-store.c
(camel_spoold_store_get_toplevel_dir): Removed, inherits from
local store now.
* camel-folder.c (get_message_user_tag): Dont use a
g_return_if_fail for info==NULL. This is not an error.
(set_message_user_tag): And same here.
(set_message_user_flag): Sigh, and here.
(get_message_user_flag): And here.
(set_message_flags): and here ...
(get_message_flags): Dum de dum, de done at last.
* providers/local/camel-mbox-folder.c (mbox_get_message): Check
for new messages whenever we retrieve one. In the common
no-update case, this is a single stat.
(mbox_get_message): If we need to rescan, then force a full rescan
to make sure it does the right thing.
(mbox_get_message): Cleanup the exception handling a bit, if we do
get an error, propagate any folder changes anyway as well.
(mbox_set_message_user_flag): Argh more of these stupid g_returns
taht shouldn't be.
(mbox_set_message_user_tag): Here too.
(mbox_set_message_flags): If the read flag is being changed, mark
it as an xevchange (i.e. Status line change).
* providers/local/camel-mbox-summary.c (summary_rebuild): Merged
into summary_update.
(summary_update): Changed to allow it to update existing lists of
messages without clearing out the summary.
(mbox_summary_check): Dont clear the summary, just re-scan.
(message_info_new): Attempt to support the 'Status: RO' elm/pine
thing.
(camel_mbox_summary_encode_status):
(camel_mbox_summary_decode_status): Util functions for
creating/parsing the Status line.
(camel_mbox_summary_sync_mbox): Write out the status line if we're
going to try support it.
(camel_mbox_summary_xstatus): Implement option to control
read/write of (x-)status.
(message_info_new): Do x-status stuff based on run-time option.
(camel_mbox_summary_sync_mbox): "
(mbox_summary_add): If x-status enabled, then always add
status/x-status headers to message.
* camel-folder-summary.c (summary_assign_uid): If the messageinfo
is already in the summary, AND is the same messageinfo, dont do
anything, return a value to indicate this.
(camel_folder_summary_add): Do nothing if this info already in the
summary, so we can perform updates.
2002-06-24 Not Zed <NotZed@Ximian.com>
* providers/local/camel-local-summary.c
(camel_local_summary_check_force): New method to force the next
summary check to be a full check, set if a mismatch occurs.
* camel-folder-summary.c (camel_folder_summary_load): If we have
no summary path set, dont do any i/o, rather than abort.
(camel_folder_summary_save): "
(camel_folder_summary_header_load): "
* providers/local/camel-spool-store.h: Inherit from camel mbox
store, even if we override almost everything.
* providers/local/camel-local-folder.c
(camel_local_folder_construct): If the base path points to a file,
use that as the folder path as well.
* providers/local/camel-spool-folder.h: Inherit from
camel-mbox-folder.
* providers/local/camel-spool-summary.c (spool_summary_sync_full):
Use camel_mbox_summary_sync_mbox to do most of the work.
* providers/local/camel-spool-summary.[ch]: Make spool-summary
inherit from mbox summary rather than foldersummary.
* providers/local/camel-mbox-summary.c (mbox_summary_sync): Make
sync_full/quick virtual methods.
(camel_mbox_summary_sync_mbox): The full sync method put into a
simple function that sync's from fd to fd.
(mbox_summary_sync_full): Use summary_sync_mbox to do the real
work.
(mbox_summary_check): Create removed events if the folder gets
cleared. Also, dont clear the summary before a rebuild, try to
merge.
svn path=/trunk/; revision=17284
2002-06-25 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_hash_str): Return the option as
--digest-algo=<micalg>
(gpg_ctx_parse_status): Decode more status information and keep
track of trust and such.
(gpg_ctx_op_complete): Make sure we aren't waiting for gpg to
write data to stdout (such as encrypted/decrypted data or a
signature).
(gpg_encrypt): Remove the fejj@stampede.org hard-coded value
(which had only meant to be for testing).
svn path=/trunk/; revision=17271
2002-06-24 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_ctx_get_argv): Use --command-fd rather
than --passphrase-fd since what we really want is an interactive
mode (besides, --passphrase-fd requires a passphrase to be sent
before --status-fd will send a NEED_PASSPHRASE status message).
(gpg_ctx_parse_status): When we encounter a BAD_PASSPHRASE, tell
the session to uncache it.
svn path=/trunk/; revision=17268
2002-06-24 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_ctx_get_argv): Use --command-fd rather
than --passphrase-fd since what we really want is an interactive
mode (besides, --passphrase-fd requires a passphrase to be sent
before --status-fd will send a NEED_PASSPHRASE status message).
svn path=/trunk/; revision=17267
2002-06-22 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.c (gpg_encrypt): Return -1 on error.
(gpg_decrypt): Same.
(gpg_sign): Again here.
(gpg_ctx_op_step): Only attenmpt to read from the status-fd if we
are not already 'complete'.
* camel-pgp-mime.c (camel_pgp_mime_part_encrypt): Flush the
filtered stream.
svn path=/trunk/; revision=17257
getting very close to working now... I think that as soon as I debug this
segfault, it will work. Probably dereferencing a NULL pointer or something
stupid like that.
svn path=/trunk/; revision=17255
2002-06-21 Jeffrey Stedfast <fejj@ximian.com>
* camel-gpg-context.[c,h]: New source files implementing the
CamelCipherContext class for gnupg.
* camel-pgp-context.c (camel_pgp_context_new): Return a
CamelCipherContext.
* camel-pgp-mime.c (camel_pgp_mime_part_decrypt): Take a
CamelCipherContext argument rather than a CamelPgpContext since we
now have a CamelGpgContext also.
(camel_pgp_mime_part_encrypt): Same.
(camel_pgp_mime_part_verify): Same.
(camel_pgp_mime_part_sign): Same.
svn path=/trunk/; revision=17251
2002-06-20 Jeffrey Stedfast <fejj@ximian.com>
* camel-digest-folder.c: Updated to support searching as well as
making it use CamelDigestSummary.
* camel-digest-summary.[c,h]: New class to handle the summary for
CamelDigestFolder.
* camel-tcp-stream-ssl.c (set_errno): PR_IO_TIMEOUT_ERROR should
map to ETIMEDOUT and not EAGAIN.
(stream_connect): Reset the PR_Poll() timeout back to 2 minutes as
this wasn't the problem afterall.
svn path=/trunk/; revision=17249
2002-06-20 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-ssl.c (set_errno): PR_IO_TIMEOUT_ERROR should
map to ETIMEDOUT and not EAGAIN.
(stream_connect): Reset the PR_Poll() timeout back to 2 minutes as
this wasn't the problem afterall.
svn path=/trunk/; revision=17246
2002-06-19 Not Zed <NotZed@Ximian.com>
* camel-mime-parser.c (folder_scan_drop_step): Drop back to
initial state if we came from eof state.
svn path=/trunk/; revision=17245
2002-06-19 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-ssl.c (stream_connect): Set the poll timeout to
be PR_INTERVAL_MIN, this one shouldn't need to be 2 minutes (plus
it blocks my connection at home for far too long).
svn path=/trunk/; revision=17234
2002-06-19 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-folder.c (imap_refresh_info): Make
sure we hold the command_lock before accessing current_folder.
(imap_append_online): Same.
(imap_transfer_online): Same.
* providers/imap/camel-imap-store.c (delete_folder): We need to
hold the command_lock before we can set the current_folder to
NULL.
(rename_folder): Same.
(get_folder_info_online): We need to make sure we hold the
command_lock in order to use current_folder.
(everywhere): Same.
svn path=/trunk/; revision=17233
2002-06-19 Jeffrey Stedfast <fejj@ximian.com>
* providers/smtp/camel-smtp-transport.c (smtp_connect): Don't
bother trying to authenticate (and thus don't throw up an error
dialog) unless the server is an ESMTP server and supports
authentication.
* camel-sasl-plain.c: Change the user-friendly name to PLAIN, this
is what it should be. Not "Password" because user's immediately
think that they need authentication when they see "Password" even
if they don't need it at all.
svn path=/trunk/; revision=17232
2002-06-17 Jeffrey Stedfast <fejj@ximian.com>
* camel-vee-folder.c (camel_vee_folder_add_folder): Update the
freeze state of the new source folder.
(camel_vee_folder_remove_folder): Undo any freeze state that we
have imposed on this source folder.
svn path=/trunk/; revision=17216
2002-06-14 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-folder.c (imap_sync_online): Unlock
the command_lock after each UID STORE command so that other
(probably more important) threads can send their requests.
svn path=/trunk/; revision=17188
2002-06-14 Jeffrey Stedfast <fejj@ximian.com>
* camel-multipart-signed.c: Updated to use ctx->sign_protocol
rather than ctx->protocol.
* camel-cipher-context.h: Add an ecnryption protocol member.
* camel-pgp-context.c (camel_pgp_context_init): Set the encryption
protocol.
svn path=/trunk/; revision=17186
2002-06-11 Not Zed <NotZed@Ximian.com>
* camel-vtrash-folder.c (camel_vtrash_folder_class_init): Our
parent class is camel_vee_folder, not camel_folder, fix setting of
parent folder (unused anyway, but removes a run-time warning).
2002-06-06 Not Zed <NotZed@Ximian.com>
* camel-folder-thread.c (thread_summary): Do the work here.
(camel_folder_thread_messages_remove): Implement. Remove some
uid's from the tree. Disalbe from build, for now.
(remove_uid_node_rec): Actually do the work.
(camel_folder_thread_messages_add): Implement. Add some summary
items to the tree. Disable from build though.
(camel_folder_thread_messages_apply): Make a thread tree built
using camel_folder_thread_new() map to a new set of uids,
preserving some order. Meant primarily to manage deleted + added
uids in a user-friendly manner.
svn path=/trunk/; revision=17164
2002-06-09 Jeffrey Stedfast <fejj@ximian.com>
* camel-multipart-signed.c (camel_multipart_signed_verify): Use
CAMEL_EXCEPTION_SYSTEM rather than '1' for clarity.
svn path=/trunk/; revision=17151
2002-06-07 Jeffrey Stedfast <fejj@ximian.com>
* camel-tcp-stream-ssl.c (stream_connect): Up the timeout on the
connect code to 2 minutes.
svn path=/trunk/; revision=17140
2002-06-07 Not Zed <NotZed@Ximian.com>
* camel-pgp-context.c (camel_pgp_context_init): Duh! The protocol
is application/pgp-signature. TODO: need to have a signed and an
encrypted protocol specified separately.
svn path=/trunk/; revision=17139
* camel-mime-utils.c (header_decode_mailbox): Parse
"From: Dan Winship <danw>" (with no domain) in the way the sender
meant it, even though it's completely wrong.
svn path=/trunk/; revision=17137
2002-06-04 Not Zed <NotZed@Ximian.com>
* providers/local/camel-local-provider.c: Remove the
CONF_DEFAULT_PATH entry, as this is handled by the url config
stuff. This made it basically impossible to configure any local
folder from the gui.
* providers/local/camel-local-folder.c (local_refresh_info): Force
a refresh. Should work for all local folders to force them to
refresh.
* providers/local/camel-maildir-folder.c (maildir_refresh_info):
Removed, moved into camel-local-folder.
* providers/local/camel-mh-summary.c (mh_summary_next_uid_string):
Once we assign or get a uid, tell the summary of this, so the next
uid we get will be higher than any previously.
* camel-object.c (camel_object_ref, camel_object_unref): I got
sick of casting, these now take void * like they should, and
perform their own run-time type checking.
* providers/local/camel-mh-store.c (recursive_scan): Changed to
use stat, not lstat (*shrug* maybe someone wants to softlink their
maildir tree?).
(inode_hash):
(inode_equal):
(inode_free): Copied from camel-maildir store (should put into
camel-local-store or utils?).
(recursive_scan): Changed to check for re-visiting inodes. Also,
it builds the tree itself, rather than using folder_info_build.
(add_folder): Changed to folder_info_new.
(recursive_scan): Properly honour the recursive flag. Also,
lookup unread count from folder.
(folder_info_new): Init unread message count to -1, since we dont
know yet.
(folder_info_new): Take the name as an argument, and perform the
merging here.
(folders_update): Util func to add/remove folders from .folders
file. I'm assuming its sorted.
(get_folder): Add the folder to .folders if we created a new one,
and if it exists.
(delete_folder): Remove from .folders, etc.
(folders_scan): If we have a .folders file, read and use that
instead.
(recursive_scan): Handle scanning from a particular directory
properly.
(rename_folder): Implement so we can track any changes to the
.folders file if its turned on.
** Applied patch below from Greg Hudson.
2002-05-10 Greg Hudson <ghudson@mit.edu>
* camel-mh-store.c (get_inbox, get_folder_info, recursive_scan,
add_folder): Implement support for MH stores.
* camel-mh-summary.c (mh_summary_check, sort_uid_cmp): Sort MH
messages by message number (uid), like we sort maildir messages by
date.
* camel-local-provider.c (mh_provider): Turn on source and store
flags.
svn path=/trunk/; revision=17130
2002-06-03 Not Zed <NotZed@Ximian.com>
* camel-vee-folder.c (camel_vee_folder_add_folder):
(folder_changed_change):
(folder_changed_remove_uid):
(folder_changed_add_uid):
(vee_folder_build_folder): Check that any unmatched operation is
not concerning any vfolder. Other vfolders should never be part of any
unmatched handling. For #24615, and others probably.
svn path=/trunk/; revision=17075
2002-06-02 Not Zed <NotZed@Ximian.com>
* camel-sasl.c (camel_sasl_new):
(camel_sasl_finalize): setup/free the mech string.
* camel-sasl.h: Added 'mech' mechanism string.
2002-06-01 Not Zed <NotZed@Ximian.com>
* providers/imap/camel-imap-folder.c (imap_getv): Implement. Only
the object_description arg.
(camel_imap_folder_get_type): Init parent_class holder.
* providers/local/camel-local-folder.c (local_getv): Implement,
object_description arg.
* camel-folder.c (folder_getv): Implement, add a bunch of args you
can get -> camel_folder_get_unread_count etc will be going RSN i
hope.
(camel_folder_finalize): Free cached description string.
* camel-object.c (cobject_getv): Implement
CAMEL_OBJECT_ARG_DESCRIPTION, just return the classname of the
object.
(camel_object_getv):
(camel_object_get):
(camel_object_setv):
(camel_object_set): Take object = void *, to simplify usage.
(camel_object_setv): Removed unecessary locals.
(camel_object_getv): Same.
(camel_object_free): New method, free an arg, upto implementations
whether args are static/const or not.
(cobject_free): Implement a dummy do nothing free.
2002-05-31 Not Zed <NotZed@Ximian.com>
* camel-vee-folder.c (camel_vee_folder_get_location): new function
to get the real location (folder) (and uid) of a vfolder object.
Using the folderinfo, since we already have it, maybe it should
use the uid.
svn path=/trunk/; revision=17073
2002-05-31 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-folder.c (get_content): When the part
is a multipart/signed, make sure to free the part_spec before
returning (the other types already did this properly).
svn path=/trunk/; revision=17066
2002-05-31 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-message-cache.c
(camel_imap_message_cache_get): Free the path buffer when we're
done with it.
* providers/imap/camel-imap-folder.c (imap_update_summary): Free
the final tagged response buffer.
svn path=/trunk/; revision=17065
2002-05-31 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-command.c (imap_read_untagged): If we
fail to read a literal, free the temporary string buffer.
svn path=/trunk/; revision=17063
2002-05-31 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-folder.c (imap_rescan): Revert my fix
from the other day since camel_imap_command_response() doesn't
guarentee that resp will be set to NULL on error.
* providers/imap/camel-imap-command.c
(camel_imap_command_response): Use a different variable to get the
return of imap_parse_untagged so that we don't lose the pointer to
the original malloc'd respbuf buffer.
svn path=/trunk/; revision=17061
2002-05-31 Jeffrey Stedfast <fejj@ximian.com>
* camel-data-cache.c (camel_data_cache_get): If we fail to be able
to create a stream to insert into the cache, then free the 'real'
path.
svn path=/trunk/; revision=17060
2002-05-30 Not Zed <NotZed@Ximian.com>
* camel-cipher-context.h: Added a protocol field for users to use.
* camel-stream-filter.c (do_read): Sigh, the pre-size is READ_PAD
not READ_SIZE. Big difference.
(READ_PAD): Bumped upto 128 from 64, so we can fit a typical line
in full.
* providers/imap/camel-imap-folder.c (get_content): Changed to
load multipart/signed as an opaque block into the right kind of
object.
* camel-multipart.h (struct _CamelMultipart): Removed the boundary
field. It wans't actually used anywhere.
* camel-seekable-substream.c
(camel_seekable_substream_new_with_seekable_stream_and_bounds):
Shortened this stupidly long name to just :new(), its the only way
its ever used. Fixed all callers.
* camel-multipart-signed.[ch]: new wrapper for multipart/signed
types. We need to treat the entire content as a blob of data for
transport purposes. This also cleans up a lot of the sign/verify
handling.
* camel-mime-part-utils.c
(camel_mime_part_construct_content_from_parser): Just call
camel_multipart_construct_from_parser for multipart parts, also
use a multipart_signed for multipart/signed types.
* camel-multipart.c (camel_multipart_construct_from_parser): New
virtual function for multiparts to buld themselves.
(construct_from_parser): Implement for normal multiparts.
(toplevel): Got rid of a warning, it'll never be an abstract
class.
* camel-pgp-context.c (pgp_hash_to_id):
(pgp_id_to_hash): Implement.
(camel_pgp_context_init): Init the pgp protocol specifier.
* camel-cipher-context.c (camel_cipher_id_to_hash):
(camel_cipher_hash_to_id): Util virtual methods to handle the
cipher id string.
* camel-mime-filter-canon.[ch]: A new filter, end/start of line
canonicalisation filter. Can escape "From " and strip trailing
whitespace, and canonicalise the end of line to crlf or to lf.
2002-05-29 Not Zed <NotZed@Ximian.com>
* camel-multipart.h (struct _CamelMultipart): Removed the
'parent', nothing used it, anywhere. Cleaned up some formatting
slightly.
svn path=/trunk/; revision=17057
2002-05-29 Jeffrey Stedfast <fejj@ximian.com>
* providers/imap/camel-imap-store.c (connect_to_server): Only free
the LOGOUT response if it is non-NULL.
svn path=/trunk/; revision=17036
2002-05-28 Not Zed <NotZed@Ximian.com>
* providers/local/camel-maildir-folder.c (maildir_refresh_info):
Implement. Run a summary check to update for any newly arrived
messages.
* providers/local/camel-maildir-store.c (scan_dir): If we have a
folder, execute a refresh_info on it, to suck in any new stuff.
svn path=/trunk/; revision=17029