aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-filter-driver.c
Commit message (Collapse)AuthorAgeFilesLines
* Created temporary link list, we need to link with something for gettext.Not Zed2002-11-051-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | 2002-11-05 Not Zed <NotZed@Ximian.com> * Makefile.am (camel_lock_helper_LDADD): Created temporary link list, we need to link with something for gettext. * camel.h: Remove gstring-util.h and hash-table-utils.h. * camel-text-index.c: (text_index_normalise): Changed for g_utf8_strdown api change. * camel-search-private.c: * camel-mime-utils.c: * camel-mime-part-utils.c: * camel-html-parser.c: * camel-charset-map.c: Include glib/gunicode.h from glib instead of gal. * camel-filter-driver.c: Remove include of gtk/gtk.h, should never have been there. svn path=/trunk/; revision=18542
* Canonicalise the source_uri to not have a path. Fixes bug #32268.Jeffrey Stedfast2002-10-231-13/+0
| | | | | | | | | | | | | | | | | | | | | | 2002-10-18 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_folder): Canonicalise the source_uri to not have a path. Fixes bug #32268. 2002-10-17 Jeffrey Stedfast <fejj@ximian.com> Possible fix for bug #32270 * providers/pop3/camel-pop3-store.c (try_sasl): If we get an I/O error, we should not be setting the CANT_AUTH exception but should instead be setting the SYSTEM exception. Also check for EINTR which signifies a USER_CANCEL exception. (pop3_try_authenticate): If the auth mechanism isn't supported, don't set the CANT_AUTH exception since then we will loop and try again with the same data which will just cause an infinite loop. (pop3_connect): Simplified a bit. svn path=/trunk/; revision=18412
* Take new session arg. Update callers. (symbols[]): changed get-source toNot Zed2002-09-191-5/+14
| | | | | | | | | | | | | | | | | | 2002-09-19 Not Zed <NotZed@Ximian.com> * camel-filter-search.c (camel_filter_search_match): Take new session arg. Update callers. (symbols[]): changed get-source to header-source (header_source): Chagned from get_source. Now a boolean, returns true if source matches one of the arguments. Uses the provider url comparison directly for accurate checking. Makes 'filter on source' work. * camel-filter-driver.c (camel_filter_driver_new): Take new arg, session. (camel_filter_driver_finalise): Free session. svn path=/trunk/; revision=18112
* New filter action to unset a system flag. The exact opposite of set_flag.Jeffrey Stedfast2002-07-291-16/+39
| | | | | | | | | 2002-07-29 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (unset_flag): New filter action to unset a system flag. The exact opposite of set_flag. svn path=/trunk/; revision=17625
* Renamed from shell_exec(). Also, we now want to pass argc/argv on to theJeffrey Stedfast2002-07-251-11/+37
| | | | | | | | | | | | | 2002-07-25 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_shell): Renamed from shell_exec(). Also, we now want to pass argc/argv on to the CamelFilterDriverShellFunc. (camel_filter_driver_set_shell_func): Renamed a bit. * camel-filter-search.c (pipe_message): Renamed from shell_exec(). svn path=/trunk/; revision=17583
* Make sure message is non-NULL before setting the source on it.Jeffrey Stedfast2002-07-111-1/+1
| | | | | | | | | 2002-07-10 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (get_message_cb): Make sure message is non-NULL before setting the source on it. svn path=/trunk/; revision=17415
* Use the CamelMessageInfo rather than the CamelMimeMessage because theJeffrey Stedfast2002-05-291-8/+5
| | | | | | | | | | 2002-05-28 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_log): Use the CamelMessageInfo rather than the CamelMimeMessage because the message may not have been loaded (thus NULL). svn path=/trunk/; revision=17025
* Add a "char **appended_uid" argument, for the caller to optionally pass inDan Winship2002-05-141-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Replace copy_messages_to and move_messages_to with a single function thatDan Winship2002-05-111-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Get rid of an unused variable.Jeffrey Stedfast2002-04-171-1/+0
| | | | | | | | | | | | | | | | | | | 2002-04-16 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_folder): Get rid of an unused variable. * providers/smtp/camel-smtp-transport.c (smtp_helo): Use camel_gethostbyaddr since gethostbyaddr is not reentrant. * camel-http-stream.c (http_connect): Updated after the rename of camel_get_host_byname. * camel-service.c (camel_gethostbyname): Renamed. (camel_gethostbyaddr): New cancellable/reentrant version of gethostbyaddr. svn path=/trunk/; revision=16484
* We now have to check to make sure that p->message is non-NULL because weJeffrey Stedfast2002-03-291-3/+22
| | | | | | | | | | | 2002-03-28 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_copy): We now have to check to make sure that p->message is non-NULL because we only load the message when we have to. (do_move): Same here. svn path=/trunk/; revision=16280
* Construct the source_url the right way. The previous way was generatingJeffrey Stedfast2002-03-281-7/+14
| | | | | | | | | | | 2002-03-27 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_folder): Construct the source_url the right way. The previous way was generating urls like pop://fejj@ximian.com;keep_on_server/inbox which is wrong. svn path=/trunk/; revision=16260
* When we add a new name, up all of the cache limits, because we're probablyNot Zed2002-03-251-2/+5
| | | | | | | | | | | | | | | | | | | 2002-03-25 Not Zed <NotZed@Ximian.com> * camel-text-index.c (text_index_add_name): When we add a new name, up all of the cache limits, because we're probably going to be adding more. (text_index_sync): Drop the cache limits back down again, we dont need them when looking words up. ** MERGE camel_index branch. * camel-text-index.[ch]: Added files i forgot to add (eep nearly lost all this work!) * camel-block-file.c (sync_nolock): Fix an infinite loop in syncing. svn path=/trunk/; revision=16242
* Use while (node->next) instead of while (node)Jeffrey Stedfast2002-01-291-1/+1
| | | | | | | | | 2002-01-28 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_remove_rule_by_name): Use while (node->next) instead of while (node) svn path=/trunk/; revision=15502
* Call the beep callback function.Jeffrey Stedfast2002-01-251-4/+20
| | | | | | | | | | | 2002-01-24 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_beep): Call the beep callback function. (camel_filter_driver_set_system_beep_func): New function to set the beep callback. svn path=/trunk/; revision=15459
* New function to remove a filter rule by name.Jeffrey Stedfast2002-01-231-1/+24
| | | | | | | | | 2002-01-22 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_remove_rule_by_name): New function to remove a filter rule by name. svn path=/trunk/; revision=15425
* As a temporary solution, just printf ("\a"); to make a beep :-)Jeffrey Stedfast2002-01-221-1/+1
| | | | | | | | | | | | | | | | | 2002-01-21 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_beep): As a temporary solution, just printf ("\a"); to make a beep :-) * providers/imap/camel-imap-command.c (imap_command_strdup_vprintf): Encode the mailbox to UTF-7 here. * providers/imap/camel-imap-utils.c (imap_parse_list_response): Decode the mailbox name as we parse the list response. (imap_mailbox_decode): It's only an illegal mailbox name if it didn't switch back to US-ASCII mode. svn path=/trunk/; revision=15421
* If the mbox file is a symlink, follow the symlink and get the One TrueJeffrey Stedfast2002-01-101-24/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2002-01-09 Jeffrey Stedfast <fejj@ximian.com> * providers/local/camel-mbox-folder.c (camel_mbox_folder_new): If the mbox file is a symlink, follow the symlink and get the One True Path so that we can rewrite the mbox later without worrying about clobbering the symlink. 2002-01-08 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-search.c (TODO): There are a few sexp callbacks that could be modified to use fms->info rather than using a message object (like date and possibly mlist stuff) but *only* if the date exists on the CamelMessageInfo object (since it may be blank except for message flags). (camel_filter_search_get_message): New internal convenience function to make sure that the FilterMessageSearch has loaded the message (and to load the message if this isn't the case). (check_header): Call camel_filter_search_get_message(). (header_exists): Same. (header_regex): Here too. (header_full_regex): And here. (body_contains): Again here. (body_regex): Here too. (get_sent_date): Here also. (get_received_date): Same. (get_source): Here if we need to. (camel_filter_search_match): Now takes a callback function/data pair for on-demand message loading so that we don't necessarily have to load the message if the defined filter rules don't require it. * camel-filter-driver.c (camel_filter_driver_filter_folder): Don't bother fetching the message here, let camel_filter_driver_filter_message() worry about this. (get_message_cb): New utility callback to fetch a message. (camel_filter_driver_filter_message): Only fetch the message if we absolutely need it to get a CamelMessageInfo. Instead of passing a message object to camel_filter_search_match(), pass get_message_cb and some user_data so that the matching code can fetch the message on demand. svn path=/trunk/; revision=15276
* Flush the only-once actions.Jeffrey Stedfast2002-01-081-24/+135
| | | | | | | | | | | | | | | | | | | 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
* Reset the filtered_count to zero.Jeffrey Stedfast2001-12-151-14/+65
| | | | | | | | | | | | | | | | | 2001-12-14 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_reset_filtered_count): Reset the filtered_count to zero. (camel_filter_driver_get_filtered_count): Return the private filtered_count value. (camel_filter_driver_filter_message): Increment the filtered_count. (camel_filter_driver_set_shell_exec_func): New function to set the shell-exec func. (shell_exec): New ESExp filter action callback. svn path=/trunk/; revision=15087
* Same as below.12001-11-011-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-31 <NotZed@Ximian.com> * providers/local/camel-spool-folder.c (spool_get_message): Same as below. * providers/local/camel-maildir-folder.c (maildir_get_message): Same as below. * providers/local/camel-mbox-folder.c (mbox_get_message): Set USER_CANCEL if failed due to EINTR. * camel-filter-driver.c (camel_filter_driver_filter_mbox): If construct from parser fails due to user cancel, set USER_CANCEL on exception. * camel-mime-part.c (construct_from_parser): Return error if the parser had an io error. * camel-mime-message.c (construct_from_parser): Check error on parser/return error. * camel-mime-parser.c (folder_scan_init): Init error number. (camel_mime_parser_errno): New function, return errno of any io failures. (folder_read): Set errno if a failure occured. (folder_seek): Same. (folder_scan_init_with_fd): Setup errno depeding on ok/failure. (folder_scan_init_with_stream): Same. svn path=/trunk/; revision=14559
* Make sure we unref the mimeparse when we're done (successfully). This was02001-10-311-4/+3
| | | | | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_mbox): Make sure we unref the mimeparse when we're done (successfully). This was leaking an fd every get-mail! :( * camel-lock-client.c (camel_lock_helper_init): Close all fd's above 2. svn path=/trunk/; revision=14468
* More fixing of the license texts.Ettore Perazzoli2001-10-281-12/+11
| | | | svn path=/trunk/; revision=14217
* Add an optimization for when destination folder is the same as the sourceJeffrey Stedfast2001-10-181-0/+3
| | | | | | | | | 2001-10-17 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_copy): Add an optimization for when destination folder is the same as the source folder. svn path=/trunk/; revision=13735
* Set the DELETED flag on directly on the info if the source folder doesn'tJeffrey Stedfast2001-10-181-1/+1
| | | | | | | | | | 2001-10-17 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Set the DELETED flag on directly on the info if the source folder doesn't have summary capability. svn path=/trunk/; revision=13729
* Only perform the operation on the folder if the folder has summaryJeffrey Stedfast2001-10-171-3/+3
| | | | | | | | | | | | 2001-10-16 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_flag): Only perform the operation on the folder if the folder has summary capability, else just poke the info directly. Fixes the "Filters don't work" bug. (do_score): Same. (do_colour): And here too. svn path=/trunk/; revision=13697
* If we get a search error, just abort, dont try and fall back and copy to62001-09-271-22/+42
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-09-26 <NotZed@Ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): If we get a search error, just abort, dont try and fall back and copy to inbox. (camel_filter_driver_filter_message): Make sure we ALWAYS use exceptions for important things - like moving messages to inbox! (camel_filter_driver_filter_message): If we have the source folder, use camel_folder_set_message_flags rather then poking the info directly, which skips changed events. This means filtering immediate doesn't lose changed events. (do_flag): Same here. (do_colour): Same thing but using set_tag. (do_score): Same again. (camel_filter_driver_filter_folder): Use ~0 as the 'set' arg to set_flags, just saves typing. (open_folder): We cache folders that we couldn't open as well as those ones we could. Use magic token FOLDER_INVALID = (void *)~0 as the marker. (close_folder): Handle FOLDER_INVALID case properly. svn path=/trunk/; revision=13169
* If filter inbox is set on the store, and we're opening inbox '', then82001-09-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Don't reuse the exception if it has already been set.Jeffrey Stedfast2001-09-141-9/+16
| | | | | | | | | | | | | | 2001-09-13 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_folder): Don't reuse the exception if it has already been set. (camel_filter_driver_filter_message): Same here. Also use the new return value from camel_filter_search_match(). * camel-filter-search.c (camel_filter_search_match): Return an integer (matched, no-match, or error). svn path=/trunk/; revision=12819
* free the source url in the nonfailure case.Larry Ewing2001-09-131-0/+1
| | | | | | | | | 2001-09-12 Larry Ewing <lewing@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_mbox): free the source url in the nonfailure case. svn path=/trunk/; revision=12782
* Unref the message info.Jeffrey Stedfast2001-09-131-1/+4
| | | | | | | | | 2001-09-12 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_mbox): Unref the message info. svn path=/trunk/; revision=12776
* A quoted string cannot contain \n's so check for those as well.Jeffrey Stedfast2001-08-101-3/+3
| | | | | | | | | | 2001-08-09 Jeffrey Stedfast <fejj@ximian.com> * providers/imap/camel-imap-utils.c (imap_parse_string_generic): A quoted string cannot contain \n's so check for those as well. (imap_atom_specials): Update this to fix bug #6553. svn path=/trunk/; revision=11845
* Slight fix for when source == destination (we don't want to do this actionJeffrey Stedfast2001-07-241-0/+3
| | | | | | | | | | 2001-07-23 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_move): Slight fix for when source == destination (we don't want to do this action because on-demand filtering would then delete the messages it supposedly "moved"). svn path=/trunk/; revision=11304
* We now use a structure as the bucket data rather than just a cache levelJeffrey Stedfast2001-07-131-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-13 Jeffrey Stedfast <fejj@ximian.com> * camel-uid-cache.c (camel_uid_cache_new): We now use a structure as the bucket data rather than just a cache level so set the save state to TRUE. (maybe_write_uid): We only save the uid if the cache levels are the same *and* if the save state is TRUE. (free_uid): Free the state value. (camel_uid_cache_get_new_uids): New uids that get added to the cache start with a save state of FALSE. (camel_uid_cache_save_uid): Set the save state of the uid to TRUE. What should we do if the uid isn't already in the cache? Currently I make it add the uid, but maybe it shouldn't? * providers/imap/camel-imap-folder.c (imap_filter_timeout): Update to reflect CamelFilterDriver API changes. * camel-filter-driver.c (camel_filter_driver_filter_folder): Take a cache argument so we can tell the cache whether or not the uid should be saved (meaning we have successfully filtered it). svn path=/trunk/; revision=11084
* Okay, I've decided that that user is just on crack. We don't want to allowJeffrey Stedfast2001-07-131-8/+9
| | | | | | | | | | | | | | 2001-07-12 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Okay, I've decided that that user is just on crack. We don't want to allow filtering of deleted messages or we could get some unexpected behavior. (do_move): Oops. My last fix needs to be after the if-statement, not inside it. (do_copy): And here too. svn path=/trunk/; revision=11068
* Okay, I've decided that that user is just on crack. We don't want to allowJeffrey Stedfast2001-07-131-4/+3
| | | | | | | | | | | 2001-07-12 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Okay, I've decided that that user is just on crack. We don't want to allow filtering of deleted messages or we could get some unexpected behavior. svn path=/trunk/; revision=11048
* Only set p->copied and p->deleted if the messages are copied without anJeffrey Stedfast2001-07-131-7/+11
| | | | | | | | | | | | | | | | | | 2001-07-12 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_move): Only set p->copied and p->deleted if the messages are copied without an exception. (do_copy): Same - but obviously we don't set the p->deleted here at all. (camel_filter_driver_filter_message): Since users complained that they couldn't filter deleted messages for "safe keeping" (WTF? safe keeping? why were they deleted in the first place then??), I have taken out the code that optimized filtering by not allowing deleted messages to be filtered. This fixes bug #4473. Note: Users have a warped sense of logic. svn path=/trunk/; revision=11047
* Create the messageinfo itself, so we can properly set the size.Not Zed2001-07-111-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | 2001-07-11 Not Zed <NotZed@Ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_mbox): Create the messageinfo itself, so we can properly set the size. * camel-movemail.c (camel_movemail_solaris): Write out the from line between each message. 2001-07-10 Not Zed <NotZed@Ximian.com> * providers/local/camel-local-summary.c (local_summary_add): Copy the size across from the source message info if supplied. * camel-stream-null.c: Added a 'written' member which keeps track of how much has been written to the stream. * camel-movemail.c (camel_movemail): If we have BROKEN_SPOOL defined, then use the solaris movemail to quote from lines that sendmail didn't. (camel_movemail_solaris): Compile this in if BROKEN_SPOOL defined. svn path=/trunk/; revision=10989
* new method to get an application-initialized filter driver.Dan Winship2001-07-021-23/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-session.c (camel_session_get_filter_driver): new method to get an application-initialized filter driver. * camel-filter-driver.c (camel_filter_driver_new): Remove the get_folder function and data args from here... (camel_filter_driver_set_folder_func): ...and add this function to set/change them. * providers/imap/camel-imap-folder.c (camel_imap_folder_new): If this folder is INBOX and we're filtering INBOX, set a flag on the folder for later. (imap_update_summary): Add another argument (GPtrArray *recents), and if it's non-NULL, add the uids of any \Recent new messages to it. (camel_imap_folder_changed): If doing filtering in this folder, create a recents array and pass it to imap_update_summary. Then get a filter driver and use it to filter the recent messages. * providers/imap/camel-imap-summary.h: * providers/imap/camel-imap-utils.c (imap_parse_flag_list): Add support for the \Recent flag. * providers/imap/camel-imap-provider.c (imap_conf_entries): enable the "filter" option. * camel-types.h: add CamelFilterDriver typedef here svn path=/trunk/; revision=10681
* Since we want an error opening a folder to result in the message beingJeffrey Stedfast2001-06-271-5/+8
| | | | | | | | | | | 2001-06-26 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (open_folder): Since we want an error opening a folder to result in the message being copied to Inbox (assuming no other filters get a chance to `move` it), don't record any exceptions that may occur in this function. svn path=/trunk/; revision=10515
* g_strdup() the message source here or we will have problems later when weJeffrey Stedfast2001-06-261-16/+21
| | | | | | | | | | 2001-06-25 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-search.c (get_source): g_strdup() the message source here or we will have problems later when we go to free the result ;-) svn path=/trunk/; revision=10498
* Update the copyrights, replacing Helix Code with Ximian andEttore Perazzoli2001-06-231-3/+3
| | | | | | helixcode.com with ximian.com all over the place. svn path=/trunk/; revision=10440
* Add a separator between the service url and the folder name, if needed.Jon Trowbridge2001-06-081-1/+13
| | | | | | | | | 2001-06-07 Jon Trowbridge <trow@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_folder): Add a separator between the service url and the folder name, if needed. svn path=/trunk/; revision=10153
* Added an argument, so that the original source URI of the mbox can beJon Trowbridge2001-06-081-7/+12
| | | | | | | | | | | | | | | | | | | | | | | | 2001-06-07 Jon Trowbridge <trow@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_mbox): Added an argument, so that the original source URI of the mbox can be passed in. This is needed because this function is called post-movemail, so we are never reading from the original mbox anymore. Without the original mbox URI, the X-Evolution-Source tag gets set incorrectly and filter-on-source will fail to work. (camel_filter_driver_filter_message): Also take an extra arg for the original source URI. It is the original URI, not the source URI, that is used for filtering and for setting the X-Evolution-Source tag. 2001-06-07 Jon Trowbridge <trow@ximian.com> * mail-ops.c (fetch_mail_fetch): Pass the original source URI to camel_filter_driver_filter_mbox. (mail_send_message): Pass NULL as the orginal source URI to camel_filter_driver_filter_message. svn path=/trunk/; revision=10152
* more memory leaksDan Winship2001-04-181-0/+2
| | | | svn path=/trunk/; revision=9431
* merge from evolution-0-10-branch to evolution-0-10-merge-0Not Zed2001-04-051-2/+2
| | | | | | | | 2001-04-05 Not Zed <NotZed@Ximian.com> * merge from evolution-0-10-branch to evolution-0-10-merge-0 svn path=/trunk/; revision=9194
* marked report status strings for tanslation, fixes #1973Gediminas Paulauskas2001-04-031-7/+7
| | | | svn path=/trunk/; revision=9099
* Added #include <libgnome/gnome-paper.h>Jon Trowbridge2001-03-301-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-03-29 Jon Trowbridge <trow@ximian.com> * printing/e-contact-print.c: Added #include <libgnome/gnome-paper.h> * printing/e-contact-print-envelope.c: Added #include <time.h> and #include <libgnome/gnome-paper.h> * gui/component/select-names/e-select-names-completion.c (match_email): Better handle matching of "nameless" contacts. * backend/ebook/e-destination.c (e_destination_get_string): Better handle the case of a "nameless" contact. 2001-03-29 Jon Trowbridge <trow@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Save the source URL using camel_mime_message_set_source. * camel-mime-message.c (camel_mime_message_set_source): Renamed camel_mime_message_set_identity to this. Sets the X-Evolution-Source header. (camel_mime_message_get_source): Returns the X-Evolution-Source header. 2001-03-29 Jon Trowbridge <trow@ximian.com> * mail-callbacks.c: Added #include <time.h> to get things to compile. * mail-callbacks.c (mail_generate_reply): Look at the X-Evolution-Source header, and try to find a corresponding account. If this works, send the mail from this account. If not, use the default account. * mail-ops.c (send_queue_send): Strip out the X-Evolution-Source header before sending. * mail-config.c (mail_config_get_account_by_source_url): Added. Look up accounts by source URL. svn path=/trunk/; revision=9032
* Big header cleanups and nntp compile fixKjartan Maraas2001-03-301-12/+17
| | | | svn path=/trunk/; revision=9024
* Use camel_vtrash_folder_new() to create the vtrash folder now.Jeffrey Stedfast2001-03-271-9/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Don't use copy_to if the source folder doesn't support summary info's.Jeffrey Stedfast2001-03-251-4/+4
| | | | | | | | | | | | | 2001-03-25 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (do_copy): Don't use copy_to if the source folder doesn't support summary info's. (do_move): Same. (camel_filter_driver_filter_message): And again here. I think this will fix the problem of "colour" tags not staying with the message when it's copied to a folder during the filter process. svn path=/trunk/; revision=8925
* Added. Call me old-fashioned, but I just prefer to have a real API ratherJon Trowbridge2001-03-231-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-03-23 Jon Trowbridge <trow@ximian.com> * gui/widgets/e-minicard-widget.c (e_minicard_widget_set_card): Added. Call me old-fashioned, but I just prefer to have a real API rather than doing everything via gtk_object_get/set-type calls. (e_minicard_widget_set_arg): Changed to call e_minicard_widget_set_card. * backend/ebook/e-book-util.c: Small changes to get rid of compiler warnings. (Casting out const, removed unused variables, etc.) Removed some debugging messages. * gui/component/addressbook-factory.c (main): Added call to e_address_popup_factory_init. * gui/component/e-address-popup.c: Added. A popup gadget that is invoked (as a bonobo control) when an address is left-clicked in the mailer. The addressbook is queries, and the address is either displayed as a minicard (if it already exists) or in a "generic format". A button is provided for editting/adding the contact. Some of the semantics of this widget are a bit... non-standard, because of bonobo issues. I can't really seem to replicate popup-menu behavior because of how bonobo propogates events, etc. so I've tried to produce something that I think is non-annoying. YMMV. 2001-03-23 Jon Trowbridge <trow@ximian.com> * mail-display.c (handle_embedded_address_object): #ifdef away some code I don't quite want to delete yet. (html_button_press_event): Remove some of Radek's placeholder code, replace it with code to create my AddressPopup bonobo control. * mail-format.c: Remove some obsolete code that if #ifdef-ed out a while ago. * mail-ops.c (send_queue_send): Strip out the X-Evolution-Identity header when sending. 2001-03-23 Jon Trowbridge <trow@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Don't call camel_mime_message_set_identity. (The call is commented out, left over from some earlier experimentation that I want to be able to remember later...) * camel-mime-message.c (camel_mime_message_set_identity): Added. A function to set the X-Evolution-Identity header. svn path=/trunk/; revision=8916
* Return -1 on fail. (camel_filter_driver_filter_folder): Same.Jeffrey Stedfast2001-03-221-19/+21
| | | | | | | | | | | | | | | | | | | | 2001-03-21 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Return -1 on fail. (camel_filter_driver_filter_folder): Same. (camel_filter_driver_filter_mbox): Same. (camel_filter_driver_filter_folder): Return -1 if an exception was set as well. 2001-03-19 Jeffrey Stedfast <fejj@ximian.com> * camel-tcp-stream-openssl.c (camel_tcp_stream_openssl_finalize): Free the expected host. (camel_tcp_stream_openssl_new): Now takes a Service and an expected_host. Set them. svn path=/trunk/; revision=8871
* Document and modify to return a boolean value denoting whether or notJeffrey Stedfast2001-03-191-13/+73
| | | | | | | | | | | | | | | | | | 2001-03-18 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Document and modify to return a boolean value denoting whether or not errors occured during processing. (camel_filter_driver_filter_mbox): Same as above and also modified to check return codes of filter_message rather than relying only on whether or not the exception was set (as it's possible to pass in NULL for the exception). (camel_filter_driver_filter_folder): Same as above. * camel-mime-utils.c (header_param_list_format_append): Quote the param value if it contains whitespace as well. svn path=/trunk/; revision=8808
* A fix for broken mailers that send 2-digit years (ie "Wed, 28 Feb 01Jeffrey Stedfast2001-03-011-1/+1
| | | | | | | | | | | | | 2001-02-28 Jeffrey Stedfast <fejj@ximian.com> * camel-mime-utils.c (header_decode_date): A fix for broken mailers that send 2-digit years (ie "Wed, 28 Feb 01 04:59:41"). Fixes bug #1633. * camel-filter-driver.c (camel_filter_driver_filter_folder): Check to make sure message isn't NULL. svn path=/trunk/; revision=8431
* Remove the 'FIXME: remove because this isn't required...' comment forJeffrey Stedfast2001-02-231-17/+37
| | | | | | | | | | | | | | | | | | | 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
* Thaw the defaultfolder. (camel_filter_driver_set_default_folder): Thaw theJeffrey Stedfast2001-02-171-3/+9
| | | | | | | | | | | 2001-02-16 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_finalise): Thaw the defaultfolder. (camel_filter_driver_set_default_folder): Thaw the defaultfolder we're about to replace, and freeze the new defaultfolder. svn path=/trunk/; revision=8259
* Changed the subject search to handle case sensitive when it is mixed case.Not Zed2001-01-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-01-25 Not Zed <NotZed@Ximian.com> * tests/folder/test3.c: Changed the subject search to handle case sensitive when it is mixed case. * Makefile.am (libcamel_la_SOURCES): Added camel-ssearch-private.c (noinst_HEADERS): Added camel-search-private.h * camel-folder-search.c (check_header): New function to do the work of the various header checks. (search_header_matches): (search_header_starts_with): (search_header_ends_with): (search_header_contains): Use check_header to do the work. (build_match_regex): Removed. * camel-search-private.c (header_soundex): New function to match words to phrases using soundex algorithm. * camel-filter-search.c (soundexcmp): Removed. (check_match): Moved to search-private.h 2001-01-24 Not Zed <NotZed@Ximian.com> * camel-search-private.c (camel_search_build_match_regex): Added extra flags, so the same function can be used for start/end/whole/partial matches. (camel_search_header_match): Convenience function to check a single header against all sorts of different matches. * providers/imap/camel-imap-search.c (imap_body_contains): Fix for e_sexp api changes. * camel-folder-search.c: Fix for e_sexp api changes. (search_header_contains): Free args/quit on unknown header. (search_header_matches): " (search_header_starts_with): " (search_header_ends_with): " (match_message): Add an exception argument. (search_body_contains): Free args/quit on fatal error. (message_body_contains): Removed (moved to camel-search-private.c), fixed callers. * camel-filter-search.c: Fix for e_sexp api changes. (build_match_regex, message_body_contains): Moved into camel-filter-private.c Fixed callers. (check_header): moved guts to camel-search-private, and changed to use regex's for everything. Just calls that with the right args. (check_header): GEts the header, decodes it, and checks for failure, and whatnot. (check_match): Removed. (header_soundex): Changed significantly. Now it soundexes each word in the header separately, and compares it to the first argument. * tests/folder/test9.c (main): Fix for api changes. (main): Added tests to see that invalid match and action rules are properly detected. * camel-filter-driver.c (camel_filter_driver_filter_mbox): Remove the 'finished message' bit. (camel_filter_driver_filter_message): Remove an accidentally checked in debug. (camel_filter_driver_filter_message): Fix for e-sexp api changes. svn path=/trunk/; revision=7796
* (camel_filter_driver_filter_message): Remove an accidentallyMichael Zucci2001-01-241-1/+0
| | | | | | checked in debug. svn path=/trunk/; revision=7762
* Remove the 'finished message' bit.Not Zed2001-01-241-2/+2
| | | | | | | | | 2001-01-24 Not Zed <NotZed@Ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_mbox): Remove the 'finished message' bit. svn path=/trunk/; revision=7761
* Perform error checking on parsing/execution.Not Zed2001-01-231-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-01-23 Not Zed <NotZed@Ximian.com> * camel-filter-search.c (camel_filter_search_match): Perform error checking on parsing/execution. * camel-folder-search.c (camel_folder_search_execute_expression): Perform error handling on search expression. (CamelFolderSearchPrivate): Add a camelexception for error returns. (camel_folder_search_execute_expression): Setup exception pointer. (search_match_all): Quit on error. * providers/imap/camel-imap-summary.c (message_info_load): Removed some debug 'warnings', as they should now be displayed at the toplevel loader, and just made the code match similar code elsewhere. * providers/local/camel-mbox-summary.c (message_info_load): Error handling. (message_info_save): more error handling. * camel-folder-summary.c (message_info_load): Add error handling and sanity checking. (camel_folder_summary_load): Add error checks. (perform_content_info_load): Error + sanity checks. (content_info_load): error + sanity checks. svn path=/trunk/; revision=7739
* avoid /0 by updating after we've done the sync. (close_folders): Setup theNot Zed2001-01-231-2/+5
| | | | | | | | | | 2001-01-23 Not Zed <NotZed@Ximian.com> * camel-filter-driver.c (close_folder): avoid /0 by updating after we've done the sync. (close_folders): Setup the first progress report to start it off. svn path=/trunk/; revision=7734
* When removing phantom nodes, check for the end node too.Not Zed2001-01-221-12/+12
| | | | | | | | | | | | 2001-01-22 Not Zed <NotZed@Ximian.com> * camel-folder-thread.c (camel_folder_thread_messages_new): When removing phantom nodes, check for the end node too. * camel-filter-driver.[ch]: Changed status vars to be CAMEL_FILTER_STATUS_ etc. svn path=/trunk/; revision=7700
* Added an exception to CamelFilterGetFolderFunc.Not Zed2001-01-211-15/+26
| | | | | | | | | | | | | | | | | | | | | | 2001-01-21 Not Zed <NotZed@Ximian.com> * camel-filter-driver.h: Added an exception to CamelFilterGetFolderFunc. * camel-filter-driver.c (camel_filter_driver_filter_message): Remove source parameter, as it is determined elsewhere now. (camel_filter_driver_filter_folder): Same here. (camel_filter_driver_filter_mbox): And here. (do_move): If we cannot open a folder, quit, rather than ignoring it. (do_copy): Here too. (open_folder): Pass an exception into get_folder callback. (camel_filter_driver_filter_folder): Report that we're syncing, when we are. (camel_filter_driver_filter_mbox): And here too. (close_folder): And here. svn path=/trunk/; revision=7671
* Set the deleted bit *before* copying to the default folder, this way ifJeffrey Stedfast2001-01-201-4/+4
| | | | | | | | | | | 2001-01-19 Jeffrey Stedfast <fejj@ximian.com> * camel-filter-driver.c (camel_filter_driver_filter_message): Set the deleted bit *before* copying to the default folder, this way if they are importing mail and have a rule to delete it, it doesn't get copied to the default folder un-deleted. svn path=/trunk/; revision=7651
* Add a percentage complete indicator to the status thing.Not Zed2001-01-191-13/+20
| | | | | | | | | | | | 2001-01-19 Not Zed <NotZed@Ximian.com> * camel-filter-driver.c (report_status): Add a percentage complete indicator to the status thing. (camel_filter_driver_filter_mbox): Add percentage complete to reporting. (camel_filter_driver_filter_folder): Same. svn path=/trunk/; revision=7635
* Index: ChangeLogMichael Zucci2001-01-171-0/+774
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