aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-folder.c
Commit message (Collapse)AuthorAgeFilesLines
* watch for setting JUNK flag, if JUNK_LEARN is not set as well then resetRadek Doulik2004-03-131-72/+160
| | | | | | | | | | | | | | | | | | | | | | | | | 2004-03-11 Radek Doulik <rodo@ximian.com> * camel-folder.c (camel_folder_set_message_flags): watch for setting JUNK flag, if JUNK_LEARN is not set as well then reset JUNK_LEARN bit (folder_changed): look for junk changes in uid_changed's messages, if these changes request junk filter learning (CAMEL_MESSAGE_JUNK_LEARN bit set) then prepare junk and nonjunk uid arrays, clear CAMEL_MESSAGE_JUNK_LEARN bit so that we don't process it again (folder_changed): start filter thread if there's junk and/or nonjunk arrays (filter_filter): if junk/nonjunk arrays are non-NULL, call junk filter report to learn junk/non-junk messages (filter_free): free junk/nonjunk uids and arrays * camel-folder-summary.h: added CAMEL_MESSAGE_JUNK_LEARN to CamelMessageFlags, used when setting CAMEL_MESSAGE_JUNK flag to say that we request junk plugin to learn that message as junk/non-junk svn path=/trunk/; revision=25045
* fun dun diddley un fun. Since we're writing a const buffer, we need toNot Zed2004-03-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2004-03-03 Not Zed <NotZed@Ximian.com> * camel-stream-filter.c (do_write, do_write): fun dun diddley un fun. Since we're writing a const buffer, we need to copy it first. See #54937. 2004-02-27 Not Zed <NotZed@Ximian.com> ** See bug #54755. * camel-vtrash-folder.c (vtrash_append_message) (vtrash_transfer_messages_to): error/fail out if the user tries to copy messages to the trash. (vtrash_transfer_messages_to): use the destination bit not the source bit for moving messages to a vtrash folder. * camel-gpg-context.c (gpg_ctx_parse_status): ignore NODATA response, otherwise we abort in a meaningless way. See #52939. * providers/imap/camel-imap-utils.c: use g_ascii_str[n]casecmp everywhere. * providers/imap/camel-imap-utils.c (imap_body_decode): fix the sense of the nil check for the subtype of a mutlipart. See #53355. 2004-02-26 Not Zed <NotZed@Ximian.com> * camel-session.c (camel_session_check_junk_for_imap) (camel_session_set_check_junk_for_imap): removed. * providers/imap/camel-imap-provider.c: Add filter_junk and filter_junk_inbox options to the receive option page. * providers/imap/camel-imap-store.c (imap_setv, imap_getv): handle FILTER_JUNK and FILTER_JUNK_INBOX parameters. (imap_setv): conver to switch rather than if statement. (construct): handle url args for filter_junk and filter_junk_inbox. * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Set the folder's flags based on the stores junk settings. (imap_update_summary): remove the test for session_check_junk_for_imap, its handled per-store now. * camel-folder.c (folder_changed): only check for FILTER_RECENT or FILTER_JUNK to see if we need to do filtering. * camel-folder.h (CAMEL_FOLDER_FILTER_JUNK): renamed from CAMEL_FOLDER_SUPRESS_JUNK_TEST (and obviously inverted logic). svn path=/trunk/; revision=24942
* do not avoid junk mails in unread count52004-02-261-1/+1
| | | | | | | | | 2004-02-25 <rodo@ximian.com> * camel-folder.c (get_unread_message_count): do not avoid junk mails in unread count svn path=/trunk/; revision=24868
* ** See bug #51319.Not Zed2004-02-091-2/+0
| | | | | | | | | | | | 2004-02-09 Not Zed <NotZed@Ximian.com> ** See bug #51319. * providers/local/camel-local-folder.c (camel_local_folder_construct): re-enable indexing when folder is first opened. Also load defaults if no meta-data present. svn path=/trunk/; revision=24677
* changed to return a boolean to indicate if the flags were actually changedNot Zed2004-02-061-20/+20
| | | | | | | | | | 2004-02-06 Not Zed <NotZed@Ximian.com> * camel-folder.c (camel_folder_set_message_flags): changed to return a boolean to indicate if the flags were actually changed or not. Fixed all implementors. svn path=/trunk/; revision=24643
* Use macro casts from int to pointer.Jeffrey Stedfast2004-02-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | 2004-02-03 Jeffrey Stedfast <fejj@ximian.com> * camel-vee-folder.c (vee_folder_build_folder): Use macro casts from int to pointer. * camel-folder.c (camel_folder_change_info_add_source): Same as below. (camel_folder_change_info_add_source_list): Same. * camel-folder-search.c (camel_folder_search_execute_expression): Use GINT_TO_POINTER() to cast 1 to a pointer for g_hash_table_insert(). * camel-vee-folder.c (vee_folder_remove_folder): 64bit fixes. (folder_added_uid): Same. (vee_folder_build_folder): Here too. (folder_changed_add_uid): And here. (folder_changed_remove_uid): Same. svn path=/trunk/; revision=24597
* set CAMEL_FOLDER_SUPRESS_JUNK_TEST flag (imap_update_summary): updateRadek Doulik2004-01-271-1/+1
| | | | | | | | | | | | | | | 2004-01-27 Radek Doulik <rodo@ximian.com> * providers/imap/camel-imap-folder.c (camel_imap_folder_new): set CAMEL_FOLDER_SUPRESS_JUNK_TEST flag (imap_update_summary): update CAMEL_FOLDER_SUPRESS_JUNK_TEST flag * camel-folder.c (folder_changed): use CAMEL_FOLDER_SUPRESS_JUNK_TEST flag instead of check_junk_for_imap * camel-folder.h (CAMEL_FOLDER_SUPRESS_JUNK_TEST): added new flag svn path=/trunk/; revision=24463
* use check_junk_for_imap flagRadek Doulik2004-01-241-1/+1
| | | | | | | | | | 2004-01-23 Radek Doulik <rodo@ximian.com> * camel-folder.c (folder_changed): use check_junk_for_imap flag * camel-session.c: add check_junk_for_imap flag svn path=/trunk/; revision=24381
* check recent messages for junk mailRadek Doulik2003-12-041-2/+4
| | | | | | | | | | | | | | | | 2003-12-04 Radek Doulik <rodo@ximian.com> * camel-folder.c (folder_changed): check recent messages for junk mail * camel-session.c (camel_session_check_junk): new wrapper method for check_junk flag (camel_session_set_check_junk): ditto * camel-session.h (struct _CamelSession): added check_junk flag (if to check incoming mail for junk messages) svn path=/trunk/; revision=23629
* Same.Jeffrey Stedfast2003-12-011-1/+1
| | | | | | | | | | | | | | | | | | | 2003-12-01 Jeffrey Stedfast <fejj@ximian.com> * camel-stream-process.c (do_exec_command): Same. * camel-process.c (camel_process_fork): Same. * camel-filter-search.c (run_command): Same as below. * camel-filter-driver.c (pipe_to_system): Same as below. * camel-gpg-context.c (gpg_ctx_op_start): Use fcntl() to set FD_CLOEXEC on each fd rather than close()ing it. Apparently Linux's older pthread implementations use sockets and so this fouls threading up. GO LINUX! GO! svn path=/trunk/; revision=23527
* merged spam filtering branchRadek Doulik2003-11-131-1/+1
| | | | svn path=/trunk/; revision=23302
* Removed unneeded CAMEL_OBJECT() casts.Jeffrey Stedfast2003-10-241-7/+7
| | | | | | | | 2003-10-23 Jeffrey Stedfast <fejj@ximian.com> * *.c: Removed unneeded CAMEL_OBJECT() casts. svn path=/trunk/; revision=23052
* If the CREATE flag is set and the parent .sbd directory does not exist,Jeffrey Stedfast2003-09-241-2/+2
| | | | | | | | | | 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
* Added "offline_sync" option, which lets you synchronise all mail to localNot Zed2003-09-231-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* implement PERSISTENT_PROPERTIES, for index mode.Not Zed2003-08-281-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Get rid of the #ifdef ENABLE_THREADS since we no longer plan toJeffrey Stedfast2003-07-101-15/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Updated for string-utils namespace changes.Jeffrey Stedfast2003-07-081-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* remove unused var.Not Zed2003-03-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Don't add bogus uids to the uid array. Might fix bug #38868 (it's the onlyJeffrey Stedfast2003-03-141-7/+7
| | | | | | | | | | | 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
* Do the filtering ourselves. This is so a problem like a missing uid (whichNot Zed2002-10-181-3/+41
| | | | | | | | | | | | 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
* Dont get the filter driver inside the change_lock. Its not necessary, andNot Zed2002-10-041-5/+9
| | | | | | | | | | | 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
* /home/notzed/gnome/head/evolution/camelNot Zed2002-10-031-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* If the original message is deleted, reset the deleted flag when we'reJeffrey Stedfast2002-09-241-3/+5
| | | | | | | | | 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
* Update the comment.Jeffrey Stedfast2002-07-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* Include <sys/time.h> for struct timeval.Not Zed2002-06-261-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* setup/free the mech string.Not Zed2002-06-031-8/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Add a "char **appended_uid" argument, for the caller to optionally pass inDan Winship2002-05-141-14/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-98/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* Check for LOGIN xxxx as well if debug is on, so we dont print passwords toNot Zed2002-05-071-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Flush the only-once actions.Jeffrey Stedfast2002-01-081-2/+3
| | | | | | | | | | | | | | | | | | | 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
* Turn off w() -> warnings.92001-10-291-1/+1
| | | | | | | | | | | | | | | | | | | 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
* Fixing the license text.Ettore Perazzoli2001-10-281-1/+0
| | | | svn path=/trunk/; revision=14212
* Finished implementation.72001-10-271-19/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Update the licensing information to require version 2 of the GPLEttore Perazzoli2001-10-271-2/+2
| | | | | | (instead of version 2 or any later version). svn path=/trunk/; revision=14190
* If no exception supplied, use a local one. (move_message_to): Set the seen02001-10-201-5/+9
| | | | | | | | | | 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
* Implement.92001-10-101-6/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* replace the ever-growing list of gbooleans with a single guint32 forDan Winship2001-10-091-13/+12
| | | | | | | | | | | | | | | | | | | | | | * 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
* Turn off warnings. (get_name): Same.Jeffrey Stedfast2001-10-061-20/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Call camel_folder_delete() on the folder if it's "alive".Jeffrey Stedfast2001-10-041-8/+48
| | | | | | | | | | | | | | | | 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
* Only unref info if we got it.52001-09-261-4/+5
| | | | | | | | | 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
* Set the exception to FOLDER_INVALID rather than making out it worked. A42001-09-251-0/+8
| | | | | | | | | | 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
* General cleanup of camel debug printfs.92001-09-191-2/+2
| | | | | | | | | | | | | | | | | 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
* If filter inbox is set on the store, and we're opening inbox '', then82001-09-191-25/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Reverted previous changes.Jeffrey Stedfast2001-09-181-31/+0
| | | | | | | | 2001-09-17 Jeffrey Stedfast <fejj@ximian.com> * camel-folder.c: Reverted previous changes. svn path=/trunk/; revision=12907
* New function to get the URI of a folder. (get_uri): DefaultJeffrey Stedfast2001-09-171-0/+31
| | | | | | | | | | 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
* Progress reporting while moving messages.02001-09-111-3/+10
| | | | | | | | | | | | | | | 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
* Slightly re-arranged filter/change notification logic. If we;re filtering,Not Zed2001-08-011-21/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Change the break into a continue, we should process as many as we canNot Zed2001-07-251-4/+4
| | | | | | | | | | | | | | | | 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
* if source == dest, just no-op.Jeffrey Stedfast2001-07-061-1/+6
| | | | | | | | | 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
* If the folder is frozen, don't refresh, just record that we need to do itDan Winship2001-06-291-0/+22
| | | | | | | | | | | | | | | | | | | * 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
* Update the copyrights, replacing Helix Code with Ximian andEttore Perazzoli2001-06-231-1/+1
| | | | | | helixcode.com with ximian.com all over the place. svn path=/trunk/; revision=10440
* Note: Except for the info_free(), the NULL checks are g_return's. I feltJeffrey Stedfast2001-06-191-22/+64
| | | | | | | | | | | | | | | | | | | | | | | 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
* New class that can be used to browse a multipart/digest message as if itJeffrey Stedfast2001-04-241-1/+2
| | | | | | | | | 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
* Big header cleanups and nntp compile fixKjartan Maraas2001-03-301-2/+5
| | | | svn path=/trunk/; revision=9024
* Use camel_vtrash_folder_new() to create the vtrash folder now.Jeffrey Stedfast2001-03-271-86/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Implemented. (ref_message_info): And default implementation.Not Zed2001-03-171-1/+27
| | | | | | | | | | | | | | | | | | | 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
* Don't allow the user to copy a message to or from the vtrash folder. SetJeffrey Stedfast2001-03-141-31/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Doh, cut and paste problem, use mlist not cc.Michael Zucci2001-02-231-9/+22
| | | | | | | | | | | * 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
* Removed, not used. (camel_vee_folder_new): Removed call to build_folder.Not Zed2001-02-221-61/+125
| | | | | | | | | | | | | | | | | | | | | | 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
* Added flags argument. (message_changed): Add support for the auto-updateNot Zed2001-02-201-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Removed unwanted header. It was never put in for a reason. Stop fixingNot Zed2001-02-061-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* Index: ChangeLogMichael Zucci2001-01-171-12/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix a locking problem. (One branch of an if statement was returning withDan Winship2001-01-121-6/+1
| | | | | | | | | * camel-folder.c (camel_folder_copy_message_to): Fix a locking problem. (One branch of an if statement was returning with the lock still locked.) Also remove the deprecation comments, to match move_message_to. svn path=/trunk/; revision=7409
* If we have a lot of messages changed, promote it to a folder changedNot Zed2001-01-041-1/+1
| | | | | | | | | 2001-01-04 Not Zed <NotZed@HelixCode.com> * camel-folder.c (thaw): If we have a lot of messages changed, promote it to a folder changed event. svn path=/trunk/; revision=7245
* REmove warning, this isn't really deprecated, sigh.Not Zed2001-01-031-2/+0
| | | | | | | | | | | 2000-12-29 Not Zed <NotZed@HelixCode.com> * camel-folder.c (camel_folder_move_message_to): REmove warning, this isn't really deprecated, sigh. * camel-mime-utils.c (header_fold): Comment out some debug. svn path=/trunk/; revision=7222
* Lock the command channel while searching. (imap_body_contains): IfNot Zed2000-12-241-127/+361
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-12-24 Not Zed <NotZed@HelixCode.com> * providers/imap/camel-imap-search.c (imap_body_contains): Lock the command channel while searching. (imap_body_contains): If performing a whole uid search, then add references to our own summary items, dont look it up in the folder. This way they can't vanish unexpectedly. * providers/imap/camel-imap-folder.h (CamelImapFolder): Added a private field. * providers/imap/camel-imap-private.h: Added lock for imap searches. * Merge from camel-mt-branch. * providers/imap/camel-imap-folder.c (imap_update_summary): Merge fix, use the folder->summary. (imap_get_message_flags, imap_set_message_flags, imap_get_message_user_flag, imap_set_message_user_flag): Removed again. (camel_imap_folder_init): Setup private data/lock. (imap_finalize): Free private data/search lock. (imap_search_free): Lock the search_lock. (imap_search_by_expression): Lock the search lock when using the search object. Also copy/ref hte summary, rather than getting it directly. (imap_refresh_info): Free any info lookups. Use folder->summary not imap_folder->summary. And lock around commands. svn path=/trunk/; revision=7150
* Remove assertion that content is there, when it no longer can be.Not Zed2000-11-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-30 Not Zed <NotZed@HelixCode.com> * providers/local/camel-mbox-folder.c (mbox_get_message): Remove assertion that content is there, when it no longer can be. * camel-folder-summary.h: Removed pos/bodypos/endpos from camelmeessagecontentinfo. (CamelMessageFlags): Added an attachments flag. * providers/local/camel-local-summary.h: Added load virtual function. * tests/lib/folders.c (test_message_info): Accessors. (test_folder_message): " * camel-folder-thread.c (get_root_subject): Fix accessors. (dump_tree_rec): " * camel-folder-search.c (camel_folder_search_execute_expression): Accessors for messageinfo. (search_match_all): " (search_header_contains): " (search_header_contains): " (search_body_contains): " (camel_folder_search_execute_expression): Use mepool_strdup. * providers/local/camel-mbox-summary.c (summary_update): Accessors for messageinfo. (mbox_summary_sync_full): " * providers/local/camel-mh-summary.c (remove_summary): Accessors for messageinfo. (mh_summary_check): " (mh_summary_sync_message): " (mh_summary_sync): " * providers/local/camel-mh-folder.c (mh_append_message): Use accessor for uid. * providers/local/camel-local-summary.c (local_summary_decode_x_evolution): Use accessor to uid. (local_summary_encode_x_evolution): Likewise. (message_info_new): And here. (camel_local_summary_load): Call virtual load function. (local_summary_load): Default load function, load summary. (camel_local_summary_load): Check file exists before trying to load. (camel_local_summary_construct): Turn off building content info! (CAMEL_LOCAL_SUMMARY_VERSION): Bump, since we dont build content info anymore. (camel_local_summary_load): After a successful load/check, do a save too so we dont have to go through it again randomly. * providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Use accessors for messageinfo. * providers/nntp/camel-nntp-folder.c (nntp_folder_get_uids): Use accessors for uid. * providers/imap/camel-imap-folder.c (imap_refresh_info): Use accessor for uid. (imap_sync): Likewise. (imap_get_uids): Likewise. (imap_update_summary): And here. * providers/vee/camel-vee-folder.c (vfolder_remove_match): Use accessor for uid. (vfolder_add_match): Handle estrv stuff. (vfolder_change_match): Accessor for uid. (get_real_message): " (vee_get_uids): " (vee_folder_build): " + estrv. (vee_folder_build_folder): " * providers/local/camel-maildir-folder.c (maildir_append_message): Use acccessors for uid's. (maildir_get_message): Here too. * providers/local/camel-maildir-summary.c (camel_maildir_summary_init): Setup the string count for us. (message_info_new): Access the string array directly. (message_info_free): No need to free string if using array. (camel_maildir_summary_info_to_name): Use accessor to get to uid. (remove_summary): And here. (maildir_summary_check): Likewise. (maildir_summary_sync): And here. (maildir_summary_load): Load up a cache of uid->filename mappings before loading the actual summary file. This saves us having to waste the diskspace storing the filenames in the summary itself, and also helps us sync the summary better on load. (message_info_load): If we have the load_map setup, and the uid exists, then set the filename cache from it, and update the flags from the name, incase our summary mismatches it. * camel-folder-summary.c (camel_folder_summary_init): Setup string count for compressed info record. An optional compile mode which stores all strings for a given messageinfo into a packed array, which should save 36-50 bytes/record. (camel_folder_summary_info_new): Init the string array. (message_info_new): Set the string array items, as required. (message_info_load): And here too. (message_info_save): Use accessors to get to strings. (message_info_free): Free strings as one. (camel_message_info_dup_to): Handle packed array case. (camel_folder_summary_add): Use accessors. And pack the strv before storing it. (summary_assign_uid): New function to assign a unique uid to a message, if it doesn't have one. (camel_folder_summary_add): Call assign_uid instead of doing it ourselves. (camel_folder_summary_info_new_from_parser): " (camel_folder_summary_info_new_from_message): " (camel_folder_summary_encode_string): constify. (camel_folder_summary_encode_token): " (summary_build_content_info_message): Fix accessors to messageinfo. (CAMEL_FOLDER_SUMMARY_VERSION): Bumped, for removal of contentinfo->pos data. (camel_folder_summary_info_new_from_parser): Calculate the size based on the parser position, not the removed contentinfo stuff. (camel_folder_summary_info_new_from_message): Remove size stuff. (camel_folder_summary_offset_content): Removed, no longer means anything. (content_info_new): (content_info_load): (content_info_save): (summary_build_content_info): Remove stuff for contentinfo->pos*. (summary_build_content_info): Take a msginfo argument, set attachments flag if we find any attachments. (summary_build_content_info_message): set attachments flag if we find any attachments. (camel_folder_summary_info_new_from_parser): Always scan the content info, even if we dont save it. (camel_folder_summary_info_new_from_message): And here too. (summary_build_content_info): Only create the contentinfo stuff if we have it turned on, otherwise just parse and discard. (summary_build_content_info_message): Likewise. svn path=/trunk/; revision=6731
* Set the info size's properly, oops!Not Zed2000-11-281-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-28 Not Zed <NotZed@HelixCode.com> * providers/local/camel-maildir-summary.c (camel_maildir_summary_init): Set the info size's properly, oops! * tests/lib/folders.[ch]: Folder testing helpers. * tests/folder/test2.c: Test basic message ops on folders. * tests/folder/test1.c (main): Test basic folder ops on (local) stores. * providers/local/camel-local-provider.c (camel_provider_module_init): Removed some debug. * providers/local/camel-maildir-folder.c (camel_maildir_folder_class_init): fix parent class. * providers/local/camel-mh-folder.c (camel_mh_folder_class_init): Fix parent class (damn cut & paste). * providers/local/camel-maildir-store.c (get_folder): Call parent impl. (camel_maildir_store_class_init): Fix parent class setup. (delete_folder): Check the folder exists before trying to delete it. (delete_folder): Try and make the delete operation atomic/rollback failures. e.g. if one directory isn't empty, then create the other empty ones back. Also clear the tmp directory fully first. * providers/local/camel-mbox-store.c (get_folder): Call parent impl. (camel_mbox_store_class_init): parent class is camel_local_store, not camel_folder, oops. (delete_folder): Return an error if it doesn't exist, rather than covering it up. * providers/local/camel-mh-store.c (get_folder): Call parent impl. (camel_mh_store_class_init): fix parent class setup. (delete_folder): Error if it doesn't exist now. * camel-folder.c (camel_folder_move_message_to): (camel_folder_copy_message_to): Added warnings as these functions are going to be removed later. * camel-store.c (camel_store_get_root_folder): Fix for an early api change. We want CAMEL_STORE_FOLDER_CREATE, not TRUE, since its a flag. (camel_store_get_default_folder): And here too. * providers/local/camel-local-store.c (xrename): Handle renaming folders differently to renaming files. (get_default_folder_name): local stores dont have a default folder, so make it so. Or at least, it doesn't seem to make sense to have one. (get_root_folder_name): Same for root. (get_folder): Added parent implementation, that makes sure the service path exists, if we are creating a new folder (but doesn't create the folder). 2000-11-27 Not Zed <NotZed@HelixCode.com> * providers/local/camel-local-store.c (xrename): Fixed races. Use link/unlink, rather than rename, to properly detect overwriting another file. And allow some files to be missing. * providers/Makefile.am: Removed mh, mbox, added local, to the default. svn path=/trunk/; revision=6693
* Shite, -1 on error, >=0 on success. So i've just been truncating all theNot Zed2000-11-211-57/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-21 Not Zed <NotZed@HelixCode.com> * providers/local/camel-mh-summary.c (mh_summary_sync_message): Shite, -1 on error, >=0 on success. So i've just been truncating all the messages I touched, good one zed. (mh_summary_sync_message): Sigh, and write to the right damn fd as well. (mh_summary_sync_message): Argh, and we need to compare the length of the old xev -1 to the new xev, to check if we can optimise it. * camel-folder.c (camel_folder_change_info_new): Init the pool. (camel_folder_change_info_add_source): Allocate string in the pool. (camel_folder_change_info_add_source_list): (camel_folder_change_info_add_update): No longer free the key, as it cannot be yet. (change_info_add_uid): Add a new arg, copy, telling it whether to copy the uid argument or not, and copy using mempool_strdup. (change_info_cat): Tell add_uid to copy the string. (camel_folder_change_info_add_update): Call add_uid directly. (change_info_remove): Call add_uid directly, with no copy, and dont free the key. (change_info_free_update): No longer required since we dont malloc the keys. (camel_folder_change_info_add_uid): Fix for add_uid change. (camel_folder_change_info_remove_uid): (camel_folder_change_info_change_uid): (change_info_clear): No longer needed, just set the size to 0 on the array directly. (camel_folder_change_info_clear): Empty the arrays directly, and flush the mempool too, and also clear uid_source, incase anyone was silly enough to call us in the wrong order. (camel_folder_change_info_free): Dont bother clearing the array's contents, just free the pool and throw away all the indexes. * camel-folder.h: Added a mempool to CamelFolderChangeInfo to store the uid's we get. * camel-folder-search.c (search_match_all): If we are only matching a single info, just use that/do the search. (camel_folder_search_match_expression): New function. Matches a single message info against an expression. (camel_folder_search_init): Init a hash table used to map the returned gptrarrays' to mempools. (camel_folder_search_execute_expression): Store all of the string data in a mempool, slightly faster, less wasted space (usually),. (camel_folder_search_free_result): Check for the mempool that stores the data for the list, and free that if we have it, otherwise assume we need to use g_free() (which should only happen if the list is empty at the moment). : commented out the debugging prints. Got sick of 'executing header search' crap. * providers/vee/camel-vee-folder.c (camel_vee_folder_init): Init changes. (camel_vee_folder_finalise): Free changes. (vfolder_add_match): Simple helper to add a new matching info record. (camel_vee_folder_add_folder): Only trigger a changed event if we have changes. (vfolder_change_match): New function, changes our local vfolder info to match the source. (vfolder_add_match): Add a new info to the vfolder list. (vfolder_remove_match): Remove a no-longer matching info from the vfolder summary. (message_changed): check if the message still matches, and remove/etc as required. (camel_vee_folder_finalise, init): init/free search object. (vee_folder_build_folder): Build the changes to the folder into the changes data, as we go. (folder_changed): If the folder gave us an explicit list of changes, then process each one separately (unless there's a lot added/changed). * providers/vee/camel-vee-folder.h: Added a changes field to the folder. svn path=/trunk/; revision=6628
* Removed local again, not quite ready.Not Zed2000-11-151-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-11-15 Not Zed <NotZed@HelixCode.com> * providers/Makefile.am: Removed local again, not quite ready. 2000-11-14 Not Zed <NotZed@HelixCode.com> * camel-folder-summary.c (message_info_new_from_message): Use message_info_new to create the summary from headers, instead of getting directly from the message. (format_recipients): No longer required. * providers/Makefile.am (SUBDIRS): Added local. 2000-11-11 Not Zed <NotZed@HelixCode.com> * camel-mime-parser.c (folder_push_part): Make sure 'atleast' is at least 1, always. This is possibly a temporary fix for a bad failure mode on bad multipart messages. (folder_scan_content): Go until inend, not inend+1. Changed the continuation and retry logic to be simpler and more robust. If we can't find a marker within the atleast we need, just set it to 1, and try again, rather than just going to the next smaller limit (boundary check checks the length anyway). (header_append): streamline the empty line case. And strip trailing \r's if there are any (\n's already stripped). (folder_scan_header): Reordered and cleaned up a lot. Check for continuation only once, and compress lwsp then. Assume the header buffer already has end of line's stripped, and simplify some things: Only check for end of headers once and easier. Dont check to remove end of line character Dont bother testing inptr-start if we get a boundary match - it is always zero. (folder_scan_header): Removed the unused part variable, and a few pointless assignments. (folder_scan_header): Change the end limit to be 1 higher, to make sure we get all content. (folder_scan_content): And here too. (folder_scan_header): Killed a warning. (folder_push_part): Removed a bad comment. Actually boundarylenfinal can be zero for a new message not in a multipart. So we fix that here. 2000-11-09 Not Zed <NotZed@HelixCode.com> * camel-mime-utils.c (header_decode_param_list): Renamed from header_param_list_decode. (header_param_list_decode): New external function to decode a parameter list. (header_param_list_format_append): Made public. (header_param_list_format): Another new public helper function for formatting just a param list. * camel-folder-summary.c (next_uid_string): Default implementation is the same as before. (camel_folder_summary_class_init): And set it up. * camel-folder-summary.h: Make next_uid_string a virtual function. * camel-folder.c (camel_folder_change_info_changed): New function to return true if the changeset contains any changes. svn path=/trunk/; revision=6577
* Merged in camel-incremental-branch.Not Zed2000-11-021-50/+284
| | | | | | | | 2000-11-02 Not Zed <NotZed@HelixCode.com> * Merged in camel-incremental-branch. svn path=/trunk/; revision=6336
* Update comment here so refresh_info isn't just for reconnects any more.Dan Winship2000-10-201-5/+2
| | | | | | | | | | | | | | | | | | | | | | * camel-folder.c (camel_folder_refresh_info): Update comment here so refresh_info isn't just for reconnects any more. Make the default implementation a no-op rather than an error. * providers/nntp/camel-nntp-folder.c: Move refresh_info impl into camel_nntp_folder_new, since it would have leaked memory and not done anything useful if it was called later. * providers/mbox/camel-mbox-folder.c: Remove no-longer-necessary refresh_info impl. * providers/imap/camel-imap-folder.c (camel_imap_folder_changed): Update imap_folder->exists, but don't actually load the new messages. This is a temporary workaround to deal with the IMAP provider stealing the message list focus at annoying times. (imap_copy_message_to, imap_move_message_to): Emit a folder_changed by hand, for now. svn path=/trunk/; revision=6046
* Remove camel_folder_{get,free}_subfolder_info, as we want to be able toDan Winship2000-10-031-79/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-folder.[ch]: Remove camel_folder_{get,free}_subfolder_info, as we want to be able to scan the whole subfolder tree without having to open any folders, so this needs to be in CamelStore. Remove can_hold_folders and can_hold_messages flags; things that don't hold messages are no longer considered CamelFolders. * camel-folder-summary.[ch]: Remove CamelFolderInfo stuff. * camel-store.[ch]: Add camel_store_{get,free}_folder_info, as well as camel_store_free_folder_info_full and ..._nop for default implementations, and camel_folder_info_free and camel_folder_info_build as convenience functions. Turn CamelFolderInfo into a tree structure and also add an "url" member. * providers/*/camel-*-folder.c: Remove subfolder_info and can_hold stuff. * providers/*/camel-*-store.c: Add folder_info stuff. * providers/imap/camel-imap-folder.c (imap_summary_free): Free the summary elements with camel_message_info_free, not camel_folder_info_free. Oops. * providers/imap/camel-imap-utils.c: const poison svn path=/trunk/; revision=5663
* Removed (camel_folder_init, camel_folder_construct): New object initDan Winship2000-09-201-265/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-folder.c: (init): Removed (camel_folder_init, camel_folder_construct): New object init function and public object constructor to replace the old init method in a more Gtk-like fashion. (get_parent_folder, camel_folder_get_parent_folder): Removed. No CamelFolder subclass was ever setting the parent_folder member, no code has ever needed to look at it, and fixing it would actually be pretty hard. (get_subfolder_info, camel_folder_get_subfolder_info): Renamed from ..._names. Deals in CamelFolderInfo now. (free_subfolder_info, camel_folder_free_subfolder_info): Likewise. (get_subfolder, camel_folder_get_subfolder): Removed. CamelFolderInfo contains the subfolder's full name, so this is unnecessary now, and removing it lets us get rid of the CamelFolder separator member, which is needed for the default implementation of this function, but not otherwise needed for most providers. Also, lots of code style fixes. * providers/*: Update CamelFolder subclasses for changes, although none of them fill in the message counts in the CamelFolderInfo yet. svn path=/trunk/; revision=5503
* CamelRemoteStore: a new generic store for stores that connect to servers. ↵Peter Williams2000-08-301-0/+25
| | | | | | Prepare for the ability to cancel operations (much better exception handling). Clean up IMAP like nobody's business svn path=/trunk/; revision=5103
* Fix the camel-folder's thaw handler. Implement event forwarding into the ↵Peter Williams2000-08-121-1/+1
| | | | | | main thread. svn path=/trunk/; revision=4744
* Implement. (mh_get_message_user_tag): Implement.Not Zed2000-08-111-3/+55
| | | | | | | | | | | | | | | | | 2000-08-11 Not Zed <NotZed@HelixCode.com> * providers/mh/camel-mh-folder.c (mh_set_message_user_tag): Implement. (mh_get_message_user_tag): Implement. * providers/mbox/camel-mbox-folder.c (mbox_get_message_user_tag): (mbox_set_message_user_tag): Implement. * camel-folder.c (camel_folder_set_message_user_tag): Routine to set message tags. (camel_folder_get_message_user_tag): And accessor. svn path=/trunk/; revision=4729
* Yay so lets fix an already fixed fix, again. (copy_message_to): and hereNot Zed2000-08-111-18/+13
| | | | | | | | | | 2000-08-11 Not Zed <NotZed@HelixCode.com> * camel-folder.c (move_message_to): Yay so lets fix an already fixed fix, again. (copy_message_to): and here too ... update for api change to append(). And removed another warning. svn path=/trunk/; revision=4728
* Merge with camel-async.Peter Williams2000-08-111-251/+385
| | | | svn path=/trunk/; revision=4687
* A better way to compress leading whitespace. The code is probably invalidNot Zed2000-08-111-463/+301
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-08-11 Not Zed <NotZed@HelixCode.com> * camel-mime-parser.c (folder_scan_header): A better way to compress leading whitespace. The code is probably invalid anyway, I dont think it will work across buffer boundaries. * providers/mbox/camel-mbox-folder.c (mbox_append_message): And write out proper format From lines here too. * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_build_from): New function to build a more compatible mbox "From " line. (camel_mbox_summary_sync): Write From lines in the proper format. 2000-08-10 Not Zed <NotZed@HelixCode.com> * providers/mh/camel-mh-store.c (get_folder): Remove warnin g. * providers/mbox/camel-mbox-store.c (xrename): Kill some warnings with constification. * providers/imap/camel-imap-folder.c (imap_append_message): Fixed for append api change. Eek this routine seriously wastes memory. * providers/mh/camel-mh-folder.c (mh_search_free): Impelemnt. (mh_append_message): Fix for api change, and include user flags and tags in new message. * providers/vee/camel-vee-folder.c (vee_search_by_expression): Fix for search api change. * camel-folder.c (camel_folder_search_free): New function for freeing search results. (search_free): Changed my mind, implement a default that actually does something. Free as to the old interface. (camel_folder_append_message): Changed to accept a camelmessageinfo rather than flags, which just doesn't have enough info in it. (copy_message_to): Change for append_message api change. (move_message_to): Likewise. * providers/mbox/camel-mbox-folder.c (mbox_search_free): Implement. (mbox_append_message): Fix for api change, and also copy user flags/tags across to new summary. * camel-folder-search.c (search_user_tag): A search expression that returns the current use flag by name. (camel_folder_search_free_result): New function to free the result of a search. * camel-folder-summary.c: Bump summary version. (message_info_new): (message_info_load): (message_info_save): (camel_message_info_dup_to): (camel_message_info_free): Added support for arbitrary tag/value pairs (CamelTag's). (camel_tag_get): (camel_tag_set): (camel_tag_list_size): (camel_tag_list_free): Operations for working with CamelTags. svn path=/trunk/; revision=4683
* Fix this to not require NULL-termination of the array.Dan Winship2000-08-071-2/+5
| | | | | | | * camel-folder.c (camel_folder_free_deep): Fix this to not require NULL-termination of the array. svn path=/trunk/; revision=4560
* Remove exceptions from a number of methods that work on what ought to beDan Winship2000-07-251-106/+49
| | | | | | | | | | | | | | | * camel-folder.c: Remove exceptions from a number of methods that work on what ought to be static data: get_parent_folder, get_parent_store, get_message_count, get_unread_message_count, get_permanent_flags, get_message_flags, set_message_flags, get_message_user_flag, set_message_user_flag, get_uids, get_summary, get_subfolder_names. Turn camel_folder_delete_message into a macro. (Mostly a pull-up from the camel-async branch.) * providers/{imap,mbox,nntp,pop3,vee}: Update for CamelFolder changes svn path=/trunk/; revision=4303
* Remove camel_folder_get_message_uid, which was not used, and notDan Winship2000-07-241-37/+0
| | | | | | | | | | * camel-folder.[ch]: Remove camel_folder_get_message_uid, which was not used, and not implemented by any provider. * providers/nntp/camel-nntp-folder.c: Remove get_message_uid non-implementation. svn path=/trunk/; revision=4292
* Useful default implementations for free_{uids,subfolder_names,summary}.Dan Winship2000-07-131-9/+62
| | | | | | | | | | | | | * camel-folder.c (camel_folder_free_deep, camel_folder_free_shallow, camel_folder_free_nop): Useful default implementations for free_{uids,subfolder_names,summary}. (free_subfolder_names, free_uids): Make these g_warning-ing default implementations. * providers/*/camel-*-folder.c: Use the new functions where appropriate, remove duplicated code. svn path=/trunk/; revision=4120
* Use mbox_set_message_flags () instead of setting the flags by hand. ThisJeffrey Stedfast2000-07-131-17/+2
| | | | | | | | | | | | | | | | | | | 2000-07-12 Jeffrey Stedfast <fejj@helixcode.com> * providers/mbox/camel-mbox-folder.c (mbox_delete_message): Use mbox_set_message_flags () instead of setting the flags by hand. This fixes the problem of the "message_changed" signal not being emitted at the correct time. * providers/imap/camel-imap-folder.c: "folder_changed" signals should pass a third argument (which is ignored). * camel-folder.c: Undo gtk signal emits done in set_flags and expunge. (move_message_to): (copy_message_to): Create info as a const CamelMessageInfo svn path=/trunk/; revision=4118
* Fix bug #378: last displayed message is still shown in an empty folderPeter Williams2000-07-131-1/+6
| | | | svn path=/trunk/; revision=4110
* Fix bug #394: Refiling messages does not update the viewPeter Williams2000-07-121-0/+10
| | | | svn path=/trunk/; revision=4109
* Now takes a flags argument to specify the flags to be set on the messageJeffrey Stedfast2000-07-121-5/+10
| | | | | | | | | | | | | | | | | 2000-07-11 Jeffrey Stedfast <fejj@helixcode.com> * camel-folder.c (camel_folder_append_message): Now takes a flags argument to specify the flags to be set on the message since we might not necessarily want the flags to be wiped clean. (move_message_to): (copy_message_to): Updated to send a flags argument to append_message (); currently sends the original message's flags. * providers/mbox/camel-mbox-folder.c (mbox_append_message): * providers/imap/camel-imap-folder.c (imap_append_message): Updated. svn path=/trunk/; revision=4099
* Implemented.Jeffrey Stedfast2000-07-101-0/+25
| | | | | | | | | | | | | | | | 2000-07-10 Jeffrey Stedfast <fejj@helixcode.com> * providers/mbox/camel-mbox-folder.c (mbox_get_unread_message_count): * providers/vee/camel-vee-folder.c (vee_get_unread_message_count): * providers/imap/camel-imap-folder.c (imap_get_unread_message_count): Implemented. * camel-folder.c (camel_folder_get_unread_message_count): New convenience function to allow the mailer to query the number of unread messages in a folder (for displaying message stats in a folder tree?). svn path=/trunk/; revision=4028
* Make this return a GPtrArray rather than a GList.Dan Winship2000-07-081-4/+5
| | | | | | | | | | | | | * camel-folder.c (camel_folder_search_by_expression): Make this return a GPtrArray rather than a GList. * camel-folder-search.c (camel_folder_search_execute_expression): * providers/imap/camel-imap-folder.c (imap_search_by_expression): * providers/mbox/camel-mbox-folder.c (mbox_search_by_expression): * providers/nntp/camel-nntp-folder.c (nntp_search_by_expression): Update to return a GPtrArray rather than a GList. svn path=/trunk/; revision=3958
* New functions to freeze and thaw a folder (to prevent message/folderDan Winship2000-07-031-2/+141
| | | | | | | | | | | | | | | | * camel-folder.c (camel_folder_freeze, camel_folder_thaw): New functions to freeze and thaw a folder (to prevent message/folder changed signals in the middle of a long series of operations). (camel_folder_class_init): Change signals to GTK_RUN_FIRST. (message_changed, folder_changed): Add default implementations that stop the emission and record info for later if the folder is frozen. * providers/mbox/camel-mbox-folder.c (mbox_sync): leftover fixes from the close->sync change: don't destroy the ibex, summary, and search when syncing. svn path=/trunk/; revision=3863
* Renamed _by_uid methods. Since we no longer have get-by-number methods, noJeffrey Stedfast2000-07-011-29/+29
| | | | | | | | | | | | | | | | | | | 2000-07-01 Jeffrey Stedfast <fejj@helixcode.com> * camel-folder.c: Renamed _by_uid methods. Since we no longer have get-by-number methods, no need to have the _by_uid extensions. (get_message_by_uid): Renamed to get_message (delete_message_by_uid): Renamed to delete_message (summary_get_by_uid): Renamed to get_message_info * providers/mbox/camel-mbox-folder.c: * providers/pop3/camel-pop3-folder.c: * providers/imap/camel-imap-folder.c: * providers/vee/camel-vee-folder.c: Updated to reflect camel-folder changes. svn path=/trunk/; revision=3843
* New function, to copy a message from one folder to another. The defaultJeffrey Stedfast2000-07-011-0/+50
| | | | | | | | | | | | | | | | | | | | | | 2000-06-30 Jeffrey Stedfast <fejj@helixcode.com> * camel-folder.c (camel_folder_copy_message_to): New function, to copy a message from one folder to another. The default implementation just uses append_message, but providers can implement more efficient versions for use when both folders are on the same store. * broken-date-parser.[c,h]: Utilities for parsing broken date strings. * providers/imap/camel-imap-folder.c (imap_move_message_to): (imap_copy_message_to): Implemented. * camel-mime-utils.c (header_decode_date): Wrote some code to try and un-mangle broken date formats and then parse that new string instead. svn path=/trunk/; revision=3841
* New function, to move a message from one folder to another. The defaultDan Winship2000-07-011-0/+52
| | | | | | | | | | * camel-folder.c (camel_folder_move_message_to): New function, to move a message from one folder to another. The default implementation just uses append_message and delete_message, but providers can implement more efficient versions for use when both folders are on the same store. svn path=/trunk/; revision=3832
* Move flag handling from CamelMimeMessage to CamelFolder. ThisDan Winship2000-06-171-0/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | simplifies several flag-handling pieces of code in the mailer, and lets you change a message's flags without having to fetch the message body. It also means that fully-constructed CamelMimeMessages are now essentially constant, which will help simplify locking issues later since it means two threads interested in the same message can just work with separate copies of it. * camel-mime-message.h (struct _CamelMimeMessage): Removed flags and user_flags (moved to summary). Removed expunged and message_number which were unused. Removed message_uid and folder which are no longer needed in the new scheme. (struct CamelMimeMessageClass): Removed message_changed signal and get/set_message_number methods. * camel-mime-message.c: Updates for CamelMimeMessage changes. (camel_mime_message_get/set_flags, camel_mime_message_get/set_user_flag): Replaced with methods in CamelFolder. (camel_flag_get, camel_flag_set, camel_flag_list_size, camel_flag_list_free): Moved verbatim to camel-folder-summary.c * camel-folder.c (camel_folder_get/set_message_flags, camel_folder_get/set_message_user_flag): New methods (and corresponding useless default implementations) (camel_folder_class_init): add a message_changed signal * camel-folder-summary.c (camel_flag_get, camel_flag_set, camel_flag_list_size, camel_flag_list_free): Moved here from camel-mime-message.c * providers/mbox/camel-mbox-folder.c (message_changed): Removed. (mbox_get_message_flags, mbox_set_message_flags, mbox_get_message_user_flag, mbox_set_message_user_flag): Tweak summary bits as appropriate. (Functionality moved here from message_changed.) (mbox_get_message_by_uid): Update for CamelMimeMessage changes (less stuff to initialize). * providers/imap/camel-imap-folder.c (message_changed): Remove this. It was just copied from the mbox provider and doesn't deal with the real IMAP flag stuff anyway. (So there's currently no flag support in the IMAP provider.) (imap_get_message_by_uid): Update for CamelMimeMessage changes. * providers/vee/camel-vee-folder.c: (message_changed): Remove old one. Add a new one to listen for message_changed on each folder and re-emit message_changed signals that correspond to messages in the vfolder. (vee_get/set_message_flags, vee_get/set_message_user_flag): Proxy flag setting to the underlying real messages. (vee_append_message): Removed for now; there's no way to translate this into the new CamelMimeMessage/CamelFolder scheme, but (a) there's also no code which would ever call it and (b) we're probably going want a better interface than append_message for message drag and drop to work anyway. To be revisited. svn path=/trunk/; revision=3598
* document camel_folder_search_by_expressionDan Winship2000-06-161-3/+14
| | | | svn path=/trunk/; revision=3587
* Kill. Folders are now always open, and handle "closing" sorts ofDan Winship2000-06-161-111/+11
| | | | | | | | | | | | | | | | | | * camel-folder.c: (camel_folder_open, camel_folder_is_open, camel_folder_get_mode): Kill. Folders are now always open, and handle "closing" sorts of operations at sync or finalize time. (camel_folder_sync): renamed from camel_folder_close. Syncs state to the store but doesn't necessarily close/disconnect. * providers/*/camel-*-folder.c: Merge "open" methods into "init" methods. Rename close to sync and update appropriately. * providers/imap/camel-imap-store.c: Remove camel_imap_store_open and camel_imap_store_close, which should not have been copied from the POP provider (where the exist to work around limitations of the POP protocol). svn path=/trunk/; revision=3581
* Updated: a separator is now a char* rather than a single char because IMAPJeffrey Stedfast2000-06-141-9/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | 2000-06-14 Jeffrey Stedfast <fejj@helixcode.com> * camel-folder.c (init): Updated: a separator is now a char* rather than a single char because IMAP can have a string for a directory separator. Also, since IMAP does not begin with a directory separator, there is a new argument (path_begins_with_sep) which decides if a directory should begin with a directory separator. * providers/imap/camel-imap-store.c (imap_create): Since, on connect, Camel tries to create INBOX (which already exists on every IMAP provider) we can return TRUE when the folder name is "INBOX". * providers/vee/camel-vee-folder.c (vee_init): Updated. * providers/imap/camel-imap-folder.c (camel_imap_folder_new): Updated. * providers/mbox/camel-mbox-store.c (get_folder): Updated. * providers/mbox/camel-mbox-folder.c (mbox_init): Updated. * providers/pop3/camel-pop3-folder.c (camel_pop3_folder_new): Updated. svn path=/trunk/; revision=3559
* Remove exists, create, delete. A CamelFolder now always references anDan Winship2000-06-071-225/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-folder.c: Remove exists, create, delete. A CamelFolder now always references an existing folder. Remove delete_messages too since it wasn't being used. Add a "create" flag to get_subfolder saying whether or not to create the subfolder if it doesn't yet exist. * camel-store.c (camel_store_get_folder): Add a "create" flag to say whether or not to create the folder if it doesn't yet exist. (camel_store_delete_folder): New method, moved from CamelFolder. (cache_folder, uncache_folder): Fix up a bit. (get_folder_name): Explain what this is for. * providers/mbox/camel-mbox-folder.c: * providers/mbox/camel-mbox-store.c: Update. Remove support for hierarchical folders to simplify this for now, since we're not using it, and it's not completely clear how they should work in an ELocalStorage world. Needs to be revisited. * providers/pop3/camel-pop3-folder.c (delete_messages): Remove. * providers/pop3/camel-pop3-store.c (get_folder): Update. * providers/vee/camel-vee-folder.c (exists): Remove. * providers/vee/camel-vee-store.c (vee_get_folder): Update. svn path=/trunk/; revision=3453
* Implemented a few more imap functions in providers/imap/camel-imap-folder.cJeffrey Stedfast2000-05-311-2/+2
| | | | svn path=/trunk/; revision=3286
* > searchpart = strchr(namepart, '?');NotZed2000-05-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-05-19 NotZed <NotZed@HelixCode.com> * camel-simple-data-wrapper.c (construct_from_stream): If we already have been constructed, unref our content. (write_to_stream): Check we've been constructued, and change for stream api changes. * camel-mime-parser.c: Removed exception stuff. * md5-utils.c (md5_get_digest_from_stream): repaired. * camel-mime-message.c: Remove exception from write_to_stream, and fix, and fix formatting. * providers/sendmail/camel-sendmail-transport.c (_send_internal): Fix for stream changes. * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fixes for stream changes. * providers/mbox/camel-mbox-folder.c, and elsewhere, fix all stream api changes. (mbox_append_message): Use stream_close() now its back. (mbox_append_message): unref the from filter. * camel-stream-mem.c: And here. * camel-stream-fs.[ch]: Here too. * camel-stream-filter.c: Likewise. This is getting tedious. * camel-stream-buffer.c (stream_write): Fix a few little problems. (stream_close): Reimplmeent. (camel_stream_buffer_read_line): Slightly more efficient version, that also only allocates the right amount of memory for strings. * camel-seekable-substream.c: Likewise. * camel-seekable-stream.[ch]: Remove exceptions, fix formatting, changes for stream (re)fixes. set_bounds returns an error. * camel-stream.[ch]: Remove exceptions. Make flush and reset return an error code, repair all the screwed up formatting, and put back close. * camel-mime-part-utils.c (camel_mime_part_construct_content_from_parser): And here. * camel-mime-part.c (camel_mime_part_set_content): And this too. (write_to_stream): Fixed for stream changes. * camel.h: Fixed. * providers/vee/camel-vee-folder.c (vee_search_by_expression): Implement. Performs an intersection of the two searches. (camel_vee_folder_finalise): Unref search folders. (vee_append_message): Implement append. svn path=/trunk/; revision=3142
* remove message_number_capability and require uid capatibility.Dan Winship2000-05-191-227/+151
| | | | | | | | | | | | | | | | | | | | | | | * camel-folder.c: remove message_number_capability and require uid capatibility. (camel_folder_list_subfolders, camel_folder_get_uid_list, camel_folder_get_subfolder_info, camel_folder_get_message_info): removed (camel_folder_get_subfolder_names, camel_folder_free_subfolder_names): new subfolder interfaces. (camel_folder_get_uids, camel_folder_free_uids): new uid interfaces (camel_folder_get_summary, camel_folder_free_summary): new summary interfaces * providers/mbox/camel-mbox-folder.c, * providers/nntp/camel-nntp-folder.c: * providers/vee/camel-vee-folder.c: Update for changes * providers/pop3/camel-pop3-folder.c: Implement get_uids, update for other changes. svn path=/trunk/; revision=3126
* Remove unused async open/close and copy_message_to functions. RenameDan Winship2000-05-181-681/+466
| | | | | | | | | * camel-folder.c: Remove unused async open/close and copy_message_to functions. Rename functions without initial _. Fix glib preconditions and gtk-doc comments. svn path=/trunk/; revision=3116
* Make camel not leak like a sieve.Dan Winship2000-05-081-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * camel-object.c: New subclass of GtkObject which is now the base of the Camel object hierarchy. Currently the only difference between CamelObject and GtkObject is that CamelObjects don't start out floating. * *.h: Move a bunch of typedefs to camel-types.h. Standardize on using <camel/foo.h> in header files rather than <foo.h>, "foo.h", or "camel/foo.h". Remove some unneeded includes. * camel-address.c, camel-data-wrapper.c, camel-folder-search.c, camel-folder-summary.c, camel-folder.c, camel-mime-filter.c, camel-mime-parser.c, camel-service.c, camel-session.c, camel-stream.c: These are now subclasses of CamelObject. * camel-data-wrapper.c (set_output_stream): * camel-medium.c (set_content_object): * camel-seekable-substream.c (init_with_seekable_stream_and_bounds): * providers/mbox/camel-mbox-folder.c (mbox_get_message_by_uid): remove gtk_object_sink calls. * camel-stream-buffer.c (init_vbuf): * camel-stream-filter.c (camel_stream_filter_new_with_stream): ref the original stream. * camel-folder-summary.c (camel_folder_summary_finalise): unref the filters when finalizing. * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser, camel_mime_part_construct_content_from_parser): * camel-mime-part.c (camel_mime_part_set_content): Unref objects that are created only to be handed off to other objects. If they're going to be needed later, they will have been additionally ref'ed by the object that needs them. * providers/pop3/camel-pop3-folder.c (get_message_by_number): unref the message stream after creating the data from it. * camel-stream.c, camel-stream-buffer.c, camel-stream-filter.c, camel-stream-fs.c, camel-stream-mem.c: Remove camel_stream_close, since its semantics are dubious (what happens when you close a stream other people still have references on?). * providers/nntp/camel-nntp-store.c: * providers/smtp/camel-smtp-transport.c: * providers/pop3/camel-pop3-store.c: replace camel_stream_close calls with gtk_object_unref. * providers/mbox/camel-mbox-folder.c: * providers/nntp/camel-nntp-folder.c: * providers/sendmail/camel-sendmail-transport.c: replace camel_stream_close with camel_stream_flush + gtk_object_unref svn path=/trunk/; revision=2882
* No, we're not going to have g_strcasecmp for no good reason,NotZed2000-05-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | not even if its slipped in with no changelog. 2000-05-04 NotZed <NotZed@HelixCode.com> * providers/mbox/camel-mbox-summary.c: Yes, and anotherone. * camel-mime-utils.c: And another one. * camel-mime-part.c: And another one. * camel-mime-part-utils.c: And another one. * camel-folder-search.c: And another one. * camel-mime-parser.c: Reverted a change wihtout a ChangeLog entry. 2000-05-04 NotZed <NotZed@HelixCode.com> * camel-folder-summary.[hc]: Yes, CamelFolderSummary is back ... ... re-usable class to summarise and index any stream or message and to manage/load/save the created summaries. * camel-folder.c: Include string.h to kill a warning. 2000-05-03 NotZed <NotZed@HelixCode.com> * camel-folder.h: Added pos/bodypos/endpos to the basic message content info object. Size to be removed? Moved the messageconentinfo and messageinfo back to camel-folder-summary.h. * camel-mime-filter-index.c (camel_mime_filter_index_set_ibex): New function to (re)set the index to use on a filter. * camel-mime-parser.c (camel_mime_parser_scan_from): Whole bunch of inline docs. (camel_mime_parser_drop_step): New function to drop a state from the parser. Needs more testing. svn path=/trunk/; revision=2789
* > * gmime-utils.[ch]: What the hell, remove it. This will break theMichael Zucci2000-05-031-24/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | > nntp provider (but its broken anyway). The mime parser can be > used instead though. > Removed from all code including it (but none were using it). > > * gmime-utils.c (_store_header_pair_from_string): Removed bizarre > string_dichotomy version of this. This code is somewhat redundant > now, and is headed for death anyway. > > * gstring-util.c (g_string_dichotomy): Same with this one. > (g_string_clone): Removed a memory leak, g_string_new() allocates > its own memory. > (g_string_append_g_string): Allow to append an empty gstring onto > another gstring, dont abort()! > > * string-utils.c (string_dichotomy): Removed this incredibly weird > function. > > * camel-folder.c (_create): Replaced the rather obtuse use of > "string_dichotomy" function with a simple strrchr(). Still not > sure it'll work. > > * camel-folder-summary.c: cvs removed a long-removed file. svn path=/trunk/; revision=2753
* Deleted messages properly get removed from the index.Michael Zucci2000-05-021-0/+17
| | | | | | | | | | | | A new folder signal for gui/etc's to track changes. (camel_mbox_summary_expunge): Oops, my wrong, use the string uid to unindex on. (mbox_expunge): Emit a folder_changed signal on expunge (uh, even if it didn't ...) (camel_folder_class_init): Added a folder_changed signal. svn path=/trunk/; revision=2745
* > (camel_folder_expunge): Changed to only allow expunge on an openMichael Zucci2000-05-021-1/+1
| | | | | | > folder. It doesn't make sense for mbox, otherwise (?) svn path=/trunk/; revision=2743
* Removed search_id.Michael Zucci2000-05-021-23/+30
| | | | | | | | | | | | | | | | | | | | | | | | * providers/mbox/camel-mbox-folder.h (CamelMboxFolder): Removed search_id. * providers/mbox/camel-mbox-search.c (camel_mbox_folder_search_cancel): Remove.d (camel_mbox_folder_search_complete): Removed. (camel_mbox_folder_search_by_expression): Changed back to sync api. (struct _searchcontext): Removed cancelled flag. (find_context): Removed. * providers/mbox/camel-mbox-search.h (camel_mbox_folder_search_by_expression): Moved back to sync api. (camel_folder_search_complete): Removed. (camel_folder_search_cancel): Removed. (CamelFolderClass): New function summary_get_by_uid() to get a single summary. (*search*): Moved back to synchronous search api ... *sigh* svn path=/trunk/; revision=2723
* More message cleanup. Flags now work, are saved, and the deleteNotZed2000-05-021-13/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | flag causes an expunge to expunge the deleted messages. 2000-05-01 NotZed <NotZed@HelixCode.com> * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_set_flags_by_uid): New function to update the flags in the summary. (camel_mbox_summary_expunge): Expunge messages from a folder. (offset_content): Re-align offsets of summary when messages added/removed to an existing summary. (camel_mbox_summary_remove_uid): Remove a message summary entry by uid. (index_folder): Restore flags from X-Evolution header, if they are set. * providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Connect to the message_changed signal. (_init): Set permanent flags to something reasonable. No user flags yet ... (message_changed): If the flags of the message change, update the flags in the summary. (mbox_expunge): Implement the expunge. (camel_mbox_folder_class_init): Renamed all leading _'s to mbox_'s * camel-folder.c (_finalize): Uh, dont free permanent_flags anymore (this wouldn't failed anyway, it was a GList !!!) * camel-folder.h (struct _CamelFolder): Change permanent_flags to a bitfield. (list_permanent_flags): Renamed to get_permanent_flags, and returns a bitfield. (camel_folder_expunge): Changed expunge to a void type. The messages would no longer be useful after they have been removed ... * camel-mime-message.c (set_flag): Removed. (camel_mime_message_set_flag): Removed. (get_flag): Removed. (camel_mime_message_get_flag): Removed. (add_flag_to_list): Removed. (get_flag_list): Removed. (camel_mime_message_get_flag_list): Removed. (camel_mime_message_get_flags): New interface to get system flags. (camel_mime_message_set_flags): " to set ". (camel_mime_message_get_user_flag): To get a user flag. (camel_mime_message_set_user_flag): To set a user flag. (finalize): Hmm, the old one free'd the key and data, not good when the data is a boolean ... svn path=/trunk/; revision=2716
* MERGE NEW_PARSER branch into HEAD, fixed conflicts.NotZed2000-04-211-67/+83
| | | | | | | | | | | | | | | | | | | | | | | | | 2000-04-20 NotZed <NotZed@HelixCode.com> * MERGE NEW_PARSER branch into HEAD, fixed conflicts. * gmime-content-field.c (_print_parameter): Duh, removed again (@@#$@ cvs merge). * camel-mime-utils.c (header_content_type_is): Constify. (header_content_type_unref): Killed a couple warnings. * camel-folder.c (_init): Removed more log crap. * providers/Makefile.am (SUBDIRS): Removed nntp, pending fixes for summary changes. * providers/mbox/camel-mbox-folder.c (_get_message_by_number): Fixed for new summary interface. Added a warning for using this broken api. (_get_message_by_uid): Fixed for message new with session vanishing. svn path=/trunk/; revision=2531
* kill camel-logDan Winship2000-04-191-76/+29
| | | | svn path=/trunk/; revision=2487
* Reorganize the folder-fetching methods and implement a folder cache soDan Winship2000-04-071-30/+11
| | | | | | | | | | | | | | | | | | | | | | | 2000-04-06 Dan Winship <danw@helixcode.com> * camel-store.[ch]: Reorganize the folder-fetching methods and implement a folder cache so that multiple requests for the same folder will yield the same CamelFolder object (as long as it remains active). Includes some code to remove no-longer-active folders from the cache, but it doesn't get used since nothing is ever unref'ed in Camel right now... * providers/mbox/camel-mbox-store.c: * providers/pop3/camel-pop3-store.c: update for CamelStore changes. * camel-folder.[ch]: Remove the (unused) CamelException argument from camel_folder_get_name and camel_folder_get_full_name. (camel_folder_set_name): make this go away since changing a folder's name after it has been created could result in it conflicting with a separately-issued folder. svn path=/trunk/; revision=2314
* fix warningsDan Winship2000-03-291-1/+1
| | | | svn path=/trunk/; revision=2217
* add delete_message_by_{number,uid}.Dan Winship2000-03-281-0/+65
| | | | | | | | | | | | | | | | * camel-folder.[ch]: add delete_message_by_{number,uid}. * providers/pop3/camel-pop3-folder.[ch]: implement delete_message_by_uid. Add a close method to do expunging of deleted messages if requested. * providers/pop3/camel-pop3-store.[ch]: support for CamelPop3Folder::close. (You have to close the connection in order to expunge the folder, thus the store may be connected in the CamelService::is_connected sense when it is not actually connected to the server.) Also some bugfixes. svn path=/trunk/; revision=2203
* Added async search api.NotZed2000-03-241-5/+23
| | | | | | | | | | | | | | 2000-03-22 NotZed <NotZed@HelixCode.com> * camel-folder.[ch]: Added async search api. * providers/mbox/camel-mbox-search.c (camel_mbox_folder_search_by_expression): Changed to use an asynchronous interface. (camel_mbox_folder_search_cancel): Cancel function for async interface. svn path=/trunk/; revision=2155
* fix the name of "Helix Code, Inc." in all the copyrightsDan Winship2000-03-101-1/+1
| | | | svn path=/trunk/; revision=2091
* No, its not a fatal error to search on a non-searchable folder, you justNotZed2000-02-291-1/+8
| | | | | | | | | | | | | | | | 2000-02-28 NotZed <NotZed@HelixCode.com> * camel-folder.c (camel_folder_search_by_expression): No, its not a fatal error to search on a non-searchable folder, you just dont get any matches. (_open): Dont open an opened folder (i dont see why this is really a bug, but what the hell ...) * providers/mbox/camel-mbox-folder.c (_init): Set search cap on. (_open): Call parent class to perform open. Remove folder-open check to parent instead. svn path=/trunk/; revision=1984
* remove some camel_store_get_separators that I missed beforeDan Winship2000-02-251-6/+5
| | | | svn path=/trunk/; revision=1925
* Move "separator" from camel-store to camel-folder, since it can vary fromDan Winship2000-02-251-16/+23
| | | | | | | location to location in an IMAP store. Rename CamelFolder::init_with_store to init and add parent_folder, name, and separator arguments. svn path=/trunk/; revision=1919
* use CamelExceptions for run-time errors, not incorrect code. Don't botherDan Winship2000-02-251-731/+138
| | | | | | | | | * camel-folder.c: use CamelExceptions for run-time errors, not incorrect code. Don't bother validating that an object exists from inside one of its methods, since you couldn't have gotten there if it didn't. Fix some code style bugs. svn path=/trunk/; revision=1918
* fix to show a sample correct implementation.bertrand2000-02-221-5/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-02-22 bertrand <Bertrand.Guiheneuf@aful.org> * message-list.c (message_list_set_folder): fix to show a sample correct implementation. * camel-folder.c (camel_folder_get_subfolder): (camel_folder_create): (camel_folder_delete): (camel_folder_delete_messages): (camel_folder_list_subfolders): (camel_folder_expunge): (camel_folder_get_message_by_number): (camel_folder_get_message_count): (camel_folder_append_message): (camel_folder_copy_message_to): (camel_folder_get_summary): (camel_folder_get_message_uid): (camel_folder_get_message_by_uid): (camel_folder_get_uid_list): Check folder state (open/close) and raise an exception if it is not ok. * providers/mbox/camel-mbox-folder.c (_create): create the file and the path with two different names. * camel-folder.c (_create): handle the case when the folder name starts with '/' * camel-exception.c (camel_exception_new): use (void) instead of () in decl. * camel-exception.h: cosmetic fixes. * camel-exception.c (camel_exception_init): new routine. Fix a bug in mail/message-list.c * camel-folder.h: cosmetic changes. * camel-stream-b64.c (reset__static): added a reset method. Thanks message-browser to find so much bugs :) * providers/mbox/Makefile.am (libcamelmbox_la_LIBADD): readd Unicode libs. Fixes and exception handling in camel-folder. Fixes in mail/evolution-mail to make it not segfault and to demonstrate a correct implementation. svn path=/trunk/; revision=1902
* New header with the typedefs for all camel classes. Now the class headersDan Winship2000-02-191-0/+2
| | | | | | | | | | | | | | | * camel/camel-types.h: New header with the typedefs for all camel classes. Now the class headers can just include this and the header for the parent type. This makes it possible for CamelService to include a CamelSession without creating an #include loop. * camel/*: * composer/e-msg-composer-attachment-bar.h: * mail/folder-browser.c: * mail/message-list.c: frob #includes to match the new reality svn path=/trunk/; revision=1850
* use camel_stream_reset instead of seek. The formatter should be able tobertrand2000-02-181-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-02-17 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-formatter.c (handle_text_plain): (handle_text_html): use camel_stream_reset instead of seek. The formatter should be able to work with all streams, not only seekable streams. In the case where some provider implementation would not be able to provide a reset method to their stream, implementors would have to find a workaround. * camel/camel-session.c (camel_session_new): use (void) instean of () in function decl. * camel/camel-folder.c: ifdef async operation related code. * camel/camel-seekable-stream.c (_seek): added a warning. (_reset): default implementation of reset for seekable stream. * camel/camel-mime-message.h: set_received_date declaration fix. cosmetic changes. * camel/providers/mbox/camel-mbox-provider.c (camel_provider_module_init): use (void) instead of (). * camel/camel-stream.c (camel_stream_reset): new method for CamelStream. svn path=/trunk/; revision=1835
* New file, implements the search api for mbox folders.NotZed2000-02-141-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2000-02-13 NotZed <notzed@zedzone.helixcode.com> * providers/mbox/camel-mbox-search.c: New file, implements the search api for mbox folders. * providers/mbox/Makefile.am: Link with ibex. * camel-folder.c (camel_folder_has_search_capability): Api additions. (camel_folder_search_by_expression): Ditto. 2000-02-12 NotZed <notzed@zedzone.helixcode.com> * providers/mbox/camel-mbox-folder.c (_set_name): Setup index filename as well. (_init_with_store): Init index filename. Hmm, none of these names ever seem to get free'd (FIXME?) * providers/mbox/camel-mbox-folder.h: Add index file name. 2000-02-12 NotZed <notzed@helixcode.com> * camel-folder.h: Add folder search functions. ** Created ChangeLog just for camel ** - refer to ../ChangeLog for changes prior to this date. svn path=/trunk/; revision=1772
* implemented. A lot of fixes too. Works now.bertrand2000-01-231-1/+0
| | | | | | | | | 2000-01-22 bertrand <bertrand@helixcode.com> * camel/providers/mbox/camel-mbox-folder.c (_append_message): implemented. A lot of fixes too. Works now. svn path=/trunk/; revision=1608
* test the mbox provider.bertrand2000-01-221-6/+37
| | | | | | | | | | | | | | | | | | | | | | 2000-01-21 bertrand <bertrand@helixcode.com> * tests/test10.c: test the mbox provider. * camel/camel-folder.c (_set_name): if camel_folder_get_mode returns an exception, return it instead of overriding it with a new one. (camel_folder_is_open): make the is_open method public. (_set_name): use the is_open instead of get_mode. (_set_name): set the fullname even in the case where the folder has no parent. (_set_name): use %c, not %d to add the separator char into the full path. svn path=/trunk/; revision=1606
* add exception handling everywhere in the store related functionsbertrand2000-01-221-10/+10
| | | | | | | | | | | | | | | | 2000-01-21 bertrand <bertrand@helixcode.com> * camel/camel-store.c: add exception handling everywhere in the store related functions arguments. * camel/providers/mbox/camel-mbox-folder.c: idem * camel/providers/mbox/camel-mbox-folder.h: idem * camel/providers/mbox/camel-mbox-store.h: idem * camel/providers/mbox/Makefile.am (libcamelmbox_la_SOURCES): added camel-mbox-provider.c to the mbox provider sources. svn path=/trunk/; revision=1605
* Updated my e-mail address to reflect my new employmentBertrand Guiheneuf2000-01-041-1/+1
| | | | svn path=/trunk/; revision=1533
* part of the mbox provider.bertrand1999-12-221-22/+31
| | | | | | | | | | | | 1999-12-22 bertrand <Bertrand.Guiheneuf@aful.org> * camel/providers/mbox/camel-mbox-store.h: * camel/providers/mbox/camel-mbox-store.c: * camel/providers/mbox/camel-mbox-folder.h: * camel/providers/mbox/camel-mbox-folder.c: part of the mbox provider. svn path=/trunk/; revision=1510
* documented.bertrand1999-12-181-0/+11
| | | | | | | | | | | | | | 1999-12-18 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (camel_folder_get_summary): documented. added the providers/mbox directory. Now that camel-folder has been cleaned up a bit, the main evolution provider work can start. The MH provider was only a proof of concept, and should not be used for the moment. svn path=/trunk/; revision=1503
* updated to take the change on append into account.bertrand1999-12-181-8/+19
| | | | | | | | | | | | | | | | | 1999-12-18 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder-pt-proxy.c (_append_message): updated to take the change on append into account. * camel/camel-folder.h: updated class def concerning append. * camel/camel-folder.c (camel_folder_append_message): documented. (camel_folder_append_message): don't return the message number. Use specific methods instead. (_append_message): idem. svn path=/trunk/; revision=1502
* use exception mechanism. (camel_folder_delete): idem. (_delete_messages):bertrand1999-12-181-33/+318
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1999-12-18 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (_delete): use exception mechanism. (camel_folder_delete): idem. (_delete_messages): idem. (camel_folder_delete_messages): idem. (_get_parent_folder): idem. (camel_folder_get_parent_folder): idem. (_get_parent_store): idem. (_get_mode): idem. (camel_folder_get_parent_store): idem. (camel_folder_get_mode): idem. (_list_subfolders): idem. (camel_folder_list_subfolders): idem. (_expunge): idem. (camel_folder_expunge): idem. (_has_message_number_capability): idem. (camel_folder_has_message_number_capability): idem. (_get_message_by_number): idem. (camel_folder_get_message_by_number): idem. (camel_folder_get_message_count): idem. (_list_permanent_flags): idem. (camel_folder_list_permanent_flags): idem. (_copy_message_to): idem. (camel_folder_copy_message_to): idem. (camel_folder_has_summary_capability): idem. (camel_folder_get_summary): idem. (camel_folder_has_uid_capability): idem. (camel_folder_get_message_uid): idem. (_get_message_uid_by_number): idem. (camel_folder_get_message_uid_by_number): idem. (camel_folder_get_message_by_uid): idem. (camel_folder_get_uid_list): idem. svn path=/trunk/; revision=1501
* use exception mechanism. (camel_folder_set_name): idem.bertrand1999-12-181-15/+177
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1999-12-17 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (_set_name): use exception mechanism. (camel_folder_set_name): idem. (camel_folder_set_full_name): idem. (_get_name): idem. (camel_folder_get_name): idem. (_get_full_name): idem. (camel_folder_get_full_name): idem. (_can_hold_folders): idem. (_can_hold_messages): idem. (_exists): idem. (camel_folder_exists): idem. (_is_open): idem. (_get_subfolder): idem. (camel_folder_get_subfolder): idem. * camel/camel-exception.c (camel_exception_clear): New function. Clear an exception. (camel_exception_get_id): New function. (camel_exception_get_description): New function. * camel/camel-folder.c (_set_name): Use the exception system. When the folder has no parent, don't set its full name field. svn path=/trunk/; revision=1499
* changed the return value. Now returns the list of expunged messagesbertrand1999-12-171-100/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1999-12-16 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (camel_folder_expunge): (_expunge): * camel/camel-folder-pt-proxy.c (_expunge): changed the return value. Now returns the list of expunged messages * camel/camel-folder.c (_init_with_store): cleaned up. Use the exception system now. (_open): ditto. (camel_folder_open): ditto. (camel_folder_open_async): ditto. (_close): ditto. (camel_folder_close): ditto. (camel_folder_close_async): ditto. * camel/camel-exception.c (camel_exception_set): When no exception is given, do nothing, just return. (camel_exception_set): documented. (camel_exception_new): idem. (camel_exception_free): idem. (camel_exception_xfer): idem. * camel/camel-folder.c: * camel/camel-folder.h: more clean-ups. Removed message list related code. This was braindead design. svn path=/trunk/; revision=1494
* implemented. The routines in this file will be called by providers tobertrand1999-12-161-26/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1999-12-16 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder-utils.c (camel_aml_expunge_messages): implemented. The routines in this file will be called by providers to handle the list of message already standing in memory. 1999-12-15 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder-utils.c: * camel/camel-folder-utils.h: New files, misc utilities for the folder providers. Includes active message list utilities. * camel/camel-folder.c (_has_message_number_capability): (camel_folder_has_message_number_capability): Added this to know if a folder provides number-based message access. * camel/camel-folder.c (_get_message_count): added warning when called directly. (_append_message): ditto (_open_async): ditto (_close_async): ditto (_delete_messages): ditto (_expunge): ditto (_get_message_by_number): ditto (_get_message_uid): ditto (_get_message_uid_by_number): ditto (_get_message_by_uid): ditto (_get_uid_list): ditto svn path=/trunk/; revision=1492
* update (_get_message_by_number): Update to reflect changes in CamelFolderbertrand1999-12-151-13/+15
| | | | | | | | | | | | | | | 1999-12-15 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder-pt-proxy.c (_open_async): (_open): (_close_async): (_close): (camel_folder_pt_proxy_class_init): update (_get_message_by_number): Update to reflect changes in CamelFolder svn path=/trunk/; revision=1491
* clean-ups.bertrand1999-12-151-61/+164
| | | | | | | | | 1999-12-15 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.[ch]: clean-ups. svn path=/trunk/; revision=1490
* Fix copyright informations once againBertrand Guiheneuf1999-12-151-1/+1
| | | | svn path=/trunk/; revision=1489
* Here is my initial Evolution work: message composition widget and someEttore Perazzoli1999-11-061-2/+2
| | | | | | installation fixes for Camel. svn path=/trunk/; revision=1369
* Copyright changeBertrand Guiheneuf1999-10-231-1/+4
| | | | svn path=/trunk/; revision=1348
* lap syncBertrand Guiheneuf1999-10-191-4/+17
| | | | svn path=/trunk/; revision=1332
* A lot of changes. The thread proxy mechanismbertrand1999-10-141-22/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | is now functional. The signal proxy needs to be tested though. The thread proxy folder is being implemented. A rough summary : 1999-10-13 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (camel_folder_close): the folder->close method is now asynchronous. * camel/camel-folder-pt-proxy.c (_folder_open_cb): (_open): (_folder_open_cb): (_open): open/close method implemented in the thread proxy folder. More to come. * camel/camel-exception.c (camel_exception_xfer): new utility func. * camel/camel-marshal-utils.c: some new marshallers * camel/camel-folder-pt-proxy.c: Some explanations on the thread proxy system. 1999-10-11 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-marshal-utils.c: camel/camel-marshal-utils.h: Handles operation marshalling. * camel/camel-thread-proxy.c: camel/camel-thread-proxy.h: new files. Generic proxy system. * camel/camel-folder-pt-proxy.c moved all proxy related code in dedicated files. (camel_folder_pt_proxy_init): removed proxy initialisation code (_finalize): removed proxy finalization code * camel/camel-exception.c (camel_exception_new): (camel_exception_set): (camel_exception_free): New funcs. svn path=/trunk/; revision=1328
* redesign of the proxy/marshaling code. Uses GtkArg now. sync commit.Bertrand Guiheneuf1999-09-281-6/+19
| | | | | | | * redesign of the proxy/marshaling code. Uses GtkArg now. * sync commit. Evolution does not build at all now. svn path=/trunk/; revision=1260
* Added corba-like exception system to CamelFolder. The exception system isBertrand Guiheneuf1999-09-241-120/+120
| | | | | | | | | * Added corba-like exception system to CamelFolder. The exception system is not finished but I wanted the async and event implementation to get this right from the beginning. svn path=/trunk/; revision=1256
* more work.Bertrand Guiheneuf1999-09-221-0/+1
| | | | | | | * camel/camel-folder-pt-proxy.c: more work. svn path=/trunk/; revision=1248
* camel_folder_get_full_name did not work. Fixed.Jukka Zitting/evolution1999-09-211-0/+1
| | | | svn path=/trunk/; revision=1246
* Summary files are here and work !!!bertrand1999-09-091-1/+2
| | | | | | | | | | | | | | | | | 1999-09-08 bertrand <Bertrand.Guiheneuf@aful.org> * camel/providers/MH/mh-summary.c (mh_load_summary): (mh_save_summary): (mh_create_summary): implemented summary (files) for MH folders. * camel/providers/MH/camel-mh-folder.c (_get_message_by_uid): implemented. (camel_mh_folder_class_init): (_get_message_uid): implemented svn path=/trunk/; revision=1219
* impemented.bertrand1999-09-081-12/+12
| | | | | | | | | | | | | | | | 1999-09-08 bertrand <Bertrand.Guiheneuf@aful.org> * camel/providers/MH/camel-mh-folder.c (_get_message_by_uid): impemented. * camel/camel-folder.c: (camel_folder_get_message_uid_by_number): const'ified uid. (camel_folder_get_message_by_uid): idem removed stupid camel_folder_get_message_uid_by_number method. svn path=/trunk/; revision=1215
* Documented UIDs.bertrand1999-09-081-0/+57
| | | | | | | | | | | | | 1999-09-08 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (camel_folder_has_uid_capability): (camel_folder_get_message_uid): (camel_folder_get_message_uid_by_number): (camel_folder_get_message_by_uid): (camel_folder_get_uid_list): Documented UID methods. svn path=/trunk/; revision=1193
* Basic UID framework.bertrand1999-09-061-0/+80
| | | | | | | | | | | | | 1999-09-05 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (camel_folder_has_uid_capability): (camel_folder_get_message_uid): (camel_folder_get_message_uid_by_number): (camel_folder_get_message_by_uid): (camel_folder_get_uid_list): Basic UID framework. svn path=/trunk/; revision=1181
* New revision. Some fixes.bertrand1999-09-061-1/+5
| | | | | | | | | | | | | | 1999-09-05 bertrand <Bertrand.Guiheneuf@aful.org> * devel-docs/misc/ref_and_id_proposition.txt: New revision. Some fixes. * camel/camel-folder.h (struct _CamelFolder): added uid_capability field. * started to work on UIDs svn path=/trunk/; revision=1180
* use folder summary instead of opening all messages.bertrand1999-09-061-1/+12
| | | | | | | | | | | | | | | | | | | 1999-09-05 bertrand <Bertrand.Guiheneuf@aful.org> * tests/ui-tests/store_listing.c (show_folder_messages): use folder summary instead of opening all messages. * camel/providers/MH/camel-mh-folder.c (_create_summary): basic and highly non-efficient summary implementation. Should be seen as a proof of concept only. subfolder summary still has to be implemented. * camel/providers/maildir/camel-maildir-folder.c (_init_with_store): hasn't summary for the moment. * camel/providers/maildir/camel-maildir-folder.c cosmetic changes. svn path=/trunk/; revision=1178
* started summary implementation. (_open): correct use of open.bertrand1999-09-051-0/+6
| | | | | | | | | | | | | 1999-09-04 bertrand <Bertrand.Guiheneuf@aful.org> * camel/providers/MH/camel-mh-folder.c (_create_summary): started summary implementation. (_open): correct use of open. * camel/camel-folder.c (camel_folder_get_summary): get folder associated summary object. svn path=/trunk/; revision=1177
* sync again. Changelog comes tomorowBertrand Guiheneuf1999-09-031-0/+13
| | | | svn path=/trunk/; revision=1170
* When using g_free (obj) don't test if obj != NULL g_free () already dobertrand1999-09-011-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | 1999-09-01 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (_finalize): (_set_name): * camel/camel-mime-message.c (_finalize): * camel/camel-mime-part.c (_finalize): (_set_description): (_set_disposition): * camel/camel-service.c (_finalize): * camel/camel-stream-fs.c (_finalize): * camel/gmime-content-field.c: (gmime_content_field_construct_from_string): * camel/url-util.c (g_url_free): When using g_free (obj) don't test if obj != NULL g_free () already do that. Thanks to elerium for the feedback. 19 svn path=/trunk/; revision=1151
* Address updateBertrand Guiheneuf1999-08-301-1/+1
| | | | svn path=/trunk/; revision=1147
* new method.bertrand1999-08-161-0/+18
| | | | | | | | 1999-08-15 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (_copy_message_to): new method. svn path=/trunk/; revision=1118
* moved the active list readjustment code here. Much saner, providers won'tbertrand1999-08-161-34/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1999-08-15 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (camel_folder_expunge): moved the active list readjustment code here. Much saner, providers won't have to worry about that. * camel/providers/MH/camel-mh-folder.c (_expunge): no more active list readjustment stuff. * camel/camel-folder.h: the expunge virtual no more returns a list of expunged messages. Now providers only have to set the expunge flag on the expunged messages. * camel/camel-folder.c (camel_folder_get_message): moved the caching code here. Finally, I don't want providers to crash the libs with a bad message cache implementation. (_close): do not call the CamelFolder virtual expunge method directly, use camel_folder_expunge() instead. (camel_folder_expunge): added the want_list param. The client can decide if it wants the expunged message list or not. If yes, it'll have to unref the messages itself. svn path=/trunk/; revision=1117
* Implemented deletion/expunge mechanism.bertrand1999-08-151-8/+19
| | | | | | | | | | | | | | | | | | | | | | | | 1999-08-14 bertrand <Bertrand.Guiheneuf@aful.org> * tests/ui-tests/store_listing.c (delete_selected_messages): (expunge_selected_folders): Implemented deletion/expunge mechanism. * camel/camel-folder.c (_get_message): Added some debug info. * camel/providers/MH/camel-mh-folder.c (_expunge): implemented and tested. * camel/camel-mime-message.c (_set_flag): changed the old braindead implementation. boolean are inserted in the flag hash table casted as gpointers. * camel/camel-mime-message.c: indentation fix svn path=/trunk/; revision=1114
* default implementation to be called first by providers methods. It looksbertrand1999-08-141-4/+23
| | | | | | | | | | | | | | | | 1999-08-13 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (_get_message): default implementation to be called first by providers methods. It looks in the folder message list (in memory) to see if the message has not already been retrieved, and in this case, returns the same CamelMimeMessage object Caching messages in folder kworks. Providers will have to do their job correctly. Enough for today. svn path=/trunk/; revision=1113
* New field (message_list) which will hold a reference on each messagebertrand1999-08-141-5/+27
| | | | | | | | | | | | | | | | | | | | 1999-08-13 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.h (struct _CamelFolder): New field (message_list) which will hold a reference on each message obtained by the folder, which is necessary in order for the caching procedure to work (Getting the same message from a folder twice will return the same CamelMimeMessage object). * camel/camel-folder.c (camel_folder_get_message): When the store retreives a message put it in its message list. (_finalize): free message list. * ChangeLog: fix typo (parmanent) svn path=/trunk/; revision=1112
* new method, returns the list of permanent flags supported by the folder.bertrand1999-08-131-1/+19
| | | | | | | | | | | | | | | 1999-08-13 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (_get_parmanent_flag_list): (camel_folder_get_parmanent_flag_list): new method, returns the list of permanent flags supported by the folder. * camel/camel-mime-message.c (_get_flag_list): (camel_mime_message_get_flag_list): new method, return the list of flag name used by this message. svn path=/trunk/; revision=1111
* Message creation still consumes a lot ofbertrand1999-08-111-1/+19
| | | | | | | | | | | | | | | | | memory (maybe 2000k) and I really don't understand why. As soon as I get gtk working on SunOS, purify should hopefully give me the answer. 1999-08-11 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-service.c (_finalize): * camel/camel-stream-fs.c (_finalize): (_destroy): close file descriptor. * camel/camel-stream-mem.c (_finalize): * camel/camel-store.c (_finalize): * camel/camel-folder.c (_finalize): svn path=/trunk/; revision=1104
* some test filesBertrand Guiheneuf1999-08-101-0/+15
| | | | svn path=/trunk/; revision=1101
* updated some autogen doc stuff. Still don't understand warnings :(bertrand1999-08-071-8/+34
| | | | | | | | | | | | | | | | | | | | | 1999-08-06 bertrand <Bertrand.Guiheneuf@aful.org> * devel-docs/camel/: updated some autogen doc stuff. Still don't understand warnings :( * camel/camel-data-wrapper.c: * camel/providers/MH/camel-mh-store.c: * camel/url-util.c: * camel/gmime-content-field.c: * camel/camel-store.c: various inline doc corrections. * camel/camel-folder.c (get_message_count): new method. Returns the number of message in the folder. svn path=/trunk/; revision=1092
* add debug information (_list_subfolders): test if first char in folderbertrand1999-08-061-36/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1999-08-06 bertrand <Bertrand.Guiheneuf@aful.org> * camel/providers/MH/camel-mh-folder.c (_exists): add debug information (_list_subfolders): test if first char in folder name is not '.' before adding it to the folder list. * camel/camel-store.c (_init): disable session check temporarily (_get_separator): (_get_folder): new static func. Fixed several oddities in class definition. * camel/providers/MH/camel-mh-store.c (camel_mh_store_get_type): parent type is CAMEL_STORE_TYPE not CAMEL_FOLDER_TYPE * camel/camel-store.c: prent class is CamelServiceClass not GtkObjectClass * camel/url-util.c : cosmetic changes + use of const when possible. (find_host): fix a bug: when there is no host and no port don't skip the '/' all static find_* func are now named _func_* (g_url_free): destructor func. cache field has been disabled. Constructing the url string won't be too slow and will occur rarely enough that we do not need to add complexity to this code. * camel/providers/MH/camel-mh-store.c: parent class is CamelStorClass not GtkObjectClass svn path=/trunk/; revision=1087
* test mh provider.bertrand1999-08-061-3/+10
| | | | | | | | | | | | 1999-08-05 bertrand <Bertrand.Guiheneuf@aful.org> * tests/test4.c: test mh provider. * camel/providers/MH/camel-mh-folder.c (_get_message): implemented svn path=/trunk/; revision=1083
* new method. (camel_folder_get_message): corresponding public callbertrand1999-08-061-0/+28
| | | | | | | | | | | 1999-08-05 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-folder.c (_get_message): new method. (camel_folder_get_message): corresponding public call svn path=/trunk/; revision=1082
* Started implementing mh store/folder as a test provider. Next will be pop3.bertrand1999-08-041-27/+31
| | | | | | | | | | | | | | | | | | | | | | 1999-08-03 bertrand <Bertrand.Guiheneuf@aful.org> * camel/providers/MH/camel-mh-folder.c (_create): implemented. (_delete): started implementation. * camel/camel-folder.c (_get_folder): default implementation calls camel_store_get_folder (). * camel/providers/MH/camel-mh-folder.c (_init_with_store): implemented. * camel/camel-folder.h (struct _CamelFolder): remove useless exist_on_store field. * camel/camel-folder.c (_exists): do not use exist_on_store field. svn path=/trunk/; revision=1073
* new public functions (_set_name): set full_path.Bertrand Guiheneuf1999-08-031-22/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | * camel/camel-folder.c (camel_folder_set_name): (camel_folder_get_name): new public functions (_set_name): set full_path. (_set_full_name): (camel_folder_set_full_name): commented out this functions def. It would make things very difficult to handle, and would not be very useful. * camel/providers/MH/camel-mh-store.h: * camel/providers/MH/camel-mh-store.c (camel_mh_store_set_toplevel_dir): (camel_mh_store_get_toplevel_dir): * camel/providers/MH/camel-mh-folder.c (_set_name): * camel/providers/MH/camel-mh-folder.h: use (gchar *) instead of (GString *) everywhere. use const when necessary. * camel/camel-folder.h (struct _CamelFolder): removed unused message_list field. svn path=/trunk/; revision=1072
* merge a lot of work. Rough ChangeLog will followBertrand Guiheneuf1999-08-011-65/+74
| | | | svn path=/trunk/; revision=1052
* Implemented base64 encoder based on CamelStreams. Should theMiguel de Icaza1999-07-151-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1999-07-13 Miguel de Icaza <miguel@gnu.org> * camel/gmime-base64.c (gmime_encode_base64): Implemented base64 encoder based on CamelStreams. Should the encoder/decoder be a Stream itself? * camel/gmime-utils.c: include config.h here. * camel/url-util.c: ditto. * camel/gstring-util.c: ditto. * camel/gmime-content-field.c: ditto. * camel/camel-stream.c: ditto. * camel/camel-stream-fs.c: ditto. * camel/camel-store.c: ditto. * camel/camel-simple-data-wrapper.c: ditto. * camel/camel-session.c: ditto. * camel/camel-service.c: ditto. * camel/camel-mime-part.c: ditto. * camel/camel-mime-message.c: ditto. * camel/camel-log.c: ditto. * camel/camel-data-wrapper.c: ditto * camel/camel-folder.c: ditto. * camel/camel-stream.c (camel_stream_write): Moved api documentation to the places that they document. (camel_stream_class_init): Virtual classes do not need to have a default implementation. So null them all. (camel_stream_write): Return value from write. (camel_stream_available): implement. (camel_stream_write_strings): documented. * devel-docs/query/virtual-folder-in-depth.sgml: Small reformatting 1999-06-28 bertrand <Bertrand.Guiheneuf@inria.fr> * tests/test2.c (main): now use CamelDataWrapper::contruct_form_stream to test svn path=/trunk/; revision=1024
* remove leading and trailing spaces in recipient addresses.Bertrand Guiheneuf1999-05-301-1/+1
| | | | | | | | | | | | | | | | | * camel/camel-mime-message.c (_set_recipient_list_from_string): remove leading and trailing spaces in recipient addresses. * camel/gmime-utils.c (_store_header_pair_from_gstring): remove leading and trailing spaces from header values. * camel/gstring-util.c (g_string_trim): new func: remove leading or trailng chars from a specified char set. (g_string_split): allow trimming of substrings. * tests/test1.c (main): remove gtk_main call svn path=/trunk/; revision=958
* syncBertrand Guiheneuf1999-05-281-1/+1
| | | | svn path=/trunk/; revision=949
* static functions naming follows gnome coding style guide.bertrand1999-05-121-76/+76
| | | | | | | | | | | | | | 1999-05-11 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/camel-store.c: * camel/camel-service.c: * camel/camel-folder.c: * camel/camel-data-wrapper.c: * camel/camel-mime-part.c: static functions naming follows gnome coding style guide. svn path=/trunk/; revision=902
* new method.bertrand1999-05-051-18/+52
| | | | | | | | | | | | | | | | | 1999-05-04 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/camel-service.c (camel_service_get_url): new method. * devel-docs/camel/camel-sections.txt: added function doc references * camel/camel-folder.c (__camel_folder_close): fixed indentation. (camel_folder_expunge): new method. (__camel_folder_close): used expunge flag svn path=/trunk/; revision=890
* typo fixbertrand1999-05-031-4/+41
| | | | | | | | | | | | | | | | | | 1999-05-03 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/camel-folder.c (camel_folder_get_mode): typo fix * camel/camel-folder.c (__camel_folder_list_subfolders): new func. * some doc stuffs Finishing storage layer, will start message classes soon. Bertrand svn path=/trunk/; revision=889
* new methodsbertrand1999-05-011-48/+151
| | | | | | | | | | | | | | | | | | 1999-05-01 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/camel-folder.c (__camel_folder_get_mode): (camel_folder_get_mode): (camel_folder_get_parent_store): (__camel_folder_get_parent_store): (camel_folder_get_parent_folder): (__camel_folder_get_parent_folder): new methods * camel/camel-service.c: put __ prefix before private virtual funcs. svn path=/trunk/; revision=886
* new methods.bertrand1999-05-011-52/+172
| | | | | | | | | | 1999-05-01 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/camel-folder.c (camel_folder_delete): (camel_folder_delete_messages): new methods. svn path=/trunk/; revision=885
* syncBertrand Guiheneuf1999-05-011-20/+53
| | | | svn path=/trunk/; revision=883
* more test implementation.bertrand1999-04-221-10/+33
| | | | | | | | | | | | | 1999-04-22 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/providers/MH/camel-mh-store.c: more test implementation. * camel/camel-store.c (camel_store_get_type): typo fix A lot of small adds and corrections. svn path=/trunk/; revision=867
* A first attempt at setting up the documentation system.Bertrand Guiheneuf1999-04-211-0/+1
| | | | svn path=/trunk/; revision=862
* started implementation typo uncommented the store related code.bertrand1999-04-191-6/+7
| | | | | | | | | | | | | | | 1999-04-18 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/camel-store.[ch]: started implementation * camel/camel-folder.c (camel_folder_get_type): typo uncommented the store related code. (camel_folder_create): enable som store relted code. Not finished. Have to define public methods first. * camel/camel-log.h: some explanation about the log system svn path=/trunk/; revision=854
* implemented (partially) have to write CamelStore before finishing it.bertrand1999-04-191-0/+86
| | | | | | | | | | | | | | | 1999-04-18 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/camel-folder.c: (camel_folder_create): implemented (partially) have to write CamelStore before finishing it. * camel/camel-folder.h (CamelFolder): added full_name field (CamelFolderClass): added set/get_full_name methods Some more work svn path=/trunk/; revision=853
* some work log system for camel some utilities for GString objectsbertrand1999-04-181-2/+82
| | | | | | | | | | | | | | | 1999-04-18 bertrand <Bertrand.Guiheneuf@inria.fr> * camel/camel-folder.c: some work * camel/camel-log.c: log system for camel * camel/gstring-util.c: some utilities for GString objects Work on obmail translation. Bertrand svn path=/trunk/; revision=851
* Initial revisionBertrand Guiheneuf1999-04-181-0/+140
svn path=/trunk/; revision=846