Commit Graph

1013 Commits

Author SHA1 Message Date
f70597c49e change a bunch of IS_CAMEL_* macros to CAMEL_IS_*
* Namespace cleanup: change a bunch of IS_CAMEL_* macros to
	CAMEL_IS_*

svn path=/trunk/; revision=6972
2000-12-13 19:56:34 +00:00
bd99ceb9ff add #include <sys/types.h> for freebsd.
2000-12-13  Chris Toshok  <toshok@helixcode.com>

	* providers/imap/camel-imap-auth.c: add #include <sys/types.h> for
	freebsd.

svn path=/trunk/; revision=6971
2000-12-13 19:40:53 +00:00
7b80470152 Added #ifndef NO_WARNINGS around a #warning. Added (void) to the prototype
2000-12-12  Christopher James Lahey  <clahey@helixcode.com>

	* camel-folder-summary.c, camel-folder-summary.h: Added #ifndef
	NO_WARNINGS around a #warning.  Added (void) to the prototype and
	declaration of camel_message_info_new.

	* camel-mime-message.h: Added an include for
	camel-mime-filter-bestenc.h.  Added a prototype for
	camel_mime_message_set_best_encoding.  Reformatted prototypes to
	line up.

	* camel-mime-parser.c: Added #if d(!)0 around the states string
	lookup table since it's only used in debugging output.

	* camel-seekable-substream.c (stream_flush): Added a cast.

	* providers/imap/camel-imap-auth.c: Added #include <netinet/in.h>.

	* providers/imap/camel-imap-folder.c (imap_refresh_info): Made uid
	and flags const to fix warnings here.

	* providers/imap/camel-imap-store.c (get_folder_info): Made p
	const to fix warnings here.

svn path=/trunk/; revision=6954
2000-12-12 23:31:40 +00:00
6621536150 Add missing .h file. (From campd.)
* tests/lib/Makefile.am: Add missing .h file. (From campd.)

svn path=/trunk/; revision=6951
2000-12-12 23:10:39 +00:00
1c95a1e985 Remove use of linewrap filter. Headers are now wrapped. encode_8bit
* providers/smtp/camel-smtp-transport.c (smtp_data): Remove use of
	linewrap filter.  Headers are now wrapped.  encode_8bit already
	enforces a 998 octet line limit.
	(smtp_data): Also fixed a memleak, we always have to unref our own
	copy of the filters.  We also dont need to remove them manually,
	so dont bother.  The type's an int too ...

	* camel-internet-address.c (internet_unformat): When scanning past
	quotes, remove them also.
	(camel_internet_address_format_address): If the name contains "'s,
	or ','s then strip and quotes and wrap the whole lot in one set of
	quotes.

	* Makefile.am (noinst_HEADERS): We dont want to install
	camel-charset-map-private.h, ever.  There are probably other
	similar files ..?

	* camel-mime-part.c (write_to_stream): Fold header lines
	appropriately as we're writing them out.

	* camel-mime-utils.c (header_fold): Add a new argument, headerlen,
	tells it how long the associated header token is.
	(header_fold): Also,k check to see if we need to fold first, using
	a better algorithm, and also accept already-folded lines, and
	re-process accordingly.
	(rfc2047_decode_word): Add a little buffer space to iconv output
	for shifting overheads?
	(rfc2047_decode_word): finish the iconv with a null call, to flush
	shift state, etc.
	(rfc2047_encode_word): Attempt to break up long words into
	appropriately sized, independent, chunks.  See rfc2047, section 2.
	(header_decode_mailbox): Dont add in extra spaces into the output
	if we are decoding adjacent encoded words.  We can only guess this
	case, as some broken mailers put encoded words inside quoted
	words.
	(header_encode_phrase): Dont merge words if they are going to end
	up too long.  Also change back ot only merge consecutive words of
	the same type.  e.g. 'foo. blah fum.' -> "foo." blah "fum."  or
	'iam an. idiot' -> iam "an." idiot

svn path=/trunk/; revision=6902
2000-12-11 11:40:15 +00:00
154f1347bd Hrm, we actually want to call set_header, not add_header here, probably
2000-12-11  Not Zed  <NotZed@HelixCode.com>

        * camel-medium.c (camel_medium_set_header): Hrm, we actually want
        to call set_header, not add_header here, probably explains some
        duplicate X-Evolution headers i was trying to track down.  Also
        changed the api to handle a NULL value == remove the header.

        * providers/local/camel-maildir-summary.c
        (maildir_summary_decode_x_evolution): Always return error, we dont
        use x-evolution for maildir.
        (maildir_summary_encode_x_evolution): Always return a NULL string,
        likewise.
        (maildir_summary_add): Hook in here, since the _new function
        doesn't have access to any flags from the caller.  If we have
        flags, then update the filename again.  Not ideal, but should
        work.

svn path=/trunk/; revision=6897
2000-12-11 04:09:03 +00:00
d75cbc249d oops
svn path=/trunk/; revision=6864
2000-12-08 18:06:19 +00:00
683427c0bc Shush
svn path=/trunk/; revision=6863
2000-12-08 17:55:42 +00:00
d0aff6462a Remove test3 from build until the files show up
2000-12-08  JP Rosevear  <jpr@helixcode.com>

	* tests/message/Makefile.am: Remove test3 from build until the files
	show up

2000-12-08  JP Rosevear  <jpr@helixcode.com>

	* Makefile.am: Remove files from extra_dist since they are already
	listed

svn path=/trunk/; revision=6861
2000-12-08 17:52:28 +00:00
e2b2aeceea Change the sign of the default date offset when none is supplied.
2000-12-09  Not Zed  <NotZed@HelixCode.com>

	* camel-mime-message.c (camel_mime_message_set_date): Change the
	sign of the default date offset when none is supplied.
	(camel_mime_message_set_date): Also do dst if its dst (forward 1
	hour).  Fixes #928 + some.

svn path=/trunk/; revision=6860
2000-12-08 14:22:36 +00:00
a791b442b5 Change line no format so that emacs can detect it.
2000-12-06  Not Zed  <NotZed@HelixCode.com>

        * tests/lib/camel-test.h (check): Change line no format so that
        emacs can detect it.

svn path=/trunk/; revision=6848
2000-12-07 22:28:59 +00:00
3bd0a70d22 We want to bitwise-or the server and cached flags here so that we keep the
2000-12-06  Jeffrey Stedfast  <fejj@helixcode.com>

	* providers/imap/camel-imap-folder.c (imap_refresh_info): We want
	to bitwise-or the server and cached flags here so that we keep the
	flags that we have set locally and set any additional flags that a
	parallel connection may have set.

svn path=/trunk/; revision=6834
2000-12-07 02:02:43 +00:00
c6747ac9b4 If the data wrapper fails to be written to the stream, unref it and the
2000-12-05  Jeffrey Stedfast  <fejj@helixcode.com>

	* providers/smtp/camel-smtp-transport.c (smtp_data): If the data
	wrapper fails to be written to the stream, unref it and the
	filters before returning.

svn path=/trunk/; revision=6804
2000-12-05 23:47:50 +00:00
efeeb1bd1f (imap_refresh_info): Fix a really really really dumb bug.
svn path=/trunk/; revision=6801
2000-12-05 22:58:41 +00:00
135baf56e4 use BODY.PEEK[] rather than RFC822, so the message doesn't get marked as
* providers/imap/camel-imap-folder.c (imap_get_message): use
	BODY.PEEK[] rather than RFC822, so the message doesn't get marked
	as \Seen.

svn path=/trunk/; revision=6800
2000-12-05 22:20:10 +00:00
8d4e508f40 Fix the check for "flags aren't actually changing".
* providers/imap/camel-imap-folder.c (imap_set_message_flags): Fix
	the check for "flags aren't actually changing".

	* providers/local/camel-local-folder.c (local_set_message_flags,
	local_set_message_user_flag, local_set_message_user_tag): Don't
	emit message_changed unless the flags actually changed.

	* providers/nntp/camel-nntp-folder.c
	(nntp_folder_set_message_flags): Don't emit message_changed unless
	the flags actually changed. Fix the check for marked as seen.

svn path=/trunk/; revision=6797
2000-12-05 16:46:15 +00:00
e57a50f532 Stream testing stuff.
svn path=/trunk/; revision=6792
2000-12-05 12:07:01 +00:00
a8d65409de stream_flush does make sense for a substream afterall (if you have a
2000-12-05  Not Zed  <NotZed@HelixCode.com>

        * camel-seekable-substream.c (stream_flush): stream_flush does
        make sense for a substream afterall (if you have a stream_write).
        (stream_write): Implement this.
        (stream_seek): Change the STREAM_END behaviour to be more sane.
        if bounded go from the end of the bound, if unbounded, go from the
        end of the parent stream.

        * camel-stream-mem.c (stream_read): Dont return error if reading
        past the end of data, just return 0.

        * camel-stream-fs.c (camel_stream_fs_init): Initialise the stream
        to be unbound.
        (stream_seek): Fix the logic when seeking from the end of an
        unbounded stream.
        (camel_stream_fs_new_with_fd): If the fd is invalid (-1), then
        return NULL immediately.
        (stream_seek): Range check a SEEK_END so it fits within
        bound_start.

2000-12-01  Not Zed  <NotZed@HelixCode.com>

        * tests/lib/folders.c (test_folder_basic): New test to perform
        basic store operations on folders (taken from folders/test1).
        (test_folder_message_ops): Tkane the guts out of folders/test2.

svn path=/trunk/; revision=6790
2000-12-05 11:50:32 +00:00
c75f7dbc07 i18n-ize exception strings. (get_name): And here. (_send_to): Here too.
2000-12-04  Jeffrey Stedfast  <fejj@helixcode.com>

	* providers/smtp/camel-smtp-transport.c (smtp_connect): i18n-ize
	exception strings.
	(get_name): And here.
	(_send_to): Here too.
	(smtp_helo): And here and there...
	(smtp_mail): And around the square...
	(smtp_rcpt): Saying catch me if you can...
	(smtp_data): And here three.
	(smtp_rset): And here.
	(smtp_quit): And finally here.

svn path=/trunk/; revision=6785
2000-12-04 22:37:45 +00:00
a2391a3e11 added some imap tests, tho they dont get far yet and dont
recover automatically.

svn path=/trunk/; revision=6772
2000-12-04 12:59:01 +00:00
787d1833c0 Added system_flag to CamelFolderSearchClass
2000-12-01  Jeffrey Stedfast  <fejj@helixcode.com>

	* camel-folder-search.h: Added system_flag to CamelFolderSearchClass

	* camel-folder-summary.c (camel_system_flag_get): Convenience
	function to return whether or not a flag is set using a string as
	the flag name.
	(camel_system_flag): Return the integer value of the flag string.

	* camel-folder-search.c (search_system_flag): New ESExp callback
	for allowing vfoldering on CamelMessageInfo flags.

svn path=/trunk/; revision=6763
2000-12-02 03:55:18 +00:00
dfee15e65a Don't g_return_if_fail if the service is already disconnected. Just
* camel-service.c (camel_service_disconnect): Don't
	g_return_if_fail if the service is already disconnected. Just
	return.

	* providers/pop3/camel-pop3-store.c (pop3_try_authenticate):
	Return FALSE (don't try again) if we get CAMEL_POP3_FAIL.
	(pop3_connect): If we don't succeed, disconnect.

svn path=/trunk/; revision=6756
2000-12-01 17:32:42 +00:00
65e948466d Fix a possible bug where 'name' could be uninitialized.
2000-11-30  Jeffrey Stedfast  <fejj@helixcode.com>

	* providers/imap/camel-imap-store.c
	(parse_list_response_as_folder_info): Fix a possible bug where
	'name' could be uninitialized.

	* camel-folder-summary.c (camel_message_info_new): New convenience
	function, doesn't do much but it sure makes code cleaner to read.
	(camel_message_info_new_from_header): This one makes my life heaven.

svn path=/trunk/; revision=6752
2000-12-01 04:25:43 +00:00
c1d2ec0123 New convenience function, doesn't do much but it sure makes code cleaner
2000-11-30  Jeffrey Stedfast  <fejj@helixcode.com>

	* camel-folder-summary.c (camel_message_info_new): New convenience
	function, doesn't do much but it sure makes code cleaner to read.
	(camel_message_info_new_from_header): This one makes my life heaven.

svn path=/trunk/; revision=6749
2000-12-01 00:34:33 +00:00
2f1d55bd73 Handle the case where the summary failed to load - clear the summary and
2000-11-30  Jeffrey Stedfast  <fejj@helixcode.com>

	* providers/imap/camel-imap-summary.c (camel_imap_summary_new):
	Handle the case where the summary failed to load - clear the
	summary and then set the dirty bit so that it is sure to save
	later. Is this the right fix?

svn path=/trunk/; revision=6743
2000-11-30 21:15:09 +00:00
7547b5166d Remove unused variable.
* camel-exception.c (camel_exception_setv): Remove unused
	variable.

svn path=/trunk/; revision=6742
2000-11-30 20:53:55 +00:00
1fbfdbd43e Remove assertion that content is there, when it no longer can be.
2000-11-30  Not Zed  <NotZed@HelixCode.com>

	* providers/local/camel-mbox-folder.c (mbox_get_message): Remove
	assertion that content is there, when it no longer can be.

	* camel-folder-summary.h: Removed pos/bodypos/endpos from
	camelmeessagecontentinfo.
	(CamelMessageFlags): Added an attachments flag.

	* providers/local/camel-local-summary.h: Added load virtual
	function.

	* tests/lib/folders.c (test_message_info): Accessors.
	(test_folder_message): "

	* camel-folder-thread.c (get_root_subject): Fix accessors.
	(dump_tree_rec): "

	* camel-folder-search.c (camel_folder_search_execute_expression):
	Accessors for messageinfo.
	(search_match_all): "
	(search_header_contains): "
	(search_header_contains): "
	(search_body_contains): "
	(camel_folder_search_execute_expression): Use mepool_strdup.

	* providers/local/camel-mbox-summary.c (summary_update): Accessors
	for messageinfo.
	(mbox_summary_sync_full): "

	* providers/local/camel-mh-summary.c (remove_summary): Accessors
	for messageinfo.
	(mh_summary_check): "
	(mh_summary_sync_message): "
	(mh_summary_sync): "

	* providers/local/camel-mh-folder.c (mh_append_message): Use
	accessor for uid.

	* providers/local/camel-local-summary.c
	(local_summary_decode_x_evolution): Use accessor to uid.
	(local_summary_encode_x_evolution): Likewise.
	(message_info_new): And here.
	(camel_local_summary_load): Call virtual load function.
	(local_summary_load): Default load function, load summary.
	(camel_local_summary_load): Check file exists before trying to
	load.
	(camel_local_summary_construct): Turn off building content info!
	(CAMEL_LOCAL_SUMMARY_VERSION): Bump, since we dont build content
	info anymore.
	(camel_local_summary_load): After a successful load/check, do a
	save too so we dont have to go through it again randomly.

	* providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Use
	accessors for messageinfo.

	* providers/nntp/camel-nntp-folder.c (nntp_folder_get_uids): Use
	accessors for uid.

	* providers/imap/camel-imap-folder.c (imap_refresh_info): Use
	accessor for uid.
	(imap_sync): Likewise.
	(imap_get_uids): Likewise.
	(imap_update_summary): And here.

	* providers/vee/camel-vee-folder.c (vfolder_remove_match): Use
	accessor for uid.
	(vfolder_add_match): Handle estrv stuff.
	(vfolder_change_match): Accessor for uid.
	(get_real_message): "
	(vee_get_uids): "
	(vee_folder_build): " + estrv.
	(vee_folder_build_folder): "

	* providers/local/camel-maildir-folder.c (maildir_append_message):
	Use acccessors for uid's.
	(maildir_get_message): Here too.

	* providers/local/camel-maildir-summary.c
	(camel_maildir_summary_init): Setup the string count for us.
	(message_info_new): Access the string array directly.
	(message_info_free): No need to free string if using array.
	(camel_maildir_summary_info_to_name): Use accessor to get to uid.
	(remove_summary): And here.
	(maildir_summary_check): Likewise.
	(maildir_summary_sync): And here.
	(maildir_summary_load): Load up a cache of uid->filename mappings
	before loading the actual summary file.  This saves us having to
	waste the diskspace storing the filenames in the summary itself,
	and also helps us sync the summary better on load.
	(message_info_load): If we have the load_map setup, and the uid
	exists, then set the filename cache from it, and update the flags
	from the name, incase our summary mismatches it.

	* camel-folder-summary.c (camel_folder_summary_init): Setup string
	count for compressed info record.  An optional compile mode which
	stores all strings for a given messageinfo into a packed array,
	which should save 36-50 bytes/record.
	(camel_folder_summary_info_new): Init the string array.
	(message_info_new): Set the string array items, as required.
	(message_info_load): And here too.
	(message_info_save): Use accessors to get to strings.
	(message_info_free): Free strings as one.
	(camel_message_info_dup_to): Handle packed array case.
	(camel_folder_summary_add): Use accessors.  And pack the strv
	before storing it.
	(summary_assign_uid): New function to assign a unique uid to a
	message, if it doesn't have one.
	(camel_folder_summary_add): Call assign_uid instead of doing it
	ourselves.
	(camel_folder_summary_info_new_from_parser): "
	(camel_folder_summary_info_new_from_message): "
	(camel_folder_summary_encode_string): constify.
	(camel_folder_summary_encode_token): "
	(summary_build_content_info_message): Fix accessors to messageinfo.
	(CAMEL_FOLDER_SUMMARY_VERSION): Bumped, for removal of
	contentinfo->pos data.
	(camel_folder_summary_info_new_from_parser): Calculate the size
	based on the parser position, not the removed contentinfo stuff.
	(camel_folder_summary_info_new_from_message): Remove size stuff.
	(camel_folder_summary_offset_content): Removed, no longer means anything.
	(content_info_new):
	(content_info_load):
	(content_info_save):
	(summary_build_content_info): Remove stuff for contentinfo->pos*.
	(summary_build_content_info): Take a msginfo argument, set
	attachments flag if we find any attachments.
	(summary_build_content_info_message): set attachments flag if we
	find any attachments.
	(camel_folder_summary_info_new_from_parser): Always scan the
	content info, even if we dont save it.
	(camel_folder_summary_info_new_from_message): And here too.
	(summary_build_content_info): Only create the contentinfo stuff if
	we have it turned on, otherwise just parse and discard.
	(summary_build_content_info_message): Likewise.

svn path=/trunk/; revision=6731
2000-11-30 11:05:36 +00:00
a6ee833694 Updated the gtk-doc comment.
2000-11-29  Jeffrey Stedfast  <fejj@helixcode.com>

	* camel-store.c (camel_store_get_folder): Updated the gtk-doc
	comment.

svn path=/trunk/; revision=6725
2000-11-29 21:35:14 +00:00
ac3f575649 Use iconv instead of unicode_iconv.
* camel-mime-utils.c:
	* camel-mime-filter-charset.c: Use iconv instead of unicode_iconv.

svn path=/trunk/; revision=6721
2000-11-29 20:41:08 +00:00
bb04a38e88 Fix some off-by-one-ness.
* providers/imap/camel-imap-command.c (imap_read_untagged): Fix
	some off-by-one-ness.

	* camel-stream-buffer.c (stream_read): Fix another bug found in
	previously-unused code here.

svn path=/trunk/; revision=6718
2000-11-29 20:04:16 +00:00
571a286c62 Builddir != srcdir loving.
svn path=/trunk/; revision=6712
2000-11-29 12:33:21 +00:00
d38a417de3 Add a missed unref.
2000-11-29  Not Zed  <NotZed@HelixCode.com>

	* tests/message/test2.c (main): Add a missed unref.

	* camel-stream-mem.c (camel_stream_mem_set_buffer): We must set
	ourselves as the owner of the byte-array.
	Weird, someone has modified this file (its been reindented), but i
	can't see any changelogs ...

	* tests/lib/messages.c (content_finalise): Fix memleak in tester,
	free byte array when our content object is deleted.

	* camel-folder-search.c (camel_folder_search_finalize): Yeah
	great, so the sexp is a gtk object, not a camel object.  Isn't
	that going to be fun to fix?

	* camel-session.c (camel_session_finalise): Free the storage path.

	* providers/local/camel-local-store.c (camel_local_store_init): If
	store->folders is setup, free it first, then overwrite.  Hmm,
	this seems a bit crappy to me.

	* camel-store.c (camel_store_init): Dont setup store->folders if
	its already setup.

	* camel-exception.c (camel_exception_setv): Removed a memleak.  no
	need to strdup after a strdup_printf!!!

	* camel-address.c (camel_address_finalize): Free the address
	ptrarray, once finished.

	* providers/local/camel-local-folder.c (local_finalize): Make sure
	we dont leave the folder locked on close.
	(local_finalize): Free summary/search.

	* providers/local/camel-mh-summary.c (mh_summary_next_uid_string):
	Small memleak, always free name after using it.

	* camel-mime-part.c (set_content_object): Free txt after setting
	the header.

	* providers/local/camel-maildir-summary.c (maildir_summary_check):
	Fix a memleak, close the dir after scanning new.
	(message_info_free): Added so we can free the filename cached in
	the messageinfo.
	(camel_maildir_summary_finalise): Free the hostname.

	* tests/folder/test[12].c (main): Clear out camel-test before
	starting.

	* providers/local/camel-mbox-summary.c (mbox_summary_sync_quick):
	Because encode_x_evolution folds the line (sigh, because
	encode_param does, unlike every other function in
	camel-mime-utils), unfold the encoded result before comparing.
	(mbox_summary_sync_quick): Another small memleak, free xevnew once
	finished with it.

	* camel-mime-utils.c (header_decode_quoted_string): Removed a
	redundant check for c=0.
	(header_unfold): New function to un-fold headers.

	* providers/local/camel-local-summary.c
	(local_summary_encode_x_evolution): some problems with encoding
	tags, using the wrong output strings.
	(local_summary_encode_x_evolution): We dont need to append a ;
	either, param_list_format_append() will do it for us.
`

svn path=/trunk/; revision=6711
2000-11-29 10:49:05 +00:00
0a68cff31e Shush
svn path=/trunk/; revision=6709
2000-11-29 03:54:10 +00:00
e365109fdc Add USE_FLOCK, USE_FCNTL, USE_FLOCK
2000-11-28  JP Rosevear  <jpr@helixcode.com>

	* acconfig.h: Add USE_FLOCK, USE_FCNTL, USE_FLOCK

	* configure.in: Auto* magic for various camel locking types

2000-11-28  JP Rosevear  <jpr@helixcode.com>

	* camel-lock.c: No longer hard code the enabled lock types

svn path=/trunk/; revision=6703
2000-11-28 22:58:58 +00:00
06a8373541 Don't set exception to g_strerror (errno) when nread == 0, because it
* camel-remote-store.c (remote_recv_line): Don't set exception to
	g_strerror (errno) when nread == 0, because it won't have been
	set.

svn path=/trunk/; revision=6702
2000-11-28 21:27:16 +00:00
1db83e1fb9 Don't try to free things if they haven't been set yet.
* providers/pop3/camel-pop3-folder.c (pop3_finalize): Don't try to
	free things if they haven't been set yet.

svn path=/trunk/; revision=6698
2000-11-28 20:36:46 +00:00
3e0f8b57e4 send NULL so we don't have to clear the exception
svn path=/trunk/; revision=6696
2000-11-28 17:29:40 +00:00
1e21bb6e5c Clear the exception if EHLO fails before trying HELO in the cases where
2000-11-28  Jeffrey Stedfast  <fejj@helixcode.com>

	* providers/smtp/camel-smtp-transport.c (smtp_connect): Clear the
	exception if EHLO fails before trying HELO in the cases where the
	SMTP provider doesn't announce its ESMTPness.

svn path=/trunk/; revision=6695
2000-11-28 17:25:19 +00:00
3998a03ae9 Set the info size's properly, oops!
2000-11-28  Not Zed  <NotZed@HelixCode.com>

	* providers/local/camel-maildir-summary.c
	(camel_maildir_summary_init): Set the info size's properly, oops!

	* tests/lib/folders.[ch]: Folder testing helpers.

	* tests/folder/test2.c: Test basic message ops on folders.

	* tests/folder/test1.c (main): Test basic folder ops on (local)
	stores.

	* providers/local/camel-local-provider.c
	(camel_provider_module_init): Removed some debug.

	* providers/local/camel-maildir-folder.c
	(camel_maildir_folder_class_init): fix parent class.

	* providers/local/camel-mh-folder.c (camel_mh_folder_class_init):
	Fix parent class (damn cut & paste).

	* providers/local/camel-maildir-store.c (get_folder): Call parent
	impl.
	(camel_maildir_store_class_init): Fix parent class setup.
	(delete_folder): Check the folder exists before trying to delete
	it.
	(delete_folder): Try and make the delete operation atomic/rollback
	failures.  e.g. if one directory isn't empty, then create the
	other empty ones back.  Also clear the tmp directory fully first.

	* providers/local/camel-mbox-store.c (get_folder): Call parent
	impl.
	(camel_mbox_store_class_init): parent class is camel_local_store,
	not camel_folder, oops.
	(delete_folder): Return an error if it doesn't exist, rather than
	covering it up.

	* providers/local/camel-mh-store.c (get_folder): Call parent impl.
	(camel_mh_store_class_init): fix parent class setup.
	(delete_folder): Error if it doesn't exist now.

	* camel-folder.c (camel_folder_move_message_to):
	(camel_folder_copy_message_to): Added warnings as these functions
	are going to be removed later.

	* camel-store.c (camel_store_get_root_folder): Fix for an early
	api change.  We want CAMEL_STORE_FOLDER_CREATE, not TRUE, since
	its a flag.
	(camel_store_get_default_folder): And here too.

	* providers/local/camel-local-store.c (xrename): Handle renaming
	folders differently to renaming files.
	(get_default_folder_name): local stores dont have a default
	folder, so make it so.  Or at least, it doesn't seem to make sense
	to have one.
	(get_root_folder_name): Same for root.
	(get_folder): Added parent implementation, that makes sure the
	service path exists, if we are creating a new folder (but doesn't
	create the folder).

2000-11-27  Not Zed  <NotZed@HelixCode.com>

	* providers/local/camel-local-store.c (xrename): Fixed races.  Use
	link/unlink, rather than rename, to properly detect overwriting
	another file.  And allow some files to be missing.

	* providers/Makefile.am: Removed mh, mbox, added local, to the default.

svn path=/trunk/; revision=6693
2000-11-28 13:13:23 +00:00
00890b71cf add scan = scan->next; to avoid infinite loop
2000-11-28  Radek Doulik  <rodo@helixcode.com>

	* providers/local/camel-local-summary.c
	(local_summary_decode_x_evolution): add scan = scan->next; to
	avoid infinite loop

svn path=/trunk/; revision=6690
2000-11-28 12:54:31 +00:00
89ae418e50 Make this gratuitously more complicated. No wait, I mean, fix bugs. Now
* providers/imap/camel-imap-command.c (imap_read_untagged): Make
	this gratuitously more complicated. No wait, I mean, fix bugs. Now
	fully handles NULs in the data stream (which "can't happen" but
	do) and also handles responses containing multiple literals. Also
	does less copying than the original code.

	* camel-stream-buffer.c (stream_read): Fix a bug that could make
	it lose sync and/or overrun buffers.

svn path=/trunk/; revision=6688
2000-11-28 03:26:51 +00:00
dd896b1476 Remove "complete" field
2000-11-27  JP Rosevear  <jpr@helixcode.com>

	* conduit/address-conduit.h: Remove "complete" field

	* conduit/address-conduit.c (print_local): Make it print useful debug
	info
	(print_remote): ditto
	(local_record_from_ecard): Make sure phone numbers get out to the pilot
	(ecard_from_remote_record): Set phone strings to "" if they are null
	(sequence_complete): unref the book view
	(view_cb): ref the book view
	(free_prepare): do nothing

	* backend/pas/pas-backend-file.c (pas_backend_file_book_view_free):
	Destroy the card lists with the rest of the view.
	(pas_backend_file_changes): Don't destroy the card lists here
	(pas_backend_file_book_view_free): Free the card/id lists in the
	change context here, the correct place.
	(pas_backend_file_changes): instead of here...

2000-11-27  JP Rosevear  <jpr@helixcode.com>

	* conduits/todo/todo-conduit.c (free_prepare): Ditto

	* conduits/calendar/calendar-conduit.c (free_prepare): Adjust
	free_prepare to the correct signal parameters.  Don't actually
	do anything - there is a semantic discrepancy that needs to be
	resolved.

2000-11-27  JP Rosevear  <jpr@helixcode.com>

	* providers/local/.cvsignore: shush

svn path=/trunk/; revision=6681
2000-11-27 20:30:51 +00:00
3b8f368ce6 Removed mh, mbox, added local, to the default.
2000-11-27  Not Zed  <NotZed@HelixCode.com>

        * providers/Makefile.am: Removed mh, mbox, added local, to the default.

svn path=/trunk/; revision=6678
2000-11-27 02:18:00 +00:00
05aaadc66b little util to scan mailboxes for any and every address they contain.
* tests/data/getaddr.pl: little util to scan mailboxes for any and
	every address they contain.

	* tests/message/test2.c (main): Added a bunch of stuff to test
	decoding/reencoding/etc of internationalised addresses.

	* tests/message/lib/address-data.h: Copy of some unicode/other
	testing data.  **Beware** of editing this file in emacs, it'll
	probably try and convert all the characters to something
	unusable.

	* tests/lib/camel-test.c (camel_test_break): Add a debugger hook
	point.

	* camel-mime-utils.c (quoted_encode): Check for space and convert
	to _ separately.
	(header_decode_mailbox): Fixed the 'check comments for realname'
	code, problem was the domain getting code was skipping all
	whitespace/comments before we could get a look-in.  This is
	approximate but fairly robust.
	(header_decode_text): Dont use the c-type isspace func here, we
	want a specific whitespace only.
	(header_decode_text): If we have decoded words next to each other,
	do not insert whitespaces between them, which is what rfc2047 requires.
	(header_decode_text): Make c unsigned too.

svn path=/trunk/; revision=6658
2000-11-24 07:06:45 +00:00
189cb50426 Added at least some explanation of all this stuff.
2000-11-24  Not Zed  <NotZed@HelixCode.com>

	* tests/README: Added at least some explanation of all this stuff.

	* tests/lib/camel-test.h (check_msg): Added a non-gcc version of
	the fail command, we dont get the expression that failed, but no
	matter.  Should be (more) portable now.
	(check, check_msg): Put the file/lineno in the default message.

svn path=/trunk/; revision=6657
2000-11-24 03:54:55 +00:00
99e80d6ecf Add tests.
2000-11-24  Not Zed  <NotZed@HelixCode.com>

	* Makefile.am (SUBDIRS): Add tests.

	* camel-mime-filter-basic.c (filter): Well, I'll add the extra
	bytes here too, lathough not strictly needed, might save a
	re-malloc when we get to complete().

	* camel-mime-filter-charset.c (filter): Make sure we have room if
	we only convert very short data.
	(complete): and here too.

	* tests/Makefile.am: Initial test harness & tests.  Requires gcc
	for this.

	* camel-internet-address.c (d): Turn off debug.

	* camel-charset-map.c (camel_charset_step): Oops, & masks for set
	intersection, not | them.  Dunno how this got even close to
	working.

2000-11-23  Not Zed  <NotZed@HelixCode.com>

	* camel-mime-filter-basic.c (filter): For base64 encoding, the
	output size for 0, 1, or 2 bytes of input can exceed input*2, so
	make sure we account for that as well.
	(complete): And here.
	(complete): Similarly for qp encoding, if we have a trailing
	space, we need some extra bytes (not needed for 'filter()', as any
	such bytes are stored in state/save).

	* camel-mime-utils.c (quoted_decode_step): Removed fixme not required.
	(quoted_encode_close): Dont append a trailing afterall.  Otherwise
	a pass through the encode/decode will grow the message each time.

svn path=/trunk/; revision=6656
2000-11-24 03:18:20 +00:00
982a078d51 check for return values
2000-11-22  Radek Doulik  <rodo@helixcode.com>

	* camel-mime-utils.c (header_msgid_generate): check for return
	values

svn path=/trunk/; revision=6651
2000-11-22 15:50:10 +00:00
fb92b831ae add #ifdef HAVE_ALLOCA_H
* camel-lock.c:
	* camel-movemail.c: add #ifdef HAVE_ALLOCA_H

svn path=/trunk/; revision=6638
2000-11-21 22:04:40 +00:00
a34a4b15b8 Shite, -1 on error, >=0 on success. So i've just been truncating all the
2000-11-21  Not Zed  <NotZed@HelixCode.com>

	* providers/local/camel-mh-summary.c (mh_summary_sync_message):
	Shite, -1 on error, >=0 on success.  So i've just been truncating
	all the messages I touched, good one zed.
	(mh_summary_sync_message): Sigh, and write to the right damn fd as
	well.
	(mh_summary_sync_message): Argh, and we need to compare the length
	of the old xev -1 to the new xev, to check if we can optimise it.

	* camel-folder.c (camel_folder_change_info_new): Init the pool.
	(camel_folder_change_info_add_source): Allocate string in the
	pool.
	(camel_folder_change_info_add_source_list):
	(camel_folder_change_info_add_update): No longer free the key, as
	it cannot be yet.
	(change_info_add_uid): Add a new arg, copy, telling it whether to
	copy the uid argument or not, and copy using mempool_strdup.
	(change_info_cat): Tell add_uid to copy the string.
	(camel_folder_change_info_add_update): Call add_uid directly.
	(change_info_remove): Call add_uid directly, with no copy, and
	dont free the key.
	(change_info_free_update): No longer required since we dont malloc
	the keys.
	(camel_folder_change_info_add_uid): Fix for add_uid change.
	(camel_folder_change_info_remove_uid):
	(camel_folder_change_info_change_uid):
	(change_info_clear): No longer needed, just set the size to 0 on
	the array directly.
	(camel_folder_change_info_clear): Empty the arrays directly, and
	flush the mempool too, and also clear uid_source, incase anyone
	was silly enough to call us in the wrong order.
	(camel_folder_change_info_free): Dont bother clearing the array's
	contents, just free the pool and throw away all the indexes.

	* camel-folder.h: Added a mempool to CamelFolderChangeInfo to
	store the uid's we get.

	* camel-folder-search.c (search_match_all): If we are only
	matching a single info, just use that/do the search.
	(camel_folder_search_match_expression): New function.  Matches a
	single message info against an expression.
	(camel_folder_search_init): Init a hash table used to map the
	returned gptrarrays' to mempools.
	(camel_folder_search_execute_expression): Store all of the string
	data in a mempool, slightly faster, less wasted space (usually),.
	(camel_folder_search_free_result): Check for the mempool that
	stores the data for the list, and free that if we have it,
	otherwise assume we need to use g_free() (which should only happen
	if the list is empty at the moment).
	: commented out the debugging prints.  Got sick of 'executing
	header search' crap.

	* providers/vee/camel-vee-folder.c (camel_vee_folder_init): Init
	changes.
	(camel_vee_folder_finalise): Free changes.
	(vfolder_add_match): Simple helper to add a new matching info
	record.
	(camel_vee_folder_add_folder): Only trigger a changed event if we
	have changes.
	(vfolder_change_match): New function, changes our local vfolder
	info to match the source.
	(vfolder_add_match): Add a new info to the vfolder list.
	(vfolder_remove_match): Remove a no-longer matching info from the
	vfolder summary.
	(message_changed): check if the message still matches, and
	remove/etc as required.
	(camel_vee_folder_finalise, init): init/free search object.
	(vee_folder_build_folder): Build the changes to the folder into
	the changes data, as we go.
	(folder_changed): If the folder gave us an explicit list of
	changes, then process each one separately (unless there's a lot
	added/changed).

	* providers/vee/camel-vee-folder.h: Added a changes field to the
	folder.

svn path=/trunk/; revision=6628
2000-11-21 13:38:53 +00:00
7ea24b0cb1 Added camel-folder-thread.[ch].
2000-11-21  Not Zed  <NotZed@HelixCode.com>

        * Makefile.am (libcamel_la_SOURCES): Added
        camel-folder-thread.[ch].

        * camel-folder-thread.c: message-threading algorithm, taken from
        evolutions' mail component, as it is generally more useful than
        just for evolution itself.  Changed to use e-memchunks as well to
        speed it up a little and use less mem.

svn path=/trunk/; revision=6623
2000-11-21 03:51:33 +00:00