Commit Graph

116 Commits

Author SHA1 Message Date
7dea6c9dc2 implement PERSISTENT_PROPERTIES, for index mode.
2003-08-27  Not Zed  <NotZed@Ximian.com>

        * providers/local/camel-local-folder.c (local_getv): implement
        PERSISTENT_PROPERTIES, for index mode.

        * camel-object.c (cobject_state_read): Also add property reading,
        and bump version to 1.
        (cobject_state_write): add persistent property writing.

2003-08-26  Not Zed  <NotZed@Ximian.com>

        * camel-folder.c (folder_getv): chain up properly.

        * camel-file-utils.c (camel_file_util_savename): helper to create
        a .#filename filename.

        * providers/local/camel-local-folder.c
        (camel_local_folder_construct): init meta-data for local folders.
        (local_getv): chain up properly, if args are not processed, rather
        than don't if they aren't.

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

        * camel-object.c (cobject_class_init): added a new event,
        meta_changed.
        (camel_object_meta_set, camel_object_meta_get): meta-data api.
        (camel_object_free_hooks): Free meta-data if it is set on the
        object.

        * providers/local/camel-local-folder.c
        (camel_local_folder_get_type): setup a property list for local
        folders, just 'index_body' at present.

svn path=/trunk/; revision=22388
2003-08-27 19:50:25 +00:00
b0633536f2 New source file implementing a very basic certificate database. This is
2002-07-30  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-certdb.c: New source file implementing a very basic
	certificate database. This is mostly just here because the Mozilla
	NSS certdb seems to not be working for everyone's Evolution
	install (works fine for me and Ettore but not many other people).

	* camel-tcp-stream-ssl.c (ssl_bad_cert): If we have this
	certificate in our own CamelCertDB, then get the trust value from
	that and only prompt the user if the trust is unknown.

	* camel-tcp-stream-openssl.c (ssl_verify): Same.

	* camel.c (camel_init): Create our default certdb.

svn path=/trunk/; revision=17642
2002-07-30 19:16:11 +00:00
d0a6ed17b6 setup/free the mech string.
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-06-03 02:56:35 +00:00
c538852849 Add a "char **appended_uid" argument, for the caller to optionally pass in
* camel-folder.c (camel_folder_append_message): Add a "char
	**appended_uid" argument, for the caller to optionally pass in a
	variable to receive the UID of the appended message (if the
	provider knows it).
	(camel_folder_transfer_messages_to): Likewise, add "GPtrArray
	**transferred_uids"
	(transfer_messages_to): Update default implementation to handle
	transferred_uids.

	* camel-disco-folder.c (disco_append_message,
	disco_transfer_messages_to): Update for API changes.

	* camel-disco-diary.c (camel_disco_diary_replay): Update the
	diary's temporary uid->real uid map when replaying appends and
	transfers.

	* providers/imap/camel-imap-folder.c (imap_append_offline,
	imap_append_online, imap_transfer_offline): Pass back the new
	UIDs, when requested and available.
	(imap_append_resyncing): Pass back the new UIDs when requested and
	available. Remove the diary uidmap managing code since
	CamelDiscoDiary can handle that itself now.
	(imap_transfer_online, imap_transfer_resyncing): Update for new
	APIs, but don't actually pass back the new UIDs yet. (It's tricky
	since the COPYUID response may not be in the same order as the
	input uids.)

	* providers/local/camel-maildir-folder.c (maildir_append_message):
	Pass back the new UID if requested.

	* providers/local/camel-mbox-folder.c (mbox_append_message):
	Likewise.

	* providers/local/camel-mh-folder.c (mh_append_message): Likewise.

	* providers/local/camel-spool-folder.c (spool_append_message):
	Likewise.

	* camel-digest-folder.c (digest_append_message,
	digest_transfer_messages_to): Update for API changes.

	* camel-filter-driver.c	(camel_filter_driver_filter_message,
	do_copy, do_move): Update for API changes.

	* camel-vee-folder.c (vee_append_message,
	vee_transfer_messages_to): Likewise.

	* camel-vtrash-folder.c (vtrash_append_message,
	vtrash_transfer_messages_to): Likewise.

svn path=/trunk/; revision=16765
2002-05-13 16:15:29 +00:00
6952dcb7c0 Replace copy_messages_to and move_messages_to with a single function that
* camel-folder.c (camel_folder_transfer_messages_to): Replace
	copy_messages_to and move_messages_to with a single function that
	just takes a "delete_originals" flag. Also, use the vtrash
	implementation if *either* folder is a vtrash.
	(transfer_messages_to): Make this use camel_operation_progress
	(previously move_messages_to did but copy_messages_to didn't), and
	freeze/thaw the folder(s) if doing multiple messages.

	* camel-vtrash-folder.c (vtrash_transfer_messages_to): Update for
	move/copy merge. Move the "move messages into vtrash" code here
	from mail-ops.c. Now all of the vtrash move/copy special casing is
	in camel instead of half of it being here and half in mail/. (This
	should also make it so that "Move to Trash" will work in filter
	rules.)

	* camel-vee-folder.c (vee_transfer_messages_to): Make this just
	return an exception, since it will only be called when trying to
	move/copy messages from one vfolder to another.
	(vee_append_message): Add this too so we get a nicer error message
	than the default "unimplemented" one in camel-folder.c.

	* camel-digest-folder.c: Replace copy_messages_to and
	move_messages_to with transfer_messages_to.

	* camel-disco-folder.c: Likewise

	* camel-disco-diary.c (camel_disco_diary_log,
	camel_disco_diary_replay): replace MOVE/COPY with TRANSFER.

	* providers/imap/camel-imap-folder.c (imap_transfer_offline,
	imap_transfer_online, imap_transfer_resyncing): Update for
	changes. (This ends up being a bit more complicated than it was
	before for now, but later disconnected operation changes should
	resimplify it.)

	* camel-filter-driver.c (camel_filter_driver_filter_message,
	do_copy, do_move): Use transfer_messages_to instead of copy.

svn path=/trunk/; revision=16744
2002-05-10 16:44:36 +00:00
08fb7329cb Fixing the license text.
svn path=/trunk/; revision=14212
2001-10-27 16:59:46 +00:00
7
c4d87ba45a Finished implementation.
2001-10-27    <NotZed@Ximian.com>

        * providers/imap/camel-imap-store.c (rename_folder): Finished
        implementation.

        * providers/local/camel-local-folder.c (local_rename): Implement
        local rename of folder objects.

2001-10-26    <NotZed@Ximian.com>

        * camel-vee-folder.c (camel_vee_folder_class_init): Hook into
        rename function.
        (vee_rename): Implement the veefolder rename function.
        (camel_vee_folder_class_init):
        (folder_changed_change): Kill a warning with a cast.

        * camel-vee-store.c (vee_rename_folder): Emit a folder_renamed
        event properly, also call parent to do some rename stuff.

        * camel-store.h: Added a CamelRenameInfo for the rename event.

        * camel-folder.c (camel_folder_rename): New function to rename a
        folder object.
        (camel_folder_class_init): Added a renamed event.
        (folder_rename): Default impl, set full_name, and set name
        assuming the dir separator is '/'.

        * camel-store.c (camel_store_class_init): Added folder_renamed
        event.
        (camel_store_rename_folder): Rename an active folder object if we
        have one, and update the folder table.
        (rename_folder): Make a default implementation that handles
        updating the folder tree.

svn path=/trunk/; revision=14204
2001-10-27 06:00:34 +00:00
02dcd0aadf Update the licensing information to require version 2 of the GPL
(instead of version 2 or any later version).

svn path=/trunk/; revision=14190
2001-10-27 00:25:49 +00:00
9
d5e090651b Implement.
2001-10-09    <NotZed@Ximian.com>

        * providers/local/camel-spool-folder.c (spool_search_by_uids):
        Implement.

        * providers/imap/camel-imap-search.c (imap_body_contains): If
        searching a sub-set of the total message count, then use a UID
        range to search only specific messages.

        * camel-vee-folder.c (vee_folder_change_match): Removed.
        (folder_changed_add_uid): Helper func for changed code.
        (folder_changed_remove_uid): "
        (folder_changed_change_uid): "
        (folder_changed): Rewritten.  Supports proper auto-updating of
        changes, but not removals till a sync occurs.
        (vee_search_by_uids): Implement.
        (folder_changed): Changed to call an async threaded function to do
        the actual folder updating.

        * camel-folder-summary.c (camel_flag_list_copy): New func to copy
        a whole list of flags.
        (camel_tag_list_copy): New func to copy a whole list of flags.

        * providers/imap/camel-imap-folder.c (imap_search_by_uids):
        Implement.

        * providers/local/camel-local-folder.c (local_search_by_uids):
        Implement.

        * camel-folder.c (camel_folder_search_by_uids): New function,
        search a subset of uid's.
        (search_by_uids): Default impl, return error.

svn path=/trunk/; revision=13532
2001-10-09 22:26:01 +00:00
5931b31034 replace the ever-growing list of gbooleans with a single guint32 for
* camel-folder.h (struct _CamelFolder): replace the ever-growing
	list of gbooleans with a single guint32 for flags.

	* camel-folder.c: Update folder flag setting/checking.

	* providers/pop3/camel-pop3-folder.c (camel_pop3_folder_init):
	* providers/nntp/camel-nntp-folder.c (camel_nntp_folder_new):
	* providers/local/camel-spool-folder.c (spool_init,
	camel_spool_folder_new):
	* providers/local/camel-maildir-folder.c (camel_maildir_folder_new):
	* providers/local/camel-local-folder.c (local_init):
	* providers/imap/camel-imap-folder.c (camel_imap_folder_init,
	camel_imap_folder_new):
	* camel-vtrash-folder.c (camel_vtrash_folder_init):
	* camel-vee-folder.c (camel_vee_folder_init):
	* camel-digest-folder.c (camel_digest_folder_init): update folder
	flag setting.

svn path=/trunk/; revision=13509
2001-10-09 03:07:39 +00:00
7708b2d8a0 Call camel_folder_delete() on the folder if it's "alive".
2001-10-03  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-store.c (camel_store_delete_folder): Call
	camel_folder_delete() on the folder if it's "alive".

	* camel-folder.c (camel_folder_delete): Mark the folder as
	deleted, perform any folder specific cleanup and emit the deleted
	event.
	(camel_folder_sync): Only sync the folder if it hasn't been
	deleted.
	(camel_folder_expunge): Same.

svn path=/trunk/; revision=13388
2001-10-03 21:25:04 +00:00
8
8347ce1403 If filter inbox is set on the store, and we're opening inbox '', then
2001-09-18    <NotZed@Ximian.com>

	* providers/local/camel-maildir-folder.c
	(camel_maildir_folder_new): If filter inbox is set on the store,
	and we're opening inbox '', then enable filtering on new messages.

	* providers/local/camel-local-folder.c
	(camel_local_folder_construct): After loading the summary, check
	it, and only abort if that fails.  Also maintain the changes
	count.

	* providers/local/camel-local-summary.c
	(camel_local_summary_load): Remove summary_check code from here.
	(camel_local_summary_check): Sync index/summary here, if we were
	successful.

	* providers/local/camel-spool-folder.c
	(camel_spool_folder_new): If we have filter-new-messages-on-inbox
	set and we just opened inbox, turn on filtering on this folder.
	(camel_spool_folder_construct): Keep track of changes for the
	folder, so that filter-new-messages works right (?)

	* providers/local/camel-spool-store.c (get_folder): Pass 'INBOX'
	as the folder name, not the path.

	* camel-folder-search.c (search_not): Modified patch from
	<peterw@ximian.com> since the summary is messageinfo's, not
	strings.

	** Ok so the problem with the stuff below is that maildir/spool
	'summary_load' throws away all events, including recents, joy eh?

	* providers/local/camel-maildir-summary.c (maildir_summary_check):
	Add new messages to the recent changeinfo.

	* providers/local/camel-spool-summary.c: Mark 'new' message as
	recent, for later processing if required (i.e. 'filter new
	messages').

	* camel-store.c (construct): new function, cascade up construct
	method and check for 'filter' param, and set accordingly for any
	one that might want it.

	* providers/imap/camel-imap-store.c (construct): map the
	param_filter_inbox flag to the store->flags as
	CAMEL_STORE_FILTER_INBOX.

	* camel-store.h (CAMEL_STORE_FILTER_INBOX): new flag to tell it to
	filter inbox.

	* providers/imap/camel-imap-folder.h: Removed do_filtering flag
	from CamelImapFolder.

	* providers/imap/camel-imap-folder.c (imap_update_summary): Remove
	the 'recents' parameter, use the 'changes' parameter instead to
	convey this info.
	(camel_imap_folder_changed): Changed for update_summary api
	change.  Now always just emit the changed event if we have any
	changes to report, filtering code removed, handled upstream.
	(filter_proc):
	(filter_free): Removed old filtering code.
	(camel_imap_folder_new): Set the filter_recent flag on the folder
	if we're the inbox and filtering of inbox is enabled.

	* camel-folder.c (folder_changed): If we have 'recent' messages,
	and are set to filter recents, then freeze the folder and launch a
	thread to do the processing (or similar if threading not enabled).
	(thaw): Make sure we emit the changed signal outside of owning the
	lock and if things have changed.  Also, no longer bother
	downgrading folder_changed events to message_changed events.

	* camel-folder.h (struct _CamelFolder): Added filter_recent flag
	-> signifies all recent messages in folder should be filtered.

	* camel-session.c: (camel_session_thread_msg_new,
	camel_session_thread_msg_free, camel_session_thread_queue,
	camel_session_thread_wait): code to handle async operations as
	part of camel processing.
	(camel_session_finalise): free thread_lock, destroy thread, active
	hash, etc.
	(camel_session_init): init thread, active hash, etc.
	(camel_session_class_init): Init virtual functions.
	(session_thread_msg_new, session_thread_msg_free,
	session_thread_destroy, session_thread_received,
	session_thread_queue, session_thread_wait): default implementation
	of session threads stuff.

2001-09-17    <NotZed@Ximian.com>

	* camel-folder.c (camel_folder_change_info_recent_uid): New
	function to add a 'recent' uid to the change info.
	(camel_folder_change_info_clear): Clear recent list.
	(camel_folder_change_info_free): Free recent list.
	(camel_folder_change_info_new): Setup recent list.

	* camel-folder.h: Added a uid_recent item to the folder_changed
	event data.

	* providers/local/camel-maildir-store.c (scan_dir): Free new in
	the right block.

	* providers/local/camel-local-provider.c: Add local config entries
	to filter on new messages in spool and maildir provider.

	* camel-vee-folder.c (vee_folder_construct): Remove the assertion
	which stops ? in names from being allowed.

svn path=/trunk/; revision=12956
2001-09-18 21:43:00 +00:00
4f9c48faf4 Reverted previous changes.
2001-09-17  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-folder.c: Reverted previous changes.

svn path=/trunk/; revision=12907
2001-09-17 20:33:20 +00:00
a6c8b690b9 New function to get the URI of a folder. (get_uri): Default
2001-09-16  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-folder.c (camel_folder_get_uri): New function to get the
	URI of a folder.
	(get_uri): Default implementation.

svn path=/trunk/; revision=12860
2001-09-16 20:31:06 +00:00
a357fc5b44 If the folder is frozen, don't refresh, just record that we need to do it
* 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
2001-06-28 16:50:09 +00:00
91cc026904 Update the copyrights, replacing Helix Code with Ximian and
helixcode.com with ximian.com all over the place.

svn path=/trunk/; revision=10440
2001-06-23 08:52:02 +00:00
fe962a2055 Big header cleanups and nntp compile fix
svn path=/trunk/; revision=9024
2001-03-29 20:31:40 +00:00
efddd51d3b Use camel_vtrash_folder_new() to create the vtrash folder now.
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
2001-03-27 01:41:21 +00:00
a570bb037f Implemented. (ref_message_info): And default implementation.
2001-03-17  Not Zed  <NotZed@Ximian.com>

        * camel-folder.c (camel_folder_ref_message_info): Implemented.
        (ref_message_info): And default implementation.

        * camel-folder.h: Added ref_message_info virtual method.

2001-03-16  Not Zed  <NotZed@Ximian.com>

        * camel-folder-thread.c
        (camel_folder_thread_messages_new_summary): New function to create
        a thread tree from a supplied summary array.
        (camel_folder_thread_messages_destroy): Handle thread trees
        generated by the above function properly.

svn path=/trunk/; revision=8774
2001-03-17 04:51:21 +00:00
0a3fde6ecd Remove the 'FIXME: remove because this isn't required...' comment for
2001-02-22  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-folder.h: Remove the 'FIXME: remove because this isn't
	required...' comment for copy_message_to since we now need and
	cherish its existance in the filter-driver code ;-)

	* camel-filter-driver.c (camel_filter_driver_filter_message): Now
	takes a UID and CamelFolder arguments (which can be NULL) to allow
	for possible optimizations when copying messages between folders
	on the same store.
	(camel_filter_driver_filter_mbox): Updated (passes NULL for both
	since this case can't be optimized anyway).
	(camel_filter_driver_filter_folder): Updated to pass in the uid
	and folder of the message.

svn path=/trunk/; revision=8346
2001-02-22 16:22:27 +00:00
6d69d56d0c Removed, not used. (camel_vee_folder_new): Removed call to build_folder.
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
2001-02-21 20:13:42 +00:00
6de256c2a2 Lock the command channel while searching. (imap_body_contains): If
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
2000-12-24 00:46:20 +00:00
a34a4b15b8 Shite, -1 on error, >=0 on success. So i've just been truncating all the
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-21 13:38:53 +00:00
fb76cad79a Removed local again, not quite ready.
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
2000-11-15 06:33:49 +00:00
f351369e51 Merged in camel-incremental-branch.
2000-11-02  Not Zed  <NotZed@HelixCode.com>

        * Merged in camel-incremental-branch.

svn path=/trunk/; revision=6336
2000-11-02 03:35:04 +00:00
e9dc30dbf0 Remove camel_folder_{get,free}_subfolder_info, as we want to be able to
* camel-folder.[ch]: Remove
	camel_folder_{get,free}_subfolder_info, as we want to be able to
	scan the whole subfolder tree without having to open any folders,
	so this needs to be in CamelStore. Remove can_hold_folders and
	can_hold_messages flags; things that don't hold messages are no
	longer considered CamelFolders.

	* camel-folder-summary.[ch]: Remove CamelFolderInfo stuff.

	* camel-store.[ch]: Add camel_store_{get,free}_folder_info, as
	well as camel_store_free_folder_info_full and ..._nop for default
	implementations, and camel_folder_info_free and
	camel_folder_info_build as convenience functions. Turn
	CamelFolderInfo into a tree structure and also add an "url"
	member.

	* providers/*/camel-*-folder.c: Remove subfolder_info and can_hold
	stuff.
	* providers/*/camel-*-store.c: Add folder_info stuff.

	* providers/imap/camel-imap-folder.c (imap_summary_free): Free the
	summary elements with camel_message_info_free, not
	camel_folder_info_free. Oops.

	* providers/imap/camel-imap-utils.c: const poison

svn path=/trunk/; revision=5663
2000-10-02 19:08:20 +00:00
7dcc032545 Removed (camel_folder_init, camel_folder_construct): New object init
* camel-folder.c: (init): Removed
	(camel_folder_init, camel_folder_construct): New object init
	function and public object constructor to replace the old init
	method in a more Gtk-like fashion.

	(get_parent_folder, camel_folder_get_parent_folder): Removed. No
	CamelFolder subclass was ever setting the parent_folder member, no
	code has ever needed to look at it, and fixing it would actually
	be pretty hard.

	(get_subfolder_info, camel_folder_get_subfolder_info): Renamed
	from ..._names. Deals in CamelFolderInfo now.
	(free_subfolder_info, camel_folder_free_subfolder_info): Likewise.

	(get_subfolder, camel_folder_get_subfolder): Removed.
	CamelFolderInfo contains the subfolder's full name, so this is
	unnecessary now, and removing it lets us get rid of the
	CamelFolder separator member, which is needed for the default
	implementation of this function, but not otherwise needed for most
	providers.

	Also, lots of code style fixes.

	* providers/*: Update CamelFolder subclasses for changes, although
	none of them fill in the message counts in the CamelFolderInfo
	yet.

svn path=/trunk/; revision=5503
2000-09-19 17:27:09 +00:00
da570c6660 CamelRemoteStore: a new generic store for stores that connect to servers. Prepare for the ability to cancel operations (much better exception handling). Clean up IMAP like nobody's business
svn path=/trunk/; revision=5103
2000-08-29 21:28:46 +00:00
0227bb16b2 Implement. (mh_get_message_user_tag): Implement.
2000-08-11  Not Zed  <NotZed@HelixCode.com>

	* providers/mh/camel-mh-folder.c (mh_set_message_user_tag):
	Implement.
	(mh_get_message_user_tag): Implement.

	* providers/mbox/camel-mbox-folder.c (mbox_get_message_user_tag):
	(mbox_set_message_user_tag): Implement.

	* camel-folder.c
	(camel_folder_set_message_user_tag): Routine to set message tags.
	(camel_folder_get_message_user_tag): And accessor.

svn path=/trunk/; revision=4729
2000-08-11 07:43:50 +00:00
8cb514d6dd Merge with camel-async.
svn path=/trunk/; revision=4687
2000-08-10 17:30:50 +00:00
690509bf82 A better way to compress leading whitespace. The code is probably invalid
2000-08-11  Not Zed  <NotZed@HelixCode.com>

	* camel-mime-parser.c (folder_scan_header): A better way to
	compress leading whitespace.  The code is probably invalid anyway,
	I dont think it will work across buffer boundaries.

	* providers/mbox/camel-mbox-folder.c (mbox_append_message): And
	write out proper format From lines here too.

	* providers/mbox/camel-mbox-summary.c
	(camel_mbox_summary_build_from): New function to build a more
	compatible mbox "From " line.
	(camel_mbox_summary_sync): Write From lines in the proper format.

2000-08-10  Not Zed  <NotZed@HelixCode.com>

	* providers/mh/camel-mh-store.c (get_folder): Remove warnin g.

	* providers/mbox/camel-mbox-store.c (xrename): Kill some warnings
	with constification.

	* providers/imap/camel-imap-folder.c (imap_append_message): Fixed
	for append api change.  Eek this routine seriously wastes memory.

	* providers/mh/camel-mh-folder.c (mh_search_free): Impelemnt.
	(mh_append_message): Fix for api change, and include user flags
	and tags in new message.

	* providers/vee/camel-vee-folder.c (vee_search_by_expression): Fix
	for search api change.

	* camel-folder.c (camel_folder_search_free): New function for
	freeing search results.
	(search_free): Changed my mind, implement a default that actually
	does something.  Free as to the old interface.
	(camel_folder_append_message): Changed to accept a
	camelmessageinfo rather than flags, which just doesn't have enough
	info in it.
	(copy_message_to): Change for append_message api change.
	(move_message_to): Likewise.

	* providers/mbox/camel-mbox-folder.c (mbox_search_free):
	Implement.
	(mbox_append_message): Fix for api change, and also copy user
	flags/tags across to new summary.

	* camel-folder-search.c (search_user_tag): A search expression
	that returns the current use flag by name.
	(camel_folder_search_free_result): New function to free the result
	of a search.

	* camel-folder-summary.c: Bump summary version.
	(message_info_new):
	(message_info_load):
	(message_info_save):
	(camel_message_info_dup_to):
	(camel_message_info_free): Added support for arbitrary tag/value
	pairs (CamelTag's).
	(camel_tag_get):
	(camel_tag_set):
	(camel_tag_list_size):
	(camel_tag_list_free): Operations for working with CamelTags.

svn path=/trunk/; revision=4683
2000-08-10 16:35:28 +00:00
72183d80ec Remove exceptions from a number of methods that work on what ought to be
* camel-folder.c: Remove exceptions from a number of methods that
	work on what ought to be static data: get_parent_folder,
	get_parent_store, get_message_count, get_unread_message_count,
	get_permanent_flags, get_message_flags, set_message_flags,
	get_message_user_flag, set_message_user_flag, get_uids,
	get_summary, get_subfolder_names. Turn camel_folder_delete_message
	into a macro. (Mostly a pull-up from the camel-async branch.)

	* providers/{imap,mbox,nntp,pop3,vee}: Update for CamelFolder
	changes

svn path=/trunk/; revision=4303
2000-07-25 02:42:11 +00:00
8c4533cc2d Remove camel_folder_get_message_uid, which was not used, and not
* camel-folder.[ch]: Remove camel_folder_get_message_uid, which
	was not used, and not implemented by any provider.

	* providers/nntp/camel-nntp-folder.c: Remove get_message_uid
	non-implementation.

svn path=/trunk/; revision=4292
2000-07-24 15:16:09 +00:00
540e1d7671 Useful default implementations for free_{uids,subfolder_names,summary}.
* camel-folder.c (camel_folder_free_deep,
	camel_folder_free_shallow, camel_folder_free_nop): Useful default
	implementations for free_{uids,subfolder_names,summary}.
	(free_subfolder_names, free_uids): Make these g_warning-ing
	default implementations.

	* providers/*/camel-*-folder.c: Use the new functions where
	appropriate, remove duplicated code.

svn path=/trunk/; revision=4120
2000-07-12 20:37:00 +00:00
e0fcbaf71a Now takes a flags argument to specify the flags to be set on the message
2000-07-11  Jeffrey Stedfast  <fejj@helixcode.com>

	* camel-folder.c (camel_folder_append_message): Now takes a
	flags argument to specify the flags to be set on the message
	since we might not necessarily want the flags to be wiped clean.
	(move_message_to):
	(copy_message_to): Updated to send a flags argument to
	append_message (); currently sends the original message's flags.

	* providers/mbox/camel-mbox-folder.c (mbox_append_message):
	* providers/imap/camel-imap-folder.c (imap_append_message):
	Updated.

svn path=/trunk/; revision=4099
2000-07-12 00:00:11 +00:00
3e2188235f Implemented.
2000-07-10  Jeffrey Stedfast  <fejj@helixcode.com>

	* providers/mbox/camel-mbox-folder.c (mbox_get_unread_message_count):
	* providers/vee/camel-vee-folder.c (vee_get_unread_message_count):
	* providers/imap/camel-imap-folder.c (imap_get_unread_message_count):
	Implemented.

	* camel-folder.c (camel_folder_get_unread_message_count): New
	convenience function to allow the mailer to query the number
	of unread messages in a folder (for displaying message stats
	in a folder tree?).

svn path=/trunk/; revision=4028
2000-07-10 07:30:59 +00:00
011e287e7d Make this return a GPtrArray rather than a GList.
* camel-folder.c (camel_folder_search_by_expression): Make this
	return a GPtrArray rather than a GList.

	* camel-folder-search.c (camel_folder_search_execute_expression):
	* providers/imap/camel-imap-folder.c (imap_search_by_expression):
	* providers/mbox/camel-mbox-folder.c (mbox_search_by_expression):
	* providers/nntp/camel-nntp-folder.c (nntp_search_by_expression):
	Update to return a GPtrArray rather than a GList.

svn path=/trunk/; revision=3958
2000-07-07 21:13:41 +00:00
03b3618408 New functions to freeze and thaw a folder (to prevent message/folder
* camel-folder.c (camel_folder_freeze, camel_folder_thaw): New
        functions to freeze and thaw a folder (to prevent message/folder
        changed signals in the middle of a long series of operations).
        (camel_folder_class_init): Change signals to GTK_RUN_FIRST.
        (message_changed, folder_changed): Add default implementations
        that stop the emission and record info for later if the folder is
        frozen.

        * providers/mbox/camel-mbox-folder.c (mbox_sync): leftover fixes
        from the close->sync change: don't destroy the ibex, summary, and
        search when syncing.

svn path=/trunk/; revision=3863
2000-07-03 01:17:49 +00:00
b950754689 Renamed _by_uid methods. Since we no longer have get-by-number methods, no
2000-07-01  Jeffrey Stedfast  <fejj@helixcode.com>

	* camel-folder.c: Renamed _by_uid methods. Since we no longer
	have get-by-number methods, no need to have the _by_uid
	extensions.
	(get_message_by_uid): Renamed to get_message
	(delete_message_by_uid): Renamed to delete_message
	(summary_get_by_uid): Renamed to get_message_info

	* providers/mbox/camel-mbox-folder.c:
	* providers/pop3/camel-pop3-folder.c:
	* providers/imap/camel-imap-folder.c:
	* providers/vee/camel-vee-folder.c: Updated to reflect
	camel-folder changes.

svn path=/trunk/; revision=3843
2000-07-01 04:48:28 +00:00
f278d3041b New function, to copy a message from one folder to another. The default
2000-06-30  Jeffrey Stedfast  <fejj@helixcode.com>

	* camel-folder.c (camel_folder_copy_message_to): New function, to
	copy a message from one folder to another. The default
	implementation just uses append_message, but providers can
	implement more efficient versions for use when both folders are on
	the same store.

	* broken-date-parser.[c,h]: Utilities for parsing broken
	date strings.

	* providers/imap/camel-imap-folder.c (imap_move_message_to):
	(imap_copy_message_to): Implemented.

	* camel-mime-utils.c (header_decode_date): Wrote some code to try
	and un-mangle broken date formats and then parse that new string
	instead.

svn path=/trunk/; revision=3841
2000-07-01 01:35:19 +00:00
39361c665a New function, to move a message from one folder to another. The default
* camel-folder.c (camel_folder_move_message_to): New function, to
	move a message from one folder to another. The default
	implementation just uses append_message and delete_message, but
	providers can implement more efficient versions for use when both
	folders are on the same store.

svn path=/trunk/; revision=3832
2000-06-30 20:04:46 +00:00
174d7c38d1 Move flag handling from CamelMimeMessage to CamelFolder. This
simplifies several flag-handling pieces of code in the mailer, and
	lets you change a message's flags without having to fetch the
	message body. It also means that fully-constructed
	CamelMimeMessages are now essentially constant, which will help
	simplify locking issues later since it means two threads
	interested in the same message can just work with separate copies
	of it.

	* camel-mime-message.h (struct _CamelMimeMessage): Removed flags
	and user_flags (moved to summary). Removed expunged and
	message_number which were unused. Removed message_uid and folder
	which are no longer needed in the new scheme.
	(struct CamelMimeMessageClass): Removed message_changed signal and
	get/set_message_number methods.

	* camel-mime-message.c: Updates for CamelMimeMessage changes.
	(camel_mime_message_get/set_flags,
	camel_mime_message_get/set_user_flag): Replaced with methods in
	CamelFolder.
	(camel_flag_get, camel_flag_set, camel_flag_list_size,
	camel_flag_list_free): Moved verbatim to camel-folder-summary.c

	* camel-folder.c (camel_folder_get/set_message_flags,
	camel_folder_get/set_message_user_flag): New methods (and
	corresponding useless default implementations)
	(camel_folder_class_init): add a message_changed signal

	* camel-folder-summary.c (camel_flag_get, camel_flag_set,
	camel_flag_list_size, camel_flag_list_free): Moved here from
	camel-mime-message.c

	* providers/mbox/camel-mbox-folder.c (message_changed): Removed.
	(mbox_get_message_flags, mbox_set_message_flags,
	mbox_get_message_user_flag, mbox_set_message_user_flag): Tweak
	summary bits as appropriate. (Functionality moved here from
	message_changed.)
	(mbox_get_message_by_uid): Update for CamelMimeMessage changes
	(less stuff to initialize).

	* providers/imap/camel-imap-folder.c (message_changed): Remove
	this. It was just copied from the mbox provider and doesn't deal
	with the real IMAP flag stuff anyway. (So there's currently no
	flag support in the IMAP provider.)
	(imap_get_message_by_uid): Update for CamelMimeMessage changes.

	* providers/vee/camel-vee-folder.c: (message_changed): Remove old
	one. Add a new one to listen for message_changed on each folder
	and re-emit message_changed signals that correspond to messages in
	the vfolder.
	(vee_get/set_message_flags, vee_get/set_message_user_flag): Proxy
	flag setting to the underlying real messages.
	(vee_append_message): Removed for now; there's no way to translate
	this into the new CamelMimeMessage/CamelFolder scheme, but (a)
	there's also no code which would ever call it and (b) we're
	probably going want a better interface than append_message for
	message drag and drop to work anyway. To be revisited.

svn path=/trunk/; revision=3598
2000-06-16 23:09:43 +00:00
cd157eecb9 Kill. Folders are now always open, and handle "closing" sorts of
* camel-folder.c: (camel_folder_open, camel_folder_is_open,
	camel_folder_get_mode): Kill. Folders are now always open, and
	handle "closing" sorts of operations at sync or finalize time.
	(camel_folder_sync): renamed from camel_folder_close. Syncs state
	to the store but doesn't necessarily close/disconnect.

	* providers/*/camel-*-folder.c: Merge "open" methods into "init"
	methods. Rename close to sync and update appropriately.

	* providers/imap/camel-imap-store.c: Remove camel_imap_store_open
	and camel_imap_store_close, which should not have been copied from
	the POP provider (where the exist to work around limitations of
	the POP protocol).

svn path=/trunk/; revision=3581
2000-06-15 22:19:44 +00:00
e4b07cd9d1 Updated: a separator is now a char* rather than a single char because IMAP
2000-06-14  Jeffrey Stedfast  <fejj@helixcode.com>

	* camel-folder.c (init): Updated: a separator is now a char* rather than
	a single char because IMAP can have a string for a directory separator.
	Also, since IMAP does not begin with a directory separator, there is a new
	argument (path_begins_with_sep) which decides if a directory should begin
	with a directory separator.

	* providers/imap/camel-imap-store.c (imap_create): Since, on connect,
	Camel tries to create INBOX (which already exists on every IMAP provider)
	we can return TRUE when the folder name is "INBOX".

	* providers/vee/camel-vee-folder.c (vee_init): Updated.

	* providers/imap/camel-imap-folder.c (camel_imap_folder_new): Updated.

	* providers/mbox/camel-mbox-store.c (get_folder): Updated.

	* providers/mbox/camel-mbox-folder.c (mbox_init): Updated.

	* providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Updated.

svn path=/trunk/; revision=3559
2000-06-14 05:10:55 +00:00
4d5427769c Remove exists, create, delete. A CamelFolder now always references an
* camel-folder.c: Remove exists, create, delete. A CamelFolder
	now always references an existing folder. Remove delete_messages
	too since it wasn't being used. Add a "create" flag to
	get_subfolder saying whether or not to create the subfolder if it
	doesn't yet exist.

	* camel-store.c (camel_store_get_folder): Add a "create" flag to
	say whether or not to create the folder if it doesn't yet exist.
	(camel_store_delete_folder): New method, moved from CamelFolder.
	(cache_folder, uncache_folder): Fix up a bit.
	(get_folder_name): Explain what this is for.

	* providers/mbox/camel-mbox-folder.c:
	* providers/mbox/camel-mbox-store.c: Update. Remove support for
	hierarchical folders to simplify this for now, since we're not
	using it, and it's not completely clear how they should work in an
	ELocalStorage world. Needs to be revisited.

	* providers/pop3/camel-pop3-folder.c (delete_messages): Remove.
	* providers/pop3/camel-pop3-store.c (get_folder): Update.

	* providers/vee/camel-vee-folder.c (exists): Remove.
	* providers/vee/camel-vee-store.c (vee_get_folder): Update.

svn path=/trunk/; revision=3453
2000-06-07 00:06:29 +00:00
a909e956da remove message_number_capability and require uid capatibility.
* camel-folder.c: remove message_number_capability and require uid
	capatibility.
	(camel_folder_list_subfolders, camel_folder_get_uid_list,
	camel_folder_get_subfolder_info, camel_folder_get_message_info):
	removed
	(camel_folder_get_subfolder_names,
	camel_folder_free_subfolder_names): new subfolder interfaces.
	(camel_folder_get_uids, camel_folder_free_uids): new uid
	interfaces
	(camel_folder_get_summary, camel_folder_free_summary): new summary
	interfaces

	* providers/mbox/camel-mbox-folder.c,
	* providers/nntp/camel-nntp-folder.c:
	* providers/vee/camel-vee-folder.c: Update for changes

	* providers/pop3/camel-pop3-folder.c: Implement get_uids, update
	for other changes.

svn path=/trunk/; revision=3126
2000-05-19 00:47:36 +00:00
9eda0faddf Remove unused async open/close and copy_message_to functions. Rename
* camel-folder.c: Remove unused async open/close and
	copy_message_to functions.
	Rename functions without initial _. Fix glib preconditions and
	gtk-doc comments.

svn path=/trunk/; revision=3116
2000-05-18 02:24:30 +00:00
71902b570c Remove camel_folder_get_summary, which no longer exists.
* camel-folder.h: Remove camel_folder_get_summary, which no longer
	exists.

svn path=/trunk/; revision=3045
2000-05-15 13:52:56 +00:00
b7f49ccf57 Merged NEW_SUMMARY branch back to trunk, and resolved conflicts.
2000-05-08  NotZed  <NotZed@HelixCode.com>

	* Merged NEW_SUMMARY branch back to trunk, and resolved conflicts.

	* providers/mbox/camel-mbox-summary.c (camel_mbox_summary_update):
	Return status.

	* camel-stream-filter.c (do_close): We NEED a stream close.

svn path=/trunk/; revision=2906
2000-05-08 05:24:54 +00:00
580d885820 Make camel not leak like a sieve.
* camel-object.c: New subclass of GtkObject which is now the base
	of the Camel object hierarchy. Currently the only difference
	between CamelObject and GtkObject is that CamelObjects don't start
	out floating.

	* *.h: Move a bunch of typedefs to camel-types.h. Standardize on
	using <camel/foo.h> in header files rather than <foo.h>, "foo.h",
	or "camel/foo.h". Remove some unneeded includes.

	* camel-address.c, camel-data-wrapper.c, camel-folder-search.c,
	camel-folder-summary.c, camel-folder.c, camel-mime-filter.c,
	camel-mime-parser.c, camel-service.c, camel-session.c,
	camel-stream.c: These are now subclasses of CamelObject.

	* camel-data-wrapper.c (set_output_stream):
	* camel-medium.c (set_content_object):
	* camel-seekable-substream.c
	(init_with_seekable_stream_and_bounds):
	* providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid):
	remove gtk_object_sink calls.

	* camel-stream-buffer.c (init_vbuf):
	* camel-stream-filter.c (camel_stream_filter_new_with_stream):
	ref the original stream.

	* camel-folder-summary.c (camel_folder_summary_finalise): unref
	the filters when finalizing.

	* camel-mime-part-utils.c
	(simple_data_wrapper_construct_from_parser,
	camel_mime_part_construct_content_from_parser):
	* camel-mime-part.c (camel_mime_part_set_content): Unref objects
	that are created only to be handed off to other objects. If
	they're going to be needed later, they will have been additionally
	ref'ed by the object that needs them.

	* providers/pop3/camel-pop3-folder.c (get_message_by_number):
	unref the message stream after creating the data from it.

	* camel-stream.c, camel-stream-buffer.c, camel-stream-filter.c,
	camel-stream-fs.c, camel-stream-mem.c: Remove camel_stream_close,
	since its semantics are dubious (what happens when you close a
	stream other people still have references on?).

	* providers/nntp/camel-nntp-store.c:
	* providers/smtp/camel-smtp-transport.c:
	* providers/pop3/camel-pop3-store.c:
	replace camel_stream_close calls with gtk_object_unref.

	* providers/mbox/camel-mbox-folder.c:
	* providers/nntp/camel-nntp-folder.c:
	* providers/sendmail/camel-sendmail-transport.c:
	replace camel_stream_close with camel_stream_flush +
	gtk_object_unref

svn path=/trunk/; revision=2882
2000-05-07 21:56:32 +00:00