Commit Graph

19 Commits

Author SHA1 Message Date
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
be9db81541 Like camel_url_encode, but works directly on an existing GString.
* camel-url.c (append_url_encoded): Like camel_url_encode, but
	works directly on an existing GString.
	(camel_url_to_string, output_param): Use it.
	(camel_url_encode): Likewise. Remove "escape_unsafe" arg since the
	"unsafe" chars are the ones that should *always* be escaped, and
	the places we were passing FALSE were wrong.
	(camel_url_decode): replace with a new version

	* camel-file-utils.c (camel_file_util_safe_filename): Remove extra
	arg to camel_url_encode.

	* tests/misc/url.c (main): Add tests of basic URL parsing and
	unparsing

svn path=/trunk/; revision=20545
2003-03-27 15:37:47 +00:00
5e144756c9 Lots of changes, too numerous to list. Changed to use
2002-09-04  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store.c,
	providers/imap/camel-imap-folder.c: Lots of changes, too numerous
	to list.  Changed to use camel-imap-store-summary to cache list
	requests.  Changed to use a canonicalised url path with / instead
	of per-store directory separator.  Indirects folder name so
	invalid folder names can still be accessed.  Summary now stored in
	a new expandable format in .ev-store-summary.

2002-08-28  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store.c (construct): Load store
	summary if it exists.
	(can_work_offline): Just see if we have any folders to say whether
	we can work offline or not.  Should probably always just return
	true.

2002-08-27  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store-summary.[ch]: New files to
	handle offline definition of folders, etc.

	* camel-url.h: Define CamelURL to be struct _CamelURL rather than
	anonymous struct.

	* camel-store-summary.[ch]: a few api tweaks.  Also, the summary
	header is versioned separately at each level, so that version
	upgrades can be handled separately.  Renamed FolderInfo ->
	StoreInfo to avoid namespace with current FolderInfo code.  This
	should be reversed when the FolderInfo code is rationalised to
	this new base.

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

	* providers/imap/camel-imap-command.c (camel_imap_command): domt
	encode folder name.

	* providers/imap/camel-imap-folder.c (do_copy): dont encode folder
	name.
	(do_append): dont encode folder name.

	* providers/imap/camel-imap-store.c (get_folder_status): don
	encode folder name in imap request.
	(get_folder_online): here too for creating folder.
	(rename_folder): Assume the incoming 'new name' is a utf8 path,
	whereas the 'old name' is as from get folder info (raw).
	(create_folder): Dont encode parent_name, assume its the raw
	thing.

2002-08-22  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store.c (get_folder_online): Select
	based on unconverted name.
	(imap_build_folder_info): New function to create a folderinfo
	properly based on raw name.
	(subscribe_folder): Use above helper.
	(imap_folder_effectively_unsubscribed): Same here.
	(imap_forget_folder): Same here.
	(get_one_folder_offline): "

2002-08-21  Not Zed  <NotZed@Ximian.com>

	* providers/imap/camel-imap-store.c
	(parse_list_response_as_folder_info): Setup path properly, as
	decoded path with / separator.  Setup full_name as non-decoded raw
	name.  Keep url as decoded path but with server separator
	... (ick).
	(create_folder): Dont call build_path anymore, get_folders() does
	it for us.
	(subscribe_folder): Build the path ourself.
	(imap_folder_effectively_unsubscribed): Same here.
	(get_subscribed_folders): list using %S not %F, we're using the
	raw server provided name directly.
	(subscribe_folder): As above, for SUBSCRIBE.
	(unsubscribe_folder): Same here.
	(delete_folder): Same.
	(rename_folder_info): Same here for source name.
	(rename_folder): And here?
	(get_folders_online): Amd here.

	* providers/imap/camel-imap-utils.c:
	(imap_parse_list_response): Dont decode the mailbox.

	* camel-utf8.[ch]: some new utf8 & utf7 utilities.

	* providers/imap/camel-imap-utils.c (imap_mailbox_encode):
	(imap_mailbox_decode): use camel_utf7/8* functions instead.
	: Add config.h and alloca.h headers.

svn path=/trunk/; revision=17943
2002-09-03 14:55:03 +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
b49ab03540 New #define, and there was much rejoicing. Rah.
2001-07-24  Jeffrey Stedfast  <fejj@ximian.com>

	* camel-url.h (CAMEL_URL_HIDE_ALL): New #define, and there was
	much rejoicing. Rah.

svn path=/trunk/; revision=11351
2001-07-24 19:55:46 +00:00
9d51a76fa1 constify args
* camel-url.c (camel_url_encode): constify args

svn path=/trunk/; revision=10503
2001-06-26 16:50:46 +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
bd52985962 change "gboolean show_passwd" to "guint32 flags".
* camel-url.c (camel_url_to_string): change "gboolean show_passwd"
	to "guint32 flags".

	* tests/misc/url.c (main): Update calls to camel_url_to_string

	* providers/imap/camel-imap-store.c (construct): Call
	camel_url_to_string with flags to hide password, authtype, and
	params to create the base_url.
	(etc): Update for the fact that the base_url no longer has the "/"
	at the end.

	* camel-service.c (construct): Update calls to camel_url_to_string
	(pass CAMEL_URL_HIDE_PASSWORD)

svn path=/trunk/; revision=9014
2001-03-29 17:34:00 +00:00
c92c8b1fe4 Add missing accessor.
* camel-url.c (camel_url_get_param): Add missing accessor.

svn path=/trunk/; revision=8943
2001-03-26 14:05:44 +00:00
a0b95ac74d eh, changed my mind, put the exception back in camel_url_new()
svn path=/trunk/; revision=8934
2001-03-25 23:04:14 +00:00
182c699c39 New URL parser with full RFC1808 relative URL support. Yum.
* camel-url.c (camel_url_new_with_base): New URL parser with full
	RFC1808 relative URL support. Yum.
	(camel_url_new): Wrapper around camel_url_new_with_base now.
	Removed the CamelException since no one ever used it...

	* tests/Makefile.am: add misc subdir

	* tests/misc/url.c: relative URL test cases from RFC 1808

	* camel-session.c (camel_session_get_service): Update
	camel_url_new call.

svn path=/trunk/; revision=8933
2001-03-25 22:55:27 +00:00
0d54c48352 Kill off a long-hated Camel kludge: "empty" URLs and
query_auth_types_generic.

	* camel-url.c: Remove "empty" from CamelURL.
	(camel_url_new): No longer set it.
	(camel_url_to_string): Treat "" as equivalent to NULL for
	authmech. (Unrelated change, but it simplifies some stuff with the
	new config dialog.)

	* camel-service.c (camel_service_new): Remove url->empty check: if
	the URL isn't valid, we don't create the service.
	(camel_service_query_auth_types): No longer need to switch between
	generic and connected variants.

	* providers/smtp/camel-smtp-transport.c (query_auth_types):
	* providers/pop3/camel-pop3-store.c (query_auth_types):
	* providers/nntp/camel-nntp-store.c (nntp_store_query_auth_types):
	* providers/imap/camel-imap-store.c (query_auth_types):
	* camel-remote-store.c (remote_query_auth_types): Remove generic
	version, rename connected version.

svn path=/trunk/; revision=7327
2001-01-09 19:27:27 +00:00
a7943ce5a4 Only retry another uid if we had a name clash, otherwise fail.
2000-08-07  Not Zed  <NotZed@HelixCode.com>

        * providers/mh/camel-mh-folder.c (mh_append_message): Only retry
        another uid if we had a name clash, otherwise fail.

2000-08-04  Not Zed  <NotZed@HelixCode.com>

        * camel-url.c (camel_url_set_protocol):
        (camel_url_set_host):
        (camel_url_set_path):
        (camel_url_set_port): Url editing functions.

2000-08-02  Not Zed  <NotZed@HelixCode.com>

        * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Expunge
        from the end, so the index isn't messed up when you remove a
        message.

        * providers/mh/camel-mh-folder.c (mh_append_message): Fix a bug
        where it would never open an output file/uid.

        * providers/mbox/camel-mbox-store.c (rename_folder):
        Implementation for mbox as well.

        * camel-store.c (camel_store_rename_folder): New method to rename folders.
        (rename_folder): Default implementation.

        * providers/mh/camel-mh-store.c (delete_folder): Implement this.
        (rename_folder): Implement a rename operation.

svn path=/trunk/; revision=4590
2000-08-08 03:42:47 +00:00
631dda8ae0 Init filter_from to NULL, for exception case. (mbox_get_message_by_uid):
2000-05-30  Not Zed  <NotZed@HelixCode.com>

        * providers/mbox/camel-mbox-folder.c (mbox_append_message): Init
        filter_from to NULL, for exception case.
        (mbox_get_message_by_uid): Cast off_t to long int for diagnostics.

        * camel-url.c (camel_url_hash): Hash funciton for using camel
        url's as hash keys.
        (camel_url_equal): equal function for same.

        * camel-session.c (camel_session_finalise): Free cached services.
        (camel_session_init): Init service cache.
        (service_cache_remove): destroy callback to remove a service from
        the cache.

        * camel-store.c (get_folder_internal): Remove the extra ref of the
        folder.  That seems the right behaviour ...?
        (camel_store_get_type): Doh, actually call store init, so the
        cache works.
        (cache_folder): strdup the folder name!  no wonder it never found
        it again.

svn path=/trunk/; revision=3298
2000-05-30 22:35:40 +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
ba6b73fe56 New function to replace camel_provider_scan. Returns a list of either (a)
* camel-session.c (camel_session_list_providers): New function to
        replace camel_provider_scan. Returns a list of either (a) all
        currently-loaded providers, or (b) all available providers.

        * camel-url.[ch]: Add an "empty" flag to CamelURL (indicating that
        it contains only a protocol).

        * camel-service.c (camel_service_query_auth_types): Make this take
        a CamelException (since it may have to try to connect to the
        server, and it might not able to.)

        * providers/pop3/camel-pop3-store.c: add KPOP (Kerberized POP)
        support. This is mostly so I have two kinds of authmech to play
        with instead of just one. (But it does actually work.)

        * providers/smtp/camel-smtp-transport.c (query_auth_types): update
        for prototype change, but disable the functionality, since it
        doesn't really support any auth types yet.
        (camel_smtp_transport_get_type): add an object init function to
        set the service url_flags.

svn path=/trunk/; revision=2797
2000-05-04 15:23:43 +00:00
e5d2b62bf6 expose these routines.
* camel-url.[ch] (camel_url_encode, camel_url_decode): expose
	these routines.

svn path=/trunk/; revision=2661
2000-04-27 19:00:04 +00:00
2e4a546307 the URL RFC says the port must be numeric, so we don't want to do
* g_url_new really wanted to take a CamelException. So, rename
	Gurl to CamelURL, g_url_* to camel_url_* (with camel_url_new
	taking an exception), and url-util.[ch] to camel-url.[ch]. Also
	force url->port to be numeric and remove camel_service_getport. (I
	was confused before: the URL RFC says the port must be numeric, so
	we don't want to do getportbyname.)

svn path=/trunk/; revision=2300
2000-04-06 03:52:39 +00:00