Commit Graph

25 Commits

Author SHA1 Message Date
6abd6e01b3 Added "offline_sync" option, which lets you synchronise all mail to local
2003-09-22  Not Zed  <NotZed@Ximian.com>

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

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

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

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

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

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

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

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

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

svn path=/trunk/; revision=22648
2003-09-22 18:48:34 +00:00
7dea6c9dc2 implement PERSISTENT_PROPERTIES, for index mode.
2003-08-27  Not Zed  <NotZed@Ximian.com>

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

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

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

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

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

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

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

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

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

svn path=/trunk/; revision=22388
2003-08-27 19:50:25 +00:00
2bd47d3cda Get rid of the #ifdef ENABLE_THREADS since we no longer plan to
2003-07-09  Jeffrey Stedfast  <fejj@ximian.com>

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

	* camel.c: Same.

	* camel-certdb.c: Here too.

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

	* camel-cipher-context.c: "

	* camel-data-wrapper.c: "

	* camel-digest-folder.c: "

	* camel-exception.c: "

	* camel-folder.c: "

	* camel-folder-summary.c: "

	* camel-lock-client.c: "

	* camel-mime-utils.c: "

	* camel-object.c: "

	* camel-operation.c: "

	* camel-partition-table.c: "

	* camel-sasl-popb4smtp.c: "

	* camel-service.c: "

	* camel-session.c: "

	* camel-store.c: "

	* camel-store-summary.c: "

	* camel-text-index.c: "

	* camel-transport.c: "

	* camel-vee-folder.c: "

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

svn path=/trunk/; revision=21777
2003-07-09 19:05:13 +00:00
41e808deca ** Should fix #41629, #41448, et al.
2003-04-22  Not Zed  <NotZed@Ximian.com>

        ** Should fix #41629, #41448, et al.

        * tests/folder/test10.c: a new torture test for object bag
        creation/unreffing.

        * camel-url.c (camel_url_copy): new function to copy a url.

        * camel-object.c (camel_object_bag_new): add arguments for key
        copy and key free functions.  Fixed all callers.
        (camel_object_bag_destroy): fix a memleak, free the bag key.
        (camel_object_bag_get, camel_object_bag_reserve)
        (camel_object_bag_abort, save_bag, save_object): Make the key a
        void type, rather than char *.
        (camel_object_bag_add): As above, and also copy the key.
        (camel_object_bag_remove_unlocked): free the key using
        bag->free_key.

        * camel-session.c (register_provider)
        (camel_session_destroy_provider, get_service): Changed to use an
        object bag instead of a hash table for the service 'cache'.
        (service_cache_remove): Removed, no longer required.

svn path=/trunk/; revision=20930
2003-04-23 01:34:03 +00:00
207efa9abf s/class/klass in one place so that the header is c++-safe.
2003-03-04  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-object.h: s/class/klass in one place so that the header is
	c++-safe.

svn path=/trunk/; revision=20140
2003-03-04 19:21:05 +00:00
24b06cb2a4 Use a bag instead of a hashtable to track the cache streams.
2002-12-07  Not Zed  <NotZed@Ximian.com>

	* camel-data-cache.c (data_cache_init): Use a bag instead of a
	hashtable to track the cache streams.
	(data_cache_finalise): Same.
	(free_busy): No longer needed.
	(data_cache_expire): use bag instead of hashtable.
	(stream_finalised): No longer required.
	(camel_data_cache_add): objectbagise
	(camel_data_cache_get): "
	(camel_data_cache_remove): "
	(data_cache_path): Set the now expired date before running expiry,
	so it plays better with multiple threads.  Still a couple of
	harmless races.

2002-12-06  Not Zed  <NotZed@Ximian.com>

	* providers/local/camel-spool-store.c (scan_dir): folders ->
	object bag.
	(get_folder_info_mbox): folders -> object bag.

	* providers/local/camel-mh-store.c (folder_info_new): folders ->
	object bag.

	* providers/local/camel-maildir-store.c (scan_dir): folders ->
	object bag.

	* providers/local/camel-local-store.c (rename_folder): folders ->
	object bag.

	* camel-private.h (CamelStorePrivate): Remove 'cache' lock,
	handled by the objectbag.

	* providers/imap/camel-imap-store.c (copy_folder): Removed.
	(imap_store_refresh_folders): folders -> object bag.
	(get_folder_counts): folders -> object bag.

	* camel-vee-store.c (vee_get_folder): changes for folders
	objectbag.
	(vee_get_folder_info): Change to use folders objectbag.  Also,
	dont refresh the base folder if we're in FAST mode.
	(build_info): Removed, no longer needed.
	(vee_rename_folder): Fixed for folders objectbag.

	* camel-store.c (camel_store_init): init the folders objectbag.
	(camel_store_finalize): Destroy the folders object bag.
	(folder_matches):
	(folder_finalize): Removed, now handled implicitly by the
	objectbag.
	(camel_store_get_folder): object bag changes.
	(camel_store_delete_folder): "
	(get_subfolders): Removed, now handled without a callback.
	(camel_store_rename_folder): Changed to use object bag of folders.
	(trash_add_folder): Removed.
	(init_trash): use folders object bag.
	(copy_folder_cache):
	(sync_folder): Removed, no longer needed.  Weird arsed code anyway.
	(store_sync): Use folder object bag instead of hashtable.
	(camel_store_unsubscribe_folder): "
	(camel_store_init): remove cache_lock init, no longer used.
	(camel_store_finalize): Same for cleanup.

2002-12-05  Not Zed  <NotZed@Ximian.com>

	* camel-store.h (struct _CamelStore): change folders from a
	hashtable into a CamelObjectBag.

	* camel-object.c (camel_object_ref): Use type_lock instead of
	class lock for ref counting.
	(camel_object_unref): Use type_lock instead of class lock for
	unref.
	(camel_object_unref): If the object is 'bagged', then also look
	hooks, and remove it from any bags.
	(camel_object_bag_new):
	(camel_object_bag_destroy):
	(camel_object_bag_add):
	(camel_object_bag_get):
	(camel_object_bag_remove_unlocked):
	(camel_object_bag_list):
	(camel_object_bag_abort):
	(camel_object_bag_remove): New functions to implement a utility
	object which can manage a 'bag' of weakly ref'd children in an
	atomic & threadsafe way.

svn path=/trunk/; revision=19056
2002-12-09 00:28:06 +00:00
796a15280d Added.
2002-11-07  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-i18n.h: Added.

	* camel-object.h: #include camel-i18n.h instead of gnome-i18n.h

	* camel-lock.c: Same.

svn path=/trunk/; revision=18638
2002-11-07 21:34:17 +00:00
182aac9271 removed gnome-defs.h, it does not exist.
2002-11-07  Rodrigo Moya <rodrigo@ximian.com>

	* camel-object.h: removed gnome-defs.h, it does not exist.

svn path=/trunk/; revision=18633
2002-11-07 16:34:33 +00:00
d49a387afc Take a void object arg. (camel_object_remove_event): "
2002-06-27  Not Zed  <NotZed@Ximian.com>

        * camel-object.c (camel_object_hook_event): Take a void object arg.
        (camel_object_remove_event): "
        (camel_object_unhook_event): "
        (camel_object_trigger_event): ", also, execute events in the same
        order they were added, i.e. reverse hook-list order.

svn path=/trunk/; revision=17359
2002-07-03 01:42:50 +00:00
1f993cacd1 Remove the CONF_DEFAULT_PATH entry, as this is handled by the url config
2002-06-04  Not Zed  <NotZed@Ximian.com>

        * providers/local/camel-local-provider.c: Remove the
        CONF_DEFAULT_PATH entry, as this is handled by the url config
        stuff.  This made it basically impossible to configure any local
        folder from the gui.

        * providers/local/camel-local-folder.c (local_refresh_info): Force
        a refresh.  Should work for all local folders to force them to
        refresh.

        * providers/local/camel-maildir-folder.c (maildir_refresh_info):
        Removed, moved into camel-local-folder.

        * providers/local/camel-mh-summary.c (mh_summary_next_uid_string):
        Once we assign or get a uid, tell the summary of this, so the next
        uid we get will be higher than any previously.

        * camel-object.c (camel_object_ref, camel_object_unref): I got
        sick of casting, these now take void * like they should, and
        perform their own run-time type checking.

        * providers/local/camel-mh-store.c (recursive_scan): Changed to
        use stat, not lstat (*shrug* maybe someone wants to softlink their
        maildir tree?).
        (inode_hash):
        (inode_equal):
        (inode_free): Copied from camel-maildir store (should put into
        camel-local-store or utils?).
        (recursive_scan): Changed to check for re-visiting inodes.  Also,
        it builds the tree itself, rather than using folder_info_build.
        (add_folder): Changed to folder_info_new.
        (recursive_scan): Properly honour the recursive flag.  Also,
        lookup unread count from folder.
        (folder_info_new): Init unread message count to -1, since we dont
        know yet.
        (folder_info_new): Take the name as an argument, and perform the
        merging here.
        (folders_update): Util func to add/remove folders from .folders
        file.  I'm assuming its sorted.
        (get_folder): Add the folder to .folders if we created a new one,
        and if it exists.
        (delete_folder): Remove from .folders, etc.
        (folders_scan): If we have a .folders file, read and use that
        instead.
        (recursive_scan): Handle scanning from a particular directory
        properly.
        (rename_folder): Implement so we can track any changes to the
        .folders file if its turned on.

        ** Applied patch below from Greg Hudson.

2002-05-10  Greg Hudson  <ghudson@mit.edu>

        * camel-mh-store.c (get_inbox, get_folder_info, recursive_scan,
        add_folder): Implement support for MH stores.

        * camel-mh-summary.c (mh_summary_check, sort_uid_cmp): Sort MH
        messages by message number (uid), like we sort maildir messages by
        date.

        * camel-local-provider.c (mh_provider): Turn on source and store
        flags.

svn path=/trunk/; revision=17130
2002-06-06 09:53:36 +00:00
d0a6ed17b6 setup/free the mech string.
2002-06-02  Not Zed  <NotZed@Ximian.com>

        * camel-sasl.c (camel_sasl_new):
        (camel_sasl_finalize): setup/free the mech string.

        * camel-sasl.h: Added 'mech' mechanism string.

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

        * providers/imap/camel-imap-folder.c (imap_getv): Implement.  Only
        the object_description arg.
        (camel_imap_folder_get_type): Init parent_class holder.

        * providers/local/camel-local-folder.c (local_getv): Implement,
        object_description arg.

        * camel-folder.c (folder_getv): Implement, add a bunch of args you
        can get -> camel_folder_get_unread_count etc will be going RSN i
        hope.
        (camel_folder_finalize): Free cached description string.

        * camel-object.c (cobject_getv): Implement
        CAMEL_OBJECT_ARG_DESCRIPTION, just return the classname of the
        object.
        (camel_object_getv):
        (camel_object_get):
        (camel_object_setv):
        (camel_object_set): Take object = void *, to simplify usage.
        (camel_object_setv): Removed unecessary locals.
        (camel_object_getv): Same.
        (camel_object_free): New method, free an arg, upto implementations
        whether args are static/const or not.
        (cobject_free): Implement a dummy do nothing free.

2002-05-31  Not Zed  <NotZed@Ximian.com>

        * camel-vee-folder.c (camel_vee_folder_get_location): new function
        to get the real location (folder) (and uid) of a vfolder object.
        Using the folderinfo, since we already have it, maybe it should
        use the uid.

svn path=/trunk/; revision=17073
2002-06-03 02:56:35 +00:00
b1b0801c8f s/class/klass for arguments so that c++ developers don't complain later.
2002-05-07  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-object.h: s/class/klass for arguments so that c++
	developers don't complain later.

svn path=/trunk/; revision=16712
2002-05-07 20:43:05 +00:00
4655d88867 Check for LOGIN xxxx as well if debug is on, so we dont print passwords to
2002-05-07  Not Zed  <NotZed@Ximian.com>

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

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

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

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

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

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

svn path=/trunk/; revision=16701
2002-05-07 07:31:26 +00:00
512b1e762c Add c++ armoring.
2002-03-01  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-vtrash-folder.h:
	* camel-vee-store.h:
	* camel-vee-folder.h:
	* camel-stream-null.h:
	* camel-stream-filter.h:
	* camel-store-summary.h:
	* camel-news-address.h:
	* camel-mime-utils.h:
	* camel-mime-parser.h:
	* camel-mime-filter-save.h:
	* camel-mime-filter-linewrap.h:
	* camel-mime-filter-index.h:
	* camel-mime-filter-html.h:
	* camel-mime-filter.h:
	* camel-mime-filter-from.h:
	* camel-mime-filter-crlf.h:
	* camel-mime-filter-chomp.h:
	* camel-mime-filter-charset.h:
	* camel-mime-filter-bestenc.h:
	* camel-mime-filter-basic.h:
	* camel-internet-address.h:
	* camel-folder-thread.h:
	* camel-folder-summary.h:
	* camel-folder-search.h:
	* camel-filter-driver.h:
	* camel-charset-map.h:
	* camel-address.h: Add c++ armoring.

	* camel-object.h: s/class/klass

svn path=/trunk/; revision=15885
2002-03-01 21:39:17 +00:00
08fb7329cb Fixing the license text.
svn path=/trunk/; revision=14212
2001-10-27 16:59:46 +00:00
02dcd0aadf Update the licensing information to require version 2 of the GPL
(instead of version 2 or any later version).

svn path=/trunk/; revision=14190
2001-10-27 00:25:49 +00:00
fac0dbd69c If CAMEL_DEBUG is defined, print some useful ref/unref info.
2001-10-16  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-object.[c,h]: If CAMEL_DEBUG is defined, print some useful
	ref/unref info.

	* providers/imap/camel-imap-store.c (delete_folder): Fixed an
	assignment warning.

	* camel-uid-cache.c (camel_uid_cache_new): Make sure that the
	parent directory exists before trying to open the filename, if it
	doesn't, create it.

svn path=/trunk/; revision=13707
2001-10-16 21:47:34 +00:00
7
c3d6f44895 Fill the finalised data with nonsense, rather than 0's - more easily
2001-09-27    <NotZed@Ximian.com>

	* camel-object.c (camel_object_unref): Fill the finalised data
	with nonsense, rather than 0's - more easily detect bad data.
	(camel_object_new): Clear instance data when we retrieve it off
	the list.

	* camel-object.h (_CamelObject): Added an event lock pointer for
	uh, locking event stuff.  Also change the hooklist hashtable into
	a list.  Changed all the code to handle it.  Result: thread-safe
	events, event-hooks, and save memory too, and SHOULD FINALLY FIX
	THAT UNREAD COUNT PROBLEM.

svn path=/trunk/; revision=13201
2001-09-27 22:36:53 +00:00
d0eee48606 Move this before the camel_vee_folder_remove_folder because that function
2001-07-05  Peter Williams  <peterw@ximian.com>

	* camel-vee-folder.c (camel_vee_folder_finalise): Move this before the
	camel_vee_folder_remove_folder because that function modifies p->folders
	messing up our iteration.
	(camel_vee_folder_finalise): Don't unref our summary; camel-folder now
	does this.

	* camel-object.h (CamelObject): Add a 'destroying' flag to CamelObject.

	* camel-object.c (obj_init): Clear 'destroying'.
	(camel_object_unref): If 'destroying' then do not send the finalize
	event and do not call finalize functions. Otherwise, set destroying
	so just in case we get refed (eg event code) we don't get doubly
	finalized.

svn path=/trunk/; revision=10811
2001-07-05 16:40:45 +00:00
91cc026904 Update the copyrights, replacing Helix Code with Ximian and
helixcode.com with ximian.com all over the place.

svn path=/trunk/; revision=10440
2001-06-23 08:52:02 +00:00
fe962a2055 Big header cleanups and nntp compile fix
svn path=/trunk/; revision=9024
2001-03-29 20:31:40 +00:00
f89ca302d1 Emit the folder_created signal here.
2001-02-15  Jeffrey Stedfast  <fejj@ximian.com>

	* providers/vee/camel-vee-folder.c (camel_vee_folder_new): Emit
	the folder_created signal here.

	* providers/local/camel-local-folder.c
	(camel_local_folder_construct): Emit the folder_created signal.

	* providers/local/camel-local-store.c (delete_folder): On error,
	free the 'name' string so we don't leak. Also emit the
	folder_deleted signal.

	* providers/imap/camel-imap-store.c (subscribe_folder): Emit the
	folder_created signal.
	(unsubscribe_folder): Emit the folder_deleted signal.

	* camel-store.c (camel_store_class_init): Added folder_created and
	folder_deleted signal defs.

svn path=/trunk/; revision=8246
2001-02-15 19:20:38 +00:00
360675f54b lots of i18n fixes
svn path=/trunk/; revision=6143
2000-10-24 05:23:27 +00:00
8cb514d6dd Merge with camel-async.
svn path=/trunk/; revision=4687
2000-08-10 17:30:50 +00:00
580d885820 Make camel not leak like a sieve.
* camel-object.c: New subclass of GtkObject which is now the base
	of the Camel object hierarchy. Currently the only difference
	between CamelObject and GtkObject is that CamelObjects don't start
	out floating.

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

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

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

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

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

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

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

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

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

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

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