Commit Graph

175 Commits

Author SHA1 Message Date
020a8e0361 If the CREATE flag is set and the parent .sbd directory does not exist,
2003-09-23  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/local/camel-mbox-store.c (get_folder): If the CREATE
	flag is set and the parent .sbd directory does not exist, create
	it.

svn path=/trunk/; revision=22677
2003-09-23 21:03:19 +00:00
6abd6e01b3 Added "offline_sync" option, which lets you synchronise all mail to local
2003-09-22  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-provider.c: Added "offline_sync"
        option, which lets you synchronise all mail to local storage
        automagically.

        * camel-disco-folder.c (cdf_folder_changed): hook onto the folder
        changed single, for all new messages, check that they are online
        using another thread, if the offline_sync option has been enabled
        for this store.

2003-09-21  Not Zed  <NotZed@Ximian.com>

        * camel-session.c (session_thread_destroy): call proper entry
        point for freeing the message.

2003-09-18  Not Zed  <NotZed@Ximian.com>

        * camel-folder.c (filter_filter): register the filtering process
        for progress, and do progress of the filtering process.

2003-09-17  Not Zed  <NotZed@Ximian.com>

        * camel.c (camel_init): init camel operation.

        * camel-operation.c (camel_operation_reset): removed, not used,
        not worth it.
        (camel_operation_mute): new method to stop all status updates
        permanently.
        (*): Changed to use thread specific data and a list rather than a
        hashtable.
        (cancel_thread): removed.
        (camel_operation_register): return the previously registered op.

svn path=/trunk/; revision=22648
2003-09-22 18:48:34 +00:00
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
2bd47d3cda Get rid of the #ifdef ENABLE_THREADS since we no longer plan to
2003-07-09  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-block-file.c: Get rid of the #ifdef ENABLE_THREADS since
	we no longer plan to support/maintain this.

	* camel.c: Same.

	* camel-certdb.c: Here too.

	* camel-charset-map.c: And here.

	* camel-cipher-context.c: "

	* camel-data-wrapper.c: "

	* camel-digest-folder.c: "

	* camel-exception.c: "

	* camel-folder.c: "

	* camel-folder-summary.c: "

	* camel-lock-client.c: "

	* camel-mime-utils.c: "

	* camel-object.c: "

	* camel-operation.c: "

	* camel-partition-table.c: "

	* camel-sasl-popb4smtp.c: "

	* camel-service.c: "

	* camel-session.c: "

	* camel-store.c: "

	* camel-store-summary.c: "

	* camel-text-index.c: "

	* camel-transport.c: "

	* camel-vee-folder.c: "

	* camel-tcp-stream-openssl.c: Removed pthread.h, it isn't needed.

svn path=/trunk/; revision=21777
2003-07-09 19:05:13 +00:00
8bbe0f34af Updated for string-utils namespace changes.
2003-07-07  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-session.c (camel_session_init): Updated for string-utils
	namespace changes.

	* camel-provider.c: Updated for string-utils namespace changes.

	* camel-mime-part.c (init_header_name_table): Updated for
	string-utils namespace changes.

	* camel-mime-message.c (camel_mime_message_class_init): Updated
	for string-utils namespace changes.
	(camel_mime_message_init): Same.

	* camel-mime-filter-enriched.c
	(camel_mime_filter_enriched_class_init): Updated for string-utils
	namespace changes.

	* camel-folder-summary.c (camel_folder_summary_init): Updated for
	string-utils namespace changes.

	* camel-string-utils.[c,h]: Renamed from string-utils.[c,h] and
	also namespaced all functions.

svn path=/trunk/; revision=21751
2003-07-07 19:18:57 +00:00
777f8cf10f remove unused var.
2003-03-28  Not Zed  <NotZed@Ximian.com>

	* providers/local/camel-spool-store.c (get_folder): remove unused
	var.

	* providers/imap/camel-imap-utils.c (imap_parse_list_response):
	moved an unused var to the #if 0'd out block.

	* providers/imap/camel-imap-store.c
	(parse_list_response_as_folder_info): remove unused vars.

	* camel-index-control.c (main): deifne camel_init() before using
	it.

	* camel-vee-store.c (vee_get_folder): removed unused var.

	* camel-stream-mem.c (stream_write): warning -> fixme.

	* camel-stream-filter.c (_CamelStreamFilterPrivate): Add a ; to
	the end of the struct definition.

	* camel-store.c (camel_store_delete_folder): remove unused var.
	(camel_store_rename_folder): "
	(camel_store_unsubscribe_folder): "

	* camel-mime-part.c (write_to_stream): Changed warning into a
	TODO.
	(construct_from_parser): removed warning, the code was fixed.

	* camel-mime-message.c (construct_from_parser): Remove the
	warning, the code was fixed.

	* camel-mime-filter-enriched.c (camel_mime_filter_enriched_new):
	Remove unused var.

	* camel-medium.c (camel_medium_get_header): Removed warning, and
	changed docs to reflect it.

	* camel-gpg-context.c (gpg_ctx_parse_status): handle MODE_EXPORT
	as a noop (warning).

	* camel-folder.c (get_message_user_tag): changed a warning into a
	fixme (its not that important).
	(camel_folder_get_message_user_tag): "

	* camel-data-cache.c (data_cache_finalise): removed unused vars.
	(data_cache_expire): "

svn path=/trunk/; revision=20556
2003-03-28 00:13:46 +00:00
5a8fb211fe Don't add bogus uids to the uid array. Might fix bug #38868 (it's the only
2003-03-13  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-folder.c (get_uids): Don't add bogus uids to the uid
	array. Might fix bug #38868 (it's the only way I can figure that
	camel_folder_get_message_info() could possibly return NULL for the
	Outbox folder).

svn path=/trunk/; revision=20280
2003-03-13 22:16:50 +00:00
1f92328c4b Do the filtering ourselves. This is so a problem like a missing uid (which
2002-10-03  Not Zed  <NotZed@Ximian.com>

        * camel-folder.c
        (filter_filter): Do the filtering ourselves.  This is so a problem
        like a missing uid (which can happen legitemitely) doesn't
        prematurely abort filtering.  Stop on all other errors.  See
        #31667.

svn path=/trunk/; revision=18392
2002-10-18 03:32:42 +00:00
a2db8a30c8 Dont get the filter driver inside the change_lock. Its not necessary, and
2002-10-03  Not Zed  <NotZed@Ximian.com>

        * camel-folder.c (folder_changed): Dont get the filter driver
        inside the change_lock.  Its not necessary, and can cause deadlock
        with the way the mailer gets the filter driver via g_mainloop.
        Should fix #31572.

svn path=/trunk/; revision=18321
2002-10-04 03:00:23 +00:00
5799cfdcea /home/notzed/gnome/head/evolution/camel
2002-10-02  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-folder.c (get_matching): Set *set to
        NULL if we dont get any matches.
        (imap_sync_online): If we get no matches, skip any work, also
        reorder some code to make it easier to skip.  See #31031.

        * providers/imap/camel-imap-store.c
        (imap_check_folder_still_extant): Default to "TRUE", if the list
        command failed, it probably means a server problem, assume the
        worst.  This makes imap_refresh_info not clear the exception and
        crash.  Fixes crash of #31000.

2002-10-01  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-folder.c (imap_refresh_info): Make
        sure we pass the exception to imap_folder_selected(), otherwise
        failures can be lost.  See bug #31000.

2002-10-01  Not Zed  <NotZed@Ximian.com>

        * camel-folder.c (thaw): Add an assertion that the frozen count>0.
        (freeze): Same for >= 0.

        * camel-vee-folder.c (camel_vee_folder_remove_folder): Use the
        unmatched freeze_count when thawing folders removed from
        unmatched, rather than the folder's freeze_count.  Might be
        related to #27391.

svn path=/trunk/; revision=18314
2002-10-03 00:15:23 +00:00
eb2fce3e48 If the original message is deleted, reset the deleted flag when we're
2002-09-23  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-folder.c (transfer_message_to): If the original message is
	deleted, reset the deleted flag when we're done. Fixes bug #30876.

svn path=/trunk/; revision=18181
2002-09-23 20:48:50 +00:00
8137a35173 Update the comment.
2002-07-30  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-tcp-stream.c (camel_tcp_address_new): Update the comment.

	* camel-tcp-stream-raw.c (socket_connect): If building with IPv6
	support and the address is an IPv6 address, connect using a
	sockaddr_in6 otherwise use the standard IPv4 sockaddr_in
	structure.
	(stream_get_local_address): Fix to work with IPv6 addresses.
	(stream_get_remote_address): Same.

	* camel-tcp-stream-openssl.c (socket_connect): Same as above.
	(stream_get_local_address): Fix to work with IPv6 addresses.
	(stream_get_remote_address): Same.

	* camel-tcp-stream-ssl.c (stream_connect): If building with IPv6
	support and the address is an IPv6 address, initialise the
	PRNetAddr accordingly.
	(stream_get_local_address): Fix to work with IPv6 addresses.
	(stream_get_remote_address): Same.

svn path=/trunk/; revision=17651
2002-07-31 01:03:10 +00:00
58e9041bff Include <sys/time.h> for struct timeval.
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-26 01:07:05 +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
4655d88867 Check for LOGIN xxxx as well if debug is on, so we dont print passwords to
2002-05-07  Not Zed  <NotZed@Ximian.com>

        * camel-remote-store.c (remote_send_string): Check for LOGIN xxxx
        as well if debug is on, so we dont print passwords to evolution
        logs.

        * providers/imap/camel-imap-utils.c (imap_is_atom_char): This was
        really broken.  1. isprint() is locale dependent, and 2. it looked
        up an 8 bit value in a 7 bit table without truncating it.  I've
        removed the isprint() stuff and just put it directly into the
        special table, which i've expanded to the right size too.

        * providers/imap/*: Applied patch from Preston Elder
        <prez@magick.tm> to make camel only use literals if it needs to
        for simple strings.  Changed slightly to use imap_is_atom() and
        more consistent formatting.
        providers/imap/camel-imap-utils.c (imap_is_atom): Chagned from
        imap_needs_quoting().

        ** Merged in camel-object2 branch.  Simpler camelobject
        implementation + object args interface.

        * camel.c (camel_init): Call camel_object_get_type() to make sure
        camel_object_type is initialised.

        * camel-object.h (CAMEL_OBJECT_TYPE): Changed to return global
        camel_object_type pointer, not call camel_object_get_type.

svn path=/trunk/; revision=16701
2002-05-07 07:31:26 +00:00
e96bfc58ca Flush the only-once actions.
2002-01-07  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-folder.c (filter_filter): Flush the only-once actions.

	* camel-filter-driver.c (camel_filter_driver_filter_message):
	Don't increment a filtered_count here any longer.
	(camel_filter_driver_reset_filtered_count): Removed.
	(camel_filter_driver_get_filtered_count): Removed.
	(do_beep): New action.
	(play_sound): New action to play a sound
	(do_only_once): Another new action.
	(camel_filter_driver_finalise): Free the only_once hash if the
	driver has not been "flushed".
	(camel_filter_driver_flush): Flush all of the only-once actions.

svn path=/trunk/; revision=15262
2002-01-08 00:45:58 +00:00
9
c43aa966cb Turn off w() -> warnings.
2001-10-29    <NotZed@Ximian.com>

        * camel-mime-utils.c: Turn off w() -> warnings.

        * providers/imap/camel-imap-store.c (rename_folder): Also rename
        the message cache.
        (rename_folder): Fix subscribed folders table with rename(s).

        * providers/imap/camel-imap-folder.c (imap_rename): Implement,
        rename the cache dir pointer.

        * providers/imap/camel-imap-message-cache.c
        (camel_imap_message_cache_set_path): New method to set the path
        used by a message cache.

svn path=/trunk/; revision=14327
2001-10-29 08:24:00 +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
0
a1709b95e1 If no exception supplied, use a local one. (move_message_to): Set the seen
2001-10-20    <NotZed@Ximian.com>

        * camel-folder.c (move_messages_to): If no exception supplied, use
        a local one.
        (move_message_to): Set the seen flag also when we delete it.

svn path=/trunk/; revision=13817
2001-10-20 01:01:06 +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
ba39d4fff5 Turn off warnings. (get_name): Same.
2001-10-05  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-service.c (camel_service_finalize): Turn off warnings.
	(get_name): Same.

	* camel-sasl.c (sasl_challenge): Turn off warnings.

	* camel-tcp-stream.c (tcp_connect): Turn off warnings.
	(tcp_getsockopt): Same.
	(tcp_setsockopt): Here too.
	(tcp_get_socket): And here.

	* camel-folder.c (folder_sync): Turn off warnings.
	(expunge): Same.
	(append_message): Here too.
	(get_message): And here.
	(search_by_expression): And again here.
	(folder_changed): Here too.

	* camel-store.c (get_folder): Set an exception and turn off
	debugging g_warnings.
	(create_folder): Same.
	(delete_folder): Here too.
	(rename_folder): And here.
	(get_trash): And here.
	(get_folder_info): Same.
	(free_folder_info): And again here.
	(camel_folder_info_build): Here too.
	(folder_subscribed): Same.
	(subscribe_folder): Here too.
	(unsubscribe_folder): And here.

svn path=/trunk/; revision=13458
2001-10-05 19:38:24 +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
5
3420538a5c Only unref info if we got it.
2001-09-25    <NotZed@Ximian.com>

	* camel-folder.c (get_unread_message_count): Only unref info if we
	got it.

svn path=/trunk/; revision=13130
2001-09-25 22:19:40 +00:00
4
35fe068ed2 Set the exception to FOLDER_INVALID rather than making out it worked. A
2001-09-24    <NotZed@Ximian.com>

        * camel-folder.c (append_message): Set the exception to
        FOLDER_INVALID rather than making out it worked.  A fix for #7025.
        (search_by_expression): Here too.

svn path=/trunk/; revision=13106
2001-09-25 00:58:34 +00:00
9
bef39dc4e0 General cleanup of camel debug printfs.
2001-09-19    <NotZed@Ximian.com>

        * General cleanup of camel debug printfs.

        * camel-lock.c (camel_lock_fcntl): Changed to return 'success' if
        the error indicates file locking isn't supported on this
        filesystem.  Still return a warning just incase (if its the first
        time).  Might fix a lot of reported bugs.

        * providers/local/camel-spool-store.c (get_folder_info): Dont
        include the empty // host part in the uri.  This 'breaks' the
        service lookup.

svn path=/trunk/; revision=12973
2001-09-19 08:28:36 +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
0
ec9803b91d Progress reporting while moving messages.
2001-09-10    <NotZed@Ximian.com>

        * camel-folder.c (move_messages_to): Progress reporting while
        moving messages.

        * camel-store.c (camel_store_delete_folder): Make sure we remove
        the folder from our vtrash, if we have it in our opened set, and
        also remove it from our hashtable.
        (camel_store_rename_folder): Remove the old folder name from the
        folder cahce, if it is there.

svn path=/trunk/; revision=12758
2001-09-11 00:26:29 +00:00
6f22eb642b Slightly re-arranged filter/change notification logic. If we;re filtering,
2001-08-01  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
	Slightly re-arranged filter/change notification logic.  If we;re
	filtering, freeze the folder till we're finished to smooth the ui
	for new mail.

2001-07-31  Not Zed  <NotZed@Ximian.com>

	* camel-folder.c (camel_folder_init): Chagned mutexes to
	e_mutexes, folder lock recursive.  This fixes the imap filtering
	bug, or at least some cases of it.
	(camel_folder_finalize): Free mutexes.

	* camel-private.h (CamelFolderPrivate): Changed mutexes to
	e_mutexes.

2001-07-25  Not Zed  <NotZed@Ximian.com>

	* camel-folder.c (camel_folder_change_info_*): Change the
	return if fail's into asserts.
	(camel_folder_change_info_free): Don't let it accept a NULL
	argument.  This isn't g_lib so we dont have to.

svn path=/trunk/; revision=11537
2001-08-01 04:57:01 +00:00
fc49986ee1 Change the break into a continue, we should process as many as we can
2001-07-24  Not Zed  <NotZed@Ximian.com>

        * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
        Change the break into a continue, we should process as many as we
        can find.

        * camel-folder.c (camel_folder_move_messages_to): If we have no
        uid's to copy, exit here before going any further.  Some code
        internally [imap] assumes there are uids to copy otherwise it can
        segfault.
        (camel_folder_copy_messages_to): Same.

svn path=/trunk/; revision=11392
2001-07-25 02:15:05 +00:00
6c2482302f if source == dest, just no-op.
2001-07-05  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-folder.c (camel_folder_copy_messages_to): if source ==
	dest, just no-op.

svn path=/trunk/; revision=10817
2001-07-05 17:41:53 +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
4ca5cdfb10 Note: Except for the info_free(), the NULL checks are g_return's. I felt
2001-06-18  Jeffrey Stedfast  <fejj@ximian.com>

	Note: Except for the info_free(), the NULL checks are
	g_return's. I felt that since g_free() handles NULL that our
	_free() functions should also.

	* camel-folder.c (camel_folder_change_info_free): Check to make
	sure that the info pointer isn't NULL.
	(camel_folder_change_info_change_uid): Same.
	(camel_folder_change_info_changed): Same.
	(camel_folder_change_info_remove_uid): Same.
	(camel_folder_change_info_add_uid): Same.
	(camel_folder_change_info_build_diff): Same.
	(camel_folder_change_info_cat): Same.
	(camel_folder_change_info_add_source): Same.
	(camel_folder_change_info_add_source_list): Same.
	(camel_folder_change_info_add_update): Same.
	(camel_folder_change_info_add_update_list): Same.

svn path=/trunk/; revision=10280
2001-06-18 21:08:19 +00:00
e95a407f3c New class that can be used to browse a multipart/digest message as if it
2001-04-23  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-digest-folder.[c,h]: New class that can be used to browse
	a multipart/digest message as if it were a CamelFolder.

svn path=/trunk/; revision=9530
2001-04-24 00:01:51 +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
56737afcb1 Don't allow the user to copy a message to or from the vtrash folder. Set
2001-03-13  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-folder.c (camel_folder_copy_message_to): Don't allow the
	user to copy a message to or from the vtrash folder. Set an
	exception if they try.
	(camel_folder_move_message_to): This one is a bit more
	complicated: 1) If the user tried to move a message from the
	vtrash into the original folder, just undelete the message. 2) If
	the user tries to move the message to the vtrash folder, then just
	mark the message as deleted. 3) If the user tries to move the
	message from the vTrash to a folder other than the original, use
	the original folder as the source. As another optimization, I've
	made it so that if the user tries to move a message to the same
	folder, just no-op.
	(move_message_to): Unset the deleted flag before moving (assuming
	it's there).
	(copy_message_to): Same.

	* camel-vee-folder.c (camel_vee_folder_get_message_folder): New
	convenience function to get the folder from which the message uid
	is derived from.

svn path=/trunk/; revision=8677
2001-03-13 18:59:32 +00:00
c13a70e866 Doh, cut and paste problem, use mlist not cc.
* camel-folder-summary.c (camel_message_info_new_from_header):
	Doh, cut and paste problem, use mlist not cc.

	* camel-folder.c (move_message_to):
	(copy_message_to): If the source folder doesn't support a
	summary, dont try and get the message info from it.

svn path=/trunk/; revision=8361
2001-02-23 01:40:46 +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
10fba20de9 Added flags argument. (message_changed): Add support for the auto-update
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-19 20:59:54 +00:00
b8af62e803 Removed unwanted header. It was never put in for a reason. Stop fixing
2001-02-06  Not Zed  <NotZed@Ximian.com>

        * camel-search-private.c: Removed unwanted header.  It was never
        put in for a reason.  Stop fixing irrelevant warnings.

        (camel_ustrstrcase): Our own strstrcase impl for utf8 strings.
        (camel_ustrcasecmp): Ditto for strcasecmp.
        (camel_ustrncasecmp): And strncasecmp.
        (utf8_get): Simpler interface to utf8 string processing.
        (camel_search_header_match): Use the new things.

2001-02-05  Not Zed  <NotZed@Ximian.com>

        * camel-folder.c (get_summary): Removed some old variables/a small
        memleak.
        (free_summary): Removed old variables.

        * camel-mime-utils.c (header_raw_check_mailing_list): New utility
        function to get the mailing list (if any) that a set of headers
        came from.

svn path=/trunk/; revision=8008
2001-02-06 02:38:19 +00:00
4f5effdf88 Index: ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/camel/ChangeLog,v
retrieving revision 1.684
diff -r1.684 ChangeLog
0a1,34
> 2001-01-17  Not Zed  <NotZed@Ximian.com>
>
> 	* camel-folder.c (free_summary): Call
> 	camel_folder_summary_array_free() to do the work.
> 	(get_summary): Use camel_folder_summary_array() to get the array
> 	atomically.  These fixes allow folder/test8 to work again, and fix
> 	a sort of race where the summary size can change while we were
> 	making a copy of it.
>
> 	* camel-folder-summary.c (camel_folder_summary_array): Get the
> 	summary array atomically, so it can't contain empty records.
> 	(camel_folder_summary_array_free): And free it.
>
> 	* tests/lib/camel-test.c (die): If we are verbose & in threads,
> 	then goto sleep so we can debug.
>
> 	* tests/folder/test8.c (worker): Add a missing pull() for
> 	comnparing content.
>
> 	* camel-filter-search.c: Fix the symbol table, so match-all is an
> 	immediate function, as it should be.
>
> 	* tests/folder/test9.c (main): New test, tests some filtering
> 	things.
>
> 	* tests/message/test3.c (main): Dont use a boundary string with
> 	spaces in it.  Folding can corrupt it.  Maybe the folding isn't
> 	working entirely right, but anyway.
>
> 	* camel-session.c: Debug out the debug.
>
> 	* camel-filter-driver.c (camel_filter_driver_filter_folder): Plug
> 	a messageinfo leak.
>
1a36,94
>
> 	* camel-filter-search.c (header_exists): Changed to support
> 	multiple args (or'd together).
> 	(header_contains): Cleaned up to match the search code.  Why did
> 	fejj change it? I'll never know.
> 	(header_matches):
> 	(header_starts_with):
> 	(header_ends_with): Big cleanup of fejj's "i'm the cut & paste
> 	king" code.  Also properly handle or'ing of additional args to
> 	match what the folder-search code should do.
> 	(check_match): New function which does the annoying matching
> 	stuff (for header matches).
> 	(check_header): Similarly, handles or'ing of the matches together.
> 	(header_contains):
> 	(header_matches):
> 	(header_starts_with):
> 	(header_ends_with): Call check_header to do the actual work.
> 	(header_soundex): And here too.
> 	(match_all): Yeah like match-all isn't passed expression results,
> 	its passed expression terms.  Fix this so match-all works like it
> 	should, by executing the contained expression.
> 	(message_body_contains): Copied directly from
> 	camel-folder-search.c, a more robust/faster/simpler body search
> 	code.
> 	(mime_part_matches): Removed entirely.
> 	(handle_multipart): Removed entirely.
> 	(build_match_regex): Copied from camel-folder-search.  Builds a
> 	set of simple strings into a regex pattern that matches any of
> 	them (for faster & simpler matching).  Expanded to accept regex
> 	patterns itself, so it can merge them together.
> 	(body_contains): Use build match/match message to match using a
> 	built regex.
> 	(body_regex): Likewise, this time we tell it we're building a
> 	regex though.
> 	(header_full_regex): Use build_match_regex to take the drudgery
> 	out of it, and expand it to handle multiple regex's at once.
> 	(get_full_header): slightly cleaner (well i dunno, the sprintf
> 	stuff just got to me).
> 	(header_regex): Cleaned up to use build_match_Regex too, and to
> 	properly check types.
> 	(filter_message_search): Just allocate 'fms' on the stack.
>
> 	* camel-filter-driver.c (camel_filter_driver_finalise):
> 	(camel_filter_driver_init):
> 	(camel_filter_driver_class_init):
> 	(camel_filter_driver_get_type): Changed from gtk object to camel
> 	object.
> 	(camel_filter_driver_add_rule): New function to add a rule to be
> 	processed in sexp form.
> 	(camel_filter_driver_init): Init the rules list.
> 	(camel_filter_driver_finalise): Clear the rules/rules list.
> 	(camel_filter_driver_filter_message): Scan rules list directly
> 	rather than creating on the fly.
>
> 	* Makefile.am (libcamelinclude_HEADERS): Added camel-filter-driver.h
> 	(libcamel_la_SOURCES): Added camel-filter-driver.c, code taken
> 	from filter-driver, which can drive, uh, filters based on sexp's.
> 	(libcamelinclude_HEADERS):
> 	(libcamel_la_SOURCES): Added camel-filter-search.[ch]

svn path=/trunk/; revision=7560
2001-01-17 01:07:02 +00:00