Commit Graph

37 Commits

Author SHA1 Message Date
fb01e36abc removed debug printfs.
2003-08-29  Not Zed  <NotZed@Ximian.com>

        * camel-object.c (camel_object_state_write):
        (cobject_getv):
        (cobject_setv, cobject_state_read, cobject_state_read)
        (cobject_state_write): removed debug printfs.

svn path=/trunk/; revision=22419
2003-08-30 01:04:38 +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
0335f162f8 Lets try this again. We don't actually want to free the key here, because
2003-05-22  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-object.c (camel_object_bag_destroy): Lets try this
	again. We don't actually want to free the key here, because
	camel_object_bag_remove() does that for us. This should fix bug
	#43406 properly.

svn path=/trunk/; revision=21327
2003-05-22 20:17:02 +00:00
4773ca9f2b Create a second GPtrArray for the keys. We don't want to use
2003-05-20  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-object.c (camel_object_bag_destroy): Create a second
	GPtrArray for the keys. We don't want to use bag->free_key() on
	the object. Fixes bug #43406.

svn path=/trunk/; revision=21300
2003-05-21 15:32:37 +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
ee847725ec Ignore whether or not the bag is currently reserved. We'll miss the new
2003-03-27  Not Zed  <NotZed@Ximian.com>

	* camel-object.c (camel_object_bag_list): Ignore whether or not
	the bag is currently reserved.  We'll miss the new potential
	object, but only 1.  Should address #40103.

svn path=/trunk/; revision=20514
2003-03-26 07:01:38 +00:00
ed138c113d removed, it was double-freeing the key. (save_object): Just save the
2003-03-12  Not Zed  <NotZed@Ximian.com>

        * camel-object.c (remove_bag): removed, it was double-freeing the
        key.
        (save_object): Just save the object in an array.
        (camel_object_bag_destroy): first save the object bag's objects in
        a list, then remove them one at a time from the bag since we can't
        remove hash table entries while we're in a foreach (PITA glib
        shit).  For #39486.
        (camel_object_bag_*): killed some warnings.

svn path=/trunk/; revision=20258
2003-03-12 00:37:33 +00:00
0d7462802f Init bag->owner to 0.
2003-02-04  Not Zed  <NotZed@Ximian.com>

        * camel-object.c (camel_object_bag_new): Init bag->owner to 0.

2003-01-31  Not Zed  <NotZed@Ximian.com>

        * camel-object.c (camel_object_bag_*): Changed to use a posix
        semaphore instead of a condition variable + flag to reserve the
        object bag because e_mutex_cond is broken.

svn path=/trunk/; revision=19754
2003-02-05 04:53:53 +00:00
5147fa2158 fix header include order.
2003-01-13  Not Zed  <NotZed@Ximian.com>

        * camel-mime-filter-tohtml.c: fix header include order.

        * camel-object.c (camel_object_bag_reserve): Add an assert to
        check we're not trying to reserve the bag more than once in a
        given thread.
        (camel_object_bag_list): If we have reserved the bag, dont try and
        cond wait.  Fixes a deadlock.

svn path=/trunk/; revision=19424
2003-01-13 11:56:12 +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
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
332b93d3fb Fix a crash in a g_warning.
* camel-object.c (camel_object_class_cast): Fix a crash in a
	g_warning.

svn path=/trunk/; revision=16705
2002-05-07 17:15:10 +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
da13189489 cast the key argument to g_hash_table_insert to a gpointer to avoid compiler warnings
svn path=/trunk/; revision=15023
2001-12-13 20:58:30 +00:00
66587d89a3 Keep a name-to-type hash so that we can make sure that the type has not
2001-12-11  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-object.c (camel_type_register): Keep a name-to-type hash
	so that we can make sure that the type has not yet been registered
	(prevents a race condition such as the one in bug #16559).

	* camel-service.c (camel_service_connect): Make sure that the
	connect_op is non-NULL before unregistering/unreffing it.

svn path=/trunk/; revision=15021
2001-12-13 20:38:11 +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
3
fc2062d77e Remove now unused 'recents' array/freeing func.
2001-10-03    <NotZed@Ximian.com>

        * providers/imap/camel-imap-folder.c (camel_imap_folder_changed):
        Remove now unused 'recents' array/freeing func.

        * camel-object.c (camel_object_trigger_event): Oops, always run
        the prep function, even if we have no hooks listening.  Causes
        incoming imap recents to get ignored bythe camel-folder filter
        inbox code.

svn path=/trunk/; revision=13398
2001-10-03 23:57:41 +00:00
2
6df609098d Change the lock to a recursive e-mutex. (camel_object_hook_event):
2001-10-02    <NotZed@Ximian.com>

        * camel-object.c (camel_object_get_hooks): Change the lock to a
        recursive e-mutex.
        (camel_object_hook_event): Maintain list length of hook list.
        (camel_object_unhook_event): "
        (camel_object_unhook_event): If we are in an event, just mark the
        pair as removed, without removing it.
        (camel_object_trigger_event): Before running events, copy the
        list, and also ignore 'removed' events.  After running events, if
        we're all out of events, then free up any pending-removed events.
        (camel_object_free_hooks): Add some new assertions on the state of
        the hook structure.
        Removed the #error if threads not defined.  It _should_ actually
        work without threads.
        (camel_object_free_hooks): Free mutex when done.

svn path=/trunk/; revision=13347
2001-10-02 20:33:11 +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
61b4c7ffee Make the locking more fine-grained on destruction; specifically, don't
2001-08-28  Peter Williams  <peterw@ximian.com>

	* camel-object.c (camel_object_unref): Make the locking more
	fine-grained on destruction; specifically, don't hold the
	type lock while calling the finalize functions.

svn path=/trunk/; revision=12501
2001-08-28 18:28:14 +00:00
5dfe756f5f Properly determine match type to pass to header_match.
2001-08-08  Not Zed  <NotZed@Ximian.com>

        * camel-filter-search.c (check_header): Properly determine match
        type to pass to header_match.
        (address_matches_exactly): Removed, effectively added to
        camel_search_header_match.

        * camel-folder-search.c (check_header): Properly determine the
        match type to pass to header_match.

        * camel-search-private.c (camel_search_header_match): Add a new
        parameter 'type' which is the type of header we're matching
        against.  ASIS means utf8 format, ADDRESS means an internet
        address ('formatted'), ADDRESS_ENCODED means a raw address header,
        ENCODED means rfc 2047 encoded text.
        (header_match): Move original logic here, have search_header_match
        call it as appropriate for the 'type' of match.

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

        * camel-session.c (camel_session_class_init): Only init the vee
        provider struct once (if we're subclassed this will get called
        multiple times).

        * camel-object.c (obj_finalize): Removed a bit of a debug that
        crept in with jacob's poolv patch (?).

svn path=/trunk/; revision=11772
2001-08-08 09:37:40 +00:00
eda4386f98 Make sure that after the finalization event has happened and the
2001-07-06  Peter Williams  <peterw@ximian.com>

	* camel-object.c (camel_object_unref): Make sure that after the
	finalization event has happened and the finalization functions
	have been called that the object still has a zero refcount.

svn path=/trunk/; revision=10844
2001-07-06 13:00:48 +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
7d9faeb00c Applied jacob's patches for e-poolv stuff.
2001-04-26  Not Zed  <NotZed@Ximian.com>

        * Applied jacob's patches for e-poolv stuff.

svn path=/trunk/; revision=9571
2001-04-26 01:09:05 +00:00
044fde0583 Plug leaks.
* camel-object.c (camel_object_hook_event):
        * camel-uid-cache.c (camel_uid_cache_get_new_uids):
        * camel-url.c (camel_url_new_with_base): Plug leaks.

        * camel-remote-store.c (camel_remote_store_init): Don't
        re-initialize the folders hash table.

        * providers/imap/camel-imap-store.c (imap_disconnect): Free
        authtypes since they'll be re-read on re-connect.
        (get_folder_info): Free folderinfos that we're discarding from the
        list.

svn path=/trunk/; revision=9302
2001-04-13 21:36:09 +00:00
fe962a2055 Big header cleanups and nntp compile fix
svn path=/trunk/; revision=9024
2001-03-29 20:31:40 +00:00
229f78b929 No, we must not encode the headers here. These interfaces ARE raw
2000-10-18  Not Zed  <NotZed@HelixCode.com>

	* camel-mime-part.c (add_header): No, we must not encode the
	headers here.  These interfaces ARE raw interfaces as they are
	defined in camel_medium.  Also removed a bogus/meaningless FIXME.
	(set_header): Likewise here, we must not.
	(process_header): Removed another bogus comment.

	* camel-object.c (shared_is_of_type): Comment out the spitting of
	a big warning when we're trying to determine types from code.

	* providers/mbox/camel-mbox-summary.c
	(message_info_new_from_parser): Only call ibex funcitons if we
	have an index.

	* providers/mh/camel-mh-summary.c (camel_mh_summary_add): Only
	call ibex functions if we have an index.
	(remove_summary): Likewise.
	(camel_mh_summary_check): Likewise.

	* providers/nntp/camel-nntp-store.c (nntp_store_get_folder):
	get_folder -> flags argument.

	* providers/vee/camel-vee-store.c (vee_get_folder): create->flags.

	* providers/pop3/camel-pop3-store.c (get_folder): Changed create
	-> flags.

	* providers/imap/camel-imap-store.c (get_folder): Added flags
	argument.

	* providers/mh/camel-mh-folder.c (camel_mh_folder_new): Added
	flags argument, and fixed code appropriately.

	* providers/mh/camel-mh-store.c (get_folder): Added flags argument.

	* camel-folder-search.c (message_body_contains): Perform a regex
	match on the contents of messages.  This wont quite work yet as
	message contents are encoded when written to a stream.
	(build_match_regex): Converts a number of strings into a regex
	matching pattern, escaping special chars.
	(match_message): match a single message from a folder, by uid.
	Slow.
	(search_body_contains): Changed to support matching where no index
	is supplied.  Matches are performed by retrieving message
	contents, etc.
	() WTF?  camel should not be including any widget headers.

	* providers/mbox/camel-mbox-folder.c (camel_mbox_folder_new):
	Added flags argument.
	(mbox_refresh_info): Changed into a NOP, the refresh info code
	moved into the new function.
	(camel_mbox_folder_new): If we have an index requested, build one,
	otherwise, remove an old one, or just dont do anything.

	* providers/mbox/camel-mbox-store.c (get_folder): Changed create
	to flags, changed code to suit.

	* camel-store.c (camel_store_get_folder): Changed create to flags.
	(get_folder_internal): And here.
	(get_folder): And here too.

	* camel-store.h (camel_store_get_folder): Change the create
	argument to be a flags argument.

svn path=/trunk/; revision=5978
2000-10-18 06:11:54 +00:00
aa670b3306 Plug mem leaks.
svn path=/trunk/; revision=4854
2000-08-16 18:33:20 +00:00
40eea3692e Fixed some warnings.
2000-08-10  Christopher James Lahey  <clahey@helixcode.com>

	* camel-folder-search.c, camel-folder-summary.c, camel-medium.c,
	camel-mime-filter-charset.c, camel-mime-filter.c,
	camel-mime-filter.h, camel-mime-message.c, camel-mime-parser.c,
	camel-mime-part-utils.c, camel-mime-part.c, camel-mime-utils.c,
	camel-movemail.c, camel-multipart.c, camel-object.c,
	camel-stream-mem.c, providers/mbox/camel-mbox-folder.c,
	providers/mbox/camel-mbox-summary.c,
	providers/mh/camel-mh-folder.c,
	providers/smtp/camel-smtp-transport.c: Fixed some warnings.

svn path=/trunk/; revision=4719
2000-08-11 02:57:11 +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