aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-object.c
Commit message (Collapse)AuthorAgeFilesLines
* ** See bug #56464.Not Zed2004-04-061-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | 2004-04-06 Not Zed <NotZed@Ximian.com> ** See bug #56464. * camel-folder.c (camel_folder_transfer_messages_to): do not lock the source here. (transfer_message_to): call the main entry point for get message and append message. ** See bug #56050. * camel-vee-store.c (vee_delete_folder): delete the state file if it exists. * camel-object.c (camel_object_state_write): create the parent dir if we need to. Also spit a warning if we fail in the end. * camel-vee-folder.c (camel_vee_folder_new): set the persistent state file location. (vee_sync): write the state file when we sync. svn path=/trunk/; revision=25331
* use object_bag_peek instead of _get, since we dont want to clash/wait forNot Zed2004-03-291-0/+32
| | | | | | | | | | | | | | | 2004-03-29 Not Zed <NotZed@Ximian.com> * providers/imap/camel-imap-store.c (get_folder_counts): use object_bag_peek instead of _get, since we dont want to clash/wait for reservations. More #56045 related fixes. (get_folder_counts): revert the lookup/hashtable stuff for the folder, and use object_bag_peek. * camel-object.c (camel_object_bag_peek): new method to get an object bag entry without worrying about if its reserved or not. svn path=/trunk/; revision=25220
* Sanity check that count is <1024 and also use g_try_malloc so that we canJeffrey Stedfast2004-03-121-3/+5
| | | | | | | | | | 2004-03-11 Jeffrey Stedfast <fejj@ximian.com> * camel-object.c (cobject_state_read): Sanity check that count is <1024 and also use g_try_malloc so that we can recover if malloc fails. svn path=/trunk/; revision=25036
* changed order around, first try to delete and only remove from the objectNot Zed2004-02-041-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 2004-02-04 Not Zed <NotZed@Ximian.com> * camel-store.c (camel_store_delete_folder): changed order around, first try to delete and only remove from the object bag if the delete worked. If vjunk/vtrash enabled, don't allow those to be deleted. (cs_delete_cached_folder): helper to delete the folder if its in the cache, remove it from trash/junk, etc. (camel_store_unsubscribe_folder): changed similarly to delete_folder. * camel-vee-store.c (vee_delete_folder): dont do any trash/junk processing anymore. 2004-02-03 Not Zed <NotZed@Ximian.com> * camel-store.c: use the folders object bag to manage the trash folder and junk folders. Remove the init_trash and init_junk stuff, just use get_trash and get_junk to mean the same thing. Get rid of the hacked up vjunk and vtrash "uri" stuff too. * camel-object.c (camel_object_bag_add): null out the pair->func, otherwise we get an uninitalised memory read during unhook event. svn path=/trunk/; revision=24603
* added a doc comment.Not Zed2004-01-291-1/+11
| | | | | | | | | | | | | | | | 2004-01-29 Not Zed <NotZed@Ximian.com> * camel-object.c (camel_object_bag_rekey): added a doc comment. ** See bug #53520. * camel-session.c (get_service): free the url once done, it now gets copied by the service. * camel-service.c (construct): copy the url that comes in, don't just '0Wn34z' it. clena up exception handling too. svn path=/trunk/; revision=24513
* output scan->name and scan->value for writing metadata, rather thanNot Zed2004-01-291-2/+2
| | | | | | | | | | 2004-01-29 Not Zed <NotZed@Ximian.com> * camel-object.c (cobject_state_write): output scan->name and scan->value for writing metadata, rather than meta->name/value which just duplicates the last entry, related to #53195. svn path=/trunk/; revision=24510
* ** See bug #53373.Not Zed2004-01-271-23/+45
| | | | | | | | | | | | | 2004-01-27 Not Zed <NotZed@Ximian.com> ** See bug #53373. * camel-store.c (camel_store_rename_folder): use object_bag_rekey to rename the object. object_bag use was broken. * camel-object.c (camel_object_bag_rekey): new api to atomically re-key svn path=/trunk/; revision=24458
* ** See bug #52996.Not Zed2004-01-211-5/+59
| | | | | | | | | | | | | | | | | | | | | | 2004-01-21 Not Zed <NotZed@Ximian.com> ** See bug #52996. * camel-data-cache.c (camel_data_cache_add): put a do-loop around the object_bag_reserve stuff, otherwise we can add/abort out of sync (i.e. when object_bag_reserve returned a pointer we mustn't call add/abort). * camel-object.c (camel_object_bag_*): Added some inline doco. ~ ~ ~ ~ ~ ~ svn path=/trunk/; revision=24339
* added some hook debug h(x)Michael Zucci2004-01-161-0/+7
| | | | svn path=/trunk/; revision=24267
* ** See bug #52881.Not Zed2004-01-151-39/+115
| | | | | | | | | | | | | | | | | | | 2004-01-15 Not Zed <NotZed@Ximian.com> ** See bug #52881. * camel-object.c (camel_object_bag*): Support reserving different keys from the same thread. Oh the pain. * camel-vee-store.c (vee_get_folder_info): implement child flags properly. Changed to build tree itself rather than calling camel_folder_info_build. (vee_get_folder): if we're adding a folder with dummy parents, create and add the dummy parent folders too (as real folder objects). We are the only owner of the ref, so this sort of leaks the folder, but they're small. svn path=/trunk/; revision=24233
* Merge new-ui-branch into the trunk.Ettore Perazzoli2003-10-221-0/+9
| | | | svn path=/trunk/; revision=22966
* removed debug printfs.Not Zed2003-08-301-12/+0
| | | | | | | | | | | 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
* implement PERSISTENT_PROPERTIES, for index mode.Not Zed2003-08-281-1/+544
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-66/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Lets try this again. We don't actually want to free the key here, becauseJeffrey Stedfast2003-05-231-12/+1
| | | | | | | | | | | 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
* Create a second GPtrArray for the keys. We don't want to useJeffrey Stedfast2003-05-211-2/+12
| | | | | | | | | | 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
* ** Should fix #41629, #41448, et al.Not Zed2003-04-231-12/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Ignore whether or not the bag is currently reserved. We'll miss the newNot Zed2003-03-261-17/+2
| | | | | | | | | | 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
* removed, it was double-freeing the key. (save_object): Just save theNot Zed2003-03-121-11/+10
| | | | | | | | | | | | | | | 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
* Init bag->owner to 0.Not Zed2003-02-051-63/+66
| | | | | | | | | | | | | | 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
* fix header include order.Not Zed2003-01-131-2/+6
| | | | | | | | | | | | | | 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
* Use a bag instead of a hashtable to track the cache streams.Not Zed2002-12-091-12/+295
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Take a void object arg. (camel_object_remove_event): "Not Zed2002-07-031-8/+12
| | | | | | | | | | | | 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
* Remove the CONF_DEFAULT_PATH entry, as this is handled by the url configNot Zed2002-06-061-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* setup/free the mech string.Not Zed2002-06-031-9/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix a crash in a g_warning.Dan Winship2002-05-081-4/+3
| | | | | | | * camel-object.c (camel_object_class_cast): Fix a crash in a g_warning. svn path=/trunk/; revision=16705
* Check for LOGIN xxxx as well if debug is on, so we dont print passwords toNot Zed2002-05-071-698/+567
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* cast the key argument to g_hash_table_insert to a gpointer to avoid compiler ↵Jeffrey Stedfast2001-12-141-2/+2
| | | | | | warnings svn path=/trunk/; revision=15023
* Keep a name-to-type hash so that we can make sure that the type has notJeffrey Stedfast2001-12-141-5/+15
| | | | | | | | | | | | | 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
* Fixing the license text.Ettore Perazzoli2001-10-281-1/+0
| | | | svn path=/trunk/; revision=14212
* 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 CAMEL_DEBUG is defined, print some useful ref/unref info.Jeffrey Stedfast2001-10-171-0/+8
| | | | | | | | | | | | | | | | 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
* Remove now unused 'recents' array/freeing func.32001-10-041-6/+9
| | | | | | | | | | | | | | 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
* Change the lock to a recursive e-mutex. (camel_object_hook_event):22001-10-031-136/+72
| | | | | | | | | | | | | | | | | | | | | 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
* Fill the finalised data with nonsense, rather than 0's - more easily72001-09-281-27/+204
| | | | | | | | | | | | | | | | | 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
* Make the locking more fine-grained on destruction; specifically, don'tPeter Williams2001-08-291-0/+6
| | | | | | | | | | 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
* Properly determine match type to pass to header_match.Not Zed2001-08-081-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Make sure that after the finalization event has happened and thePeter Williams2001-07-061-0/+8
| | | | | | | | | | 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
* Move this before the camel_vee_folder_remove_folder because that functionPeter Williams2001-07-061-26/+11
| | | | | | | | | | | | | | | | | | | | 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
* Update the copyrights, replacing Helix Code with Ximian andEttore Perazzoli2001-06-231-2/+2
| | | | | | helixcode.com with ximian.com all over the place. svn path=/trunk/; revision=10440
* Applied jacob's patches for e-poolv stuff.Not Zed2001-04-261-0/+2
| | | | | | | | 2001-04-26 Not Zed <NotZed@Ximian.com> * Applied jacob's patches for e-poolv stuff. svn path=/trunk/; revision=9571
* Plug leaks.Dan Winship2001-04-141-4/+11
| | | | | | | | | | | | | | | | * 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
* Big header cleanups and nntp compile fixKjartan Maraas2001-03-301-0/+4
| | | | svn path=/trunk/; revision=9024
* No, we must not encode the headers here. These interfaces ARE rawNot Zed2000-10-181-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Plug mem leaks.Peter Williams2000-08-171-0/+1
| | | | svn path=/trunk/; revision=4854
* Fixed some warnings.Christopher James Lahey2000-08-111-1/+1
| | | | | | | | | | | | | | | | 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
* Merge with camel-async.Peter Williams2000-08-111-18/+931
| | | | svn path=/trunk/; revision=4687
* Make camel not leak like a sieve.Dan Winship2000-05-081-0/+57
* 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