1. 14 Mar, 2001 1 commit
    • Not Zed's avatar
      re-constify inbuf, to remove a warning. · 0e9c0268
      Not Zed authored
      2001-03-14  Not Zed  <NotZed@Ximian.com>
      	* camel-mime-filter-charset.c (filter, complete): re-constify
      	inbuf, to remove a warning.
      	* camel-mime-parser.c (folder_scan_step): When we're out of data,
      	run the filter_complete.  For some reason the logic that was there
      	was never being run, always try it now, i think it was to work
      	around a buggy filter, rather than fix it the right way.
      	* camel-folder-summary.c (summary_build_content_info): If indexing
      	html parts, use the html filter to convert it to some indexable
      	(summary_build_content_info): Reset the filters before adding them
      	back to the stream, if they get re-used in a given instance
      	* Makefile.am (libcamelinclude_HEADERS): Added
      	(INCLUDES): Added xml clags
      2001-03-05  Not Zed  <NotZed@Ximian.com>
      	* camel-folder-search.c (camel_folder_search_class_init): Setup a
      	new function, "uid" which matches uids.
      	(search_uid): Implement the "match uid" command.
      svn path=/trunk/; revision=8705
  2. 12 Dec, 2000 1 commit
    • Christopher James Lahey's avatar
      Added #ifndef NO_WARNINGS around a #warning. Added (void) to the prototype · 7b804701
      Christopher James Lahey authored
      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
  3. 21 Nov, 2000 1 commit
    • Not Zed's avatar
      Shite, -1 on error, >=0 on success. So i've just been truncating all the · a34a4b15
      Not Zed authored
      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
      	(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
      	(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.
      	(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
      	(camel_vee_folder_finalise): Free changes.
      	(vfolder_add_match): Simple helper to add a new matching info
      	(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
      	* providers/vee/camel-vee-folder.h: Added a changes field to the
      svn path=/trunk/; revision=6628
  4. 20 Nov, 2000 1 commit
    • Not Zed's avatar
      Fixes for the summary messageid changes. Hash the messageid and store it. · 854f94bc
      Not Zed authored
      2000-11-20  Not Zed  <NotZed@HelixCode.com>
      	* providers/nntp/camel-nntp-utils.c (get_XOVER_headers): Fixes for
      	the summary messageid changes.  Hash the messageid and store it.
      	(get_XOVER_headers): Use camel_folder_summary_info_new() to create
      	the summary item before adding it.
      	* camel-folder-summary.h (CamelMessageInfo): Changed the
      	messgae-id to be an 8 byte md5 hash, and the references list to be
      	an array of these.
      	* providers/local/camel-mh-summary.c (mh_summary_sync_message):
      	New function, sync out the message info stuff.  Only updates the
      	X-Ev header if it can get away with it, otherwise writes out a
      	whole new message.
      	(mh_summary_sync): Added more functionality.  All summary info is
      	now written to the X-Ev header, etc, and new messages re-written
      	if required during the sync process.
      	* providers/local/camel-local-folder.c
      	(local_set_message_user_flag): Set the XEVCHANGE flag.
      	(local_set_message_user_tag): And here too.
      	* providers/local/camel-local-summary.h: New flag
      	CAMEL_MESSAGE_FOLDER_XEVCHANGE to indicate the XEV header has
      	probably changed size and needs to be rewritten in whole.
      	* camel-folder-summary.c (next_uid_string): Want this static, not
      	(message_info_new): Store the references and message-id values as
      	64 bit, binary hashes.
      	(message_info_load): fix for message-id/references changes.
      	(message_info_save): Likewise.
      	(camel_message_info_dup_to): And here.
      	(camel_message_info_free): And here too.  No longer free
      	message_id, and simple free for references array.
      	(CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision.
      	(camel_folder_summary_init): Init memchunk allocators to empty.
      	(camel_folder_summary_finalize): Free memchunk allocators if
      	(message_info_new): Use the chunk allocator to allocate message
      	(camel_folder_summary_info_new): New helper to allocate the
      	message info, and setup the memchunk if required.
      	(content_info_alloc): Likewise for content info's.
      	(message_info_load): Use summary_info_new_empty.
      	(content_info_new): Use content_info_alloc.
      	(content_info_load): "
      	(content_info_free): Free the content info as a memchunk.
      	(message_info_free): Free everything directly and the base as a
      	memchunk, rather than calling camel_message_info_free(), which
      	assumes a malloc'd array.
      	* providers/local/camel-local-summary.c: Include ctype.h, kill a
      	(local_summary_decode_x_evolution): If we get a NULL message info,
      	then dont try and set anything, just check for validity.
      	(camel_local_summary_write_headers): New function to write a set
      	of headers to an fd.
      	(camel_local_summary_check): Added some statistic generation
      	stuff for memory profiling.
      	* providers/local/camel-mbox-summary.c (header_write): Changed to
      	use stdoi functions to write out the header to a buffered stream,
      	instead of using writev, which is apparently slow (and writing
      	each line separately is slow anyway).
      	(mbox_summary_sync_full): New implementation.  Does things
      	differently, doesn't use or require the content info stuff.
      	(summary_rebuild): Dont return an error if we start scanning at
      	the end of file.
      	(mbox_summary_sync_full): If we are not writing out new headers,
      	make sure we copy the From line as we go, and update frompos
      	(mbox_summary_sync_full): Always copy the From line from the
      	existing one, rather than trying to make one up ourselves.
      	(mbox_summary_sync): If we can get by with a quick-sync, then try
      	it, if that fails, then try a full sync anyway.
      	(mbox_summary_sync_quick): Quick sync.  Only update system flags,
      	(mbox_summary_sync_full): Use the proper local summary encode_xev
      	(header_evolution_decode): Removed, no longer needed.
      	(header_evolution_encode): Same.
      	(copy_block): No longer needed, removed.
      	(header_write): Removed, replaced with
      	(mbox_summary_sync_full): Fixed for header_write change.
      	* camel-mime-parser.c (folder_scan_step): Implement the new
      	optional parser state HSCAN_PRE_FROM, that returns the (currently
      	unfiltered) input data.
      	(folder_scan_drop_step): Do the right thing for the PRE_FROM
      	(camel_mime_parser_scan_from): Update the doco.
      	(camel_mime_parser_scan_pre_from): Ok, make this behaviour
      	optional, it simplifies a lot of loops that dont otherwise need to
      	know about it.
      	(folder_scan_step): Made the PRE_FROM state optional.
      	(struct _header_scan_state): Made the bool vars 1 bit.
      	(folder_pull_part): Free the from_line buffer if it is there.
      	(folder_scan_skip_line): Added a new arg, can save the skpped data
      	to a byte_array, as we go.
      	(folder_scan_step): Fixed calls to skip_line approrpiately.  Now
      	we save the from line as we parse it.
      	(camel_mime_parser_read): New function to read from the mime
      	parser buffer directly.  Useful if you use the parser to read the
      	first/some headers, then need to scan the rest of the data,
      	without needing to use a seek(), or allocate your own buffers.
      	* camel-mime-parser.h (struct _header_state): Added a new parser state,
      	pre-from which returns any data found before a from line during
      	parsing (all other data can be retrieved by the caller except
      svn path=/trunk/; revision=6618
  5. 11 Nov, 2000 2 commits
    • Not Zed's avatar
      Go until inend, not inend+1. Changed the continuation and retry logic to · d99fd19d
      Not Zed authored
      2000-11-11  Not Zed  <NotZed@HelixCode.com>
      	* camel-mime-parser.c:
      	(folder_scan_content): Go until inend, not inend+1.  Changed the
      	continuation and retry logic to be simpler and more robust.  If we
      	can't find a marker within
      	the atleast we need, just set it to 1, and try again, rather than
      	just going to the next smaller limit (boundary check checks the
      	length anyway).
      	(header_append): streamline the empty line case.  And strip
      	trailing \r's if there are any (\n's already stripped).
      	(folder_scan_header): Reordered and cleaned up a lot.  Check for
      	continuation only once, and compress lwsp then.	Assume the header
      	buffer already has end of line's stripped, and simplify some things:
      		Only check for end of headers once and easier.
      		Dont check to remove end of line character
      	Dont bother testing inptr-start if we get a boundary match - it is
      	always zero.
      	(folder_scan_header): Removed the unused part variable, and a few
      	pointless assignments.
      	(folder_scan_header): Change the end limit to be 1 higher, to make
      	sure we get all content.
      	(folder_scan_content): And here too.
      	(folder_scan_header): Killed a warning.
      	(folder_push_part): Removed a bad comment.  Actually
      	boundarylenfinal can be zero for a new message not in a
      	multipart.  So we fix that here.
      svn path=/trunk/; revision=6542
    • Not Zed's avatar
      Make sure 'atleast' is at least 1, always. This is possibly a temporary · e0e04e97
      Not Zed authored
      2000-11-11  Not Zed  <NotZed@HelixCode.com>
      	* camel-mime-parser.c (folder_push_part): Make sure 'atleast' is
      	at least 1, always.  This is possibly a temporary fix for a
      	bad failure mode on bad multipart messages.
      svn path=/trunk/; revision=6540
  6. 08 Nov, 2000 1 commit
    • Not Zed's avatar
      Keep track of the caller bestenc flags that make sense. · 2b97bd93
      Not Zed authored
       2000-11-08  Not Zed  <NotZed@HelixCode.com>
      	* camel-mime-message.c (find_best_encoding): Keep track of the
      	caller bestenc flags that make sense.
      	* camel-mime-filter-bestenc.c (filter): Added code to detect when
      	we have "^From " lines in the sequence of text.
      	(camel_mime_filter_bestenc_get_best_encoding): Added a new flag
      	CAMEL_BESTENC_NO_FROM: if set, it will not allow any lines
      	matching "^From " to appear in the output - currently forcing
      	base64 encoding to achieve this.
      	* camel-mime-parser.c (folder_scan_step): Call
      	camel_mime-filter_complete() once we're done, rather than
      	(folder_scan_content): Some fixes for state changing; so that when
      	we do find another boundary it is properly flagged.  Since we
      	strip the last \n off all data, we must take that into account
      	too.  Sigh.  Fixes a rather nasty set of bugs where multipart
      	messages could start including following messages as parts, etc.
      	(struct _header_scan_stack): Added new parameter,
      	boundarylenfinal, which holds the length of the final boundary, if
      	it is different (e.g. for From lines, whihc aren't)
      	(folder_scan_step): Setup teh boundarylenfinal value when creating
      	a new boundary.
      	(folder_scan_content): Hmm, if we hit the end-of-buffer sentinal,
      	reset the scanner back to leave 'atleast' chars in the buffer
      	still, dump that content, and retry again.  Stops us losing a
      	check for a boundary on some data we haven't really looked at yet!
      	(folder_scan_content): Use boundarylenfinal to calculate
      	(folder_scan_header): And here too.
      	(folder_boundary_check): Use the atleast value directly, dont
      	truncate it.  Use the boundarylen/boundarylenfinal values directly
      	(struct _header_scan_stack): Add an atleast parameter to cache the
      	atleast info.
      	(folder_push_part): Determine/set 'atleast', every time we add a
      	new part.
      	(folder_scan_header): Get the cached atleast info from the current
      	(folder_scan_content): And here too.
      	(folder_scan_header): Fix a problem where a part starting with
      	" text" would be interpreted as a followon header wrongly.
      	* camel-mime-filter-charset.c (complete): Add some assertions to
      	find a bug.
      svn path=/trunk/; revision=6500
  7. 04 Nov, 2000 1 commit
    • Not Zed's avatar
      Set the preface/postface from the parser into the multipart object. · 338344b2
      Not Zed authored
      2000-11-04  Not Zed  <NotZed@HelixCode.com>
              * camel-mime-part-utils.c
              (camel_mime_part_construct_content_from_parser): Set the
              preface/postface from the parser into the multipart object.
              * camel-multipart.c (camel_multipart_set_postface): Function to
              set the postface text on a multipart.
              (camel_multipart_set_preface): Similarly for preface text.
              * camel-mime-parser.c (folder_scan_content): If we scan until a
              boundary, then we do not include the \n that starts the boundary
              line in the content.
              (struct _header_scan_stack): Added a ByteArray to store the
              multipart pre/post-text as we're scanning.
              (folder_pull_part): Free pre/posttext if they are allocated.
              (folder_scan_step): Build into the pre/posttext arrays as we
              encounter data.
              (camel_mime_parser_preface): REturn the multipart preface text, if
              there is any scanned.
              (camel_mime_parser_postface): Likewise for postface text.
              (byte_array_to_string): helper function for above.
              * providers/mbox/camel-mbox-folder.c (mbox_append_message): Change
              the from line to be "\nFrom ..." always, so no need to
              check/append a \n to messages.
              (mbox_append_message): Open the output stream with append mode
              [assuming this is more efficient than seeking to the end]
              And dont prepend \n  on the From line if its the first in the
              (mbox_append_message): Pass the offset of the real start of the
              "From " line when we perform the update (which may != 'seek')
              * camel-mime-filter-charset.c (complete): Removed the terminating
              NUL 'fix'.
              * camel-stream-filter.c (do_read): Added some debug.
              (do_flush): And here.
              (do_write): And here too.
              (do_write): ARGH!!! ARGH!  Ok, so the filter stream was writing a
              different number of bytes than the requester was asking it to
              write (because of filtering, of course!).  So instead of returning
              the true number of written bytes, we'll return what they asked us
              to write - unless there is an error in which case we return -1.
              * camel-mime-utils.c (base64_encode_close): Sigh, forgot to make
              it unsigned.  I think this is actually a gcc bug as (48 >> 2)
              somehow ended up negative, when it obviously should not, even if
              the data load was signed.
      svn path=/trunk/; revision=6388
  8. 02 Nov, 2000 1 commit
  9. 17 Oct, 2000 1 commit
    • Not Zed's avatar
      Added some malloc check debugging stuff. · a8cd947d
      Not Zed authored
      2000-10-17  Not Zed  <NotZed@HelixCode.com>
      	* camel-mime-filter.c: Added some malloc check debugging stuff.
      	* camel-mime-parser.c
      	(struct _header_scan_state): Removed top_part, top_start, and
      	pending.  I can't even remember why they were there, and they're
      	not used anymore.
      	* camel-mime-filter-basic.c (filter): Forgot to up the space here
      2000-10-14  Not Zed  <NotZed@HelixCode.com>
      	* camel-mime-filter-basic.c (complete): Ok, so we hit a fixme, 3x
      	just wasn't enough for some sequences.
      svn path=/trunk/; revision=5962
  10. 12 Oct, 2000 1 commit
    • Not Zed's avatar
      Removed temp_message_buffer, and content_input_stream fields which seem to · 6c337e9e
      Not Zed authored
      2000-10-11  Not Zed  <NotZed@HelixCode.com>
      	* camel-mime-part.h (struct _CamelMimePart): Removed
      	temp_message_buffer, and content_input_stream fields which seem to
      	have come from nowhere, and are unused.
      	* camel-mime-utils.c: Added a note about touching this file.
      	Nobody is to touch it without asking me first.  That goes for you
      	too Jeff.
      	(header_decode_text): In what way is this broken?
      2000-10-10  Not Zed  <NotZed@HelixCode.com>
      	* providers/imap/camel-imap-folder.c (imap_get_summary_internal):
      	Fix camel_summary_* function rename
      	(imap_get_message_info_internal): Likewise.
      	* camel-mime-parser.c (camel_mime_parser_finalise): Fixed a spelling mistake.
      	* camel-folder-summary.c (camel_summary_format_address): Uh, why
      	do we encode and then decode here ... sigh.  This is not the way
      	to fix this.
      	(camel_folder_summary_format_address): Renamed to a proper name,
      	this was only supposed to be a private function.
      	(camel_folder_summary_format_string): Likewise.  Oh i see why it
      	was made public, code reuse by cut & paste.  Joy.
      svn path=/trunk/; revision=5881
  11. 10 Oct, 2000 1 commit
  12. 28 Sep, 2000 1 commit
    • Not Zed's avatar
      New function to fold headers. · e71de4c0
      Not Zed authored
      2000-09-28  Not Zed  <NotZed@HelixCode.com>
              * camel-mime-utils.c (header_fold): New function to fold headers.
      2000-09-27  Not Zed  <NotZed@HelixCode.com>
              * camel-mime-parser.c (folder_scan_header): If we had an empty
              header, then it must be end of the headers too.
              (folder_scan_init): No we dont need to init the outbuf with a nul
              * camel-folder-summary.c (camel_folder_summary_set_uid): New
              function to reset the uid to a higher value.
              * providers/mbox/camel-mbox-summary.c (camel_mbox_summary_sync):
              "something failed (yo!)" what sort of crap is this?  Fixed all the
              indenting again, what wanker keeps running stuff through indent?
              (message_info_new): Check the uid we loaded off the disk, if it
              existed already, assign a new one.  If it didn't then make sure
              the nextuid is higher.
              * camel-charset-map.c: New file, used to build a large unicode
              decoding mapping table, and use it to determine what is the
              lowest charset a given word can be encoded with.  Uses tables from
              libunicode's source.
              * camel-internet-address.c (internet_encode): Use
              header_phrase_encode to properly encode the fullname, as required.
              refixed indenting.  Who keeps doing that?
              (camel_internet_address_find_address): Changed fatal return/warnings
              into assertions.
              * camel-mime-utils.c (header_raw_append_parse): Check : explicitly
              (removed from is_fieldname() macro).
              (camel_mime_special_table): Changed to short, so we can represent
              more bit types.
              (quoted_encode): Take a mask of the safe chars for this encoding.
              (header_address_decode): Removed a #warning that makes no sense
              (header_decode_date): Fixed the 'broken date' parser code, if it
              ever decoded it it just threw away the result.
              (header_encode_string): Use better charset matching for encoding
              strings as well.
      2000-08-31  Not Zed  <NotZed@HelixCode.com>
              * providers/mh/camel-mh-summary.c (camel_mh_summary_sync): Save
              the index if we do a sync.
              (camel_mh_summary_check): Save the index here too.  Probably.
      svn path=/trunk/; revision=5615
  13. 13 Sep, 2000 1 commit
  14. 11 Aug, 2000 1 commit
    • Christopher James Lahey's avatar
      Fixed some warnings. · 40eea369
      Christopher James Lahey authored
      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/smtp/camel-smtp-transport.c: Fixed some warnings.
      svn path=/trunk/; revision=4719
  15. 10 Aug, 2000 2 commits
    • Peter Williams's avatar
      Merge with camel-async. · 8cb514d6
      Peter Williams authored
      svn path=/trunk/; revision=4687
    • Not Zed's avatar
      A better way to compress leading whitespace. The code is probably invalid · 690509bf
      Not Zed authored
      2000-08-11  Not Zed  <NotZed@HelixCode.com>
      	* camel-mime-parser.c (folder_scan_header): A better way to
      	compress leading whitespace.  The code is probably invalid anyway,
      	I dont think it will work across buffer boundaries.
      	* providers/mbox/camel-mbox-folder.c (mbox_append_message): And
      	write out proper format From lines here too.
      	* providers/mbox/camel-mbox-summary.c
      	(camel_mbox_summary_build_from): New function to build a more
      	compatible mbox "From " line.
      	(camel_mbox_summary_sync): Write From lines in the proper format.
      2000-08-10  Not Zed  <NotZed@HelixCode.com>
      	* providers/mh/camel-mh-store.c (get_folder): Remove warnin g.
      	* providers/mbox/camel-mbox-store.c (xrename): Kill some warnings
      	with constification.
      	* providers/imap/camel-imap-folder.c (imap_append_message): Fixed
      	for append api change.  Eek this routine seriously wastes memory.
      	* providers/mh/camel-mh-folder.c (mh_search_free): Impelemnt.
      	(mh_append_message): Fix for api change, and include user flags
      	and tags in new message.
      	* providers/vee/camel-vee-folder.c (vee_search_by_expression): Fix
      	for search api change.
      	* camel-folder.c (camel_folder_search_free): New function for
      	freeing search results.
      	(search_free): Changed my mind, implement a default that actually
      	does something.  Free as to the old interface.
      	(camel_folder_append_message): Changed to accept a
      	camelmessageinfo rather than flags, which just doesn't have enough
      	info in it.
      	(copy_message_to): Change for append_message api change.
      	(move_message_to): Likewise.
      	* providers/mbox/camel-mbox-folder.c (mbox_search_free):
      	(mbox_append_message): Fix for api change, and also copy user
      	flags/tags across to new summary.
      	* camel-folder-search.c (search_user_tag): A search expression
      	that returns the current use flag by name.
      	(camel_folder_search_free_result): New function to free the result
      	of a search.
      	* camel-folder-summary.c: Bump summary version.
      	(camel_message_info_free): Added support for arbitrary tag/value
      	pairs (CamelTag's).
      	(camel_tag_list_free): Operations for working with CamelTags.
      svn path=/trunk/; revision=4683
  16. 26 Jul, 2000 1 commit
  17. 12 Jul, 2000 1 commit
    • Chris Toshok's avatar
      get the article num out of our uid and mark it read in the newsrc. · 77e64729
      Chris Toshok authored
      2000-07-12  Chris Toshok  <toshok@helixcode.com>
      	* providers/nntp/camel-nntp-folder.c
      	(nntp_folder_set_message_flags): get the article num out of our
      	uid and mark it read in the newsrc.
      	(nntp_folder_get_message): get the message id out of the uid to
      	fetch the article.
      	* providers/nntp/camel-nntp-utils.c (get_XOVER_headers): the uid
      	is now <article-num>,<messageid>
      	(get_HEAD_headers): same.
      	* camel-mime-parser.c (folder_scan_step): go to HSCAN_MESSAGE
      	state when ct->subtype is "news" as well as "rfc822".  this makes
      	attachments of type "message/news" display properly.
      svn path=/trunk/; revision=4121
  18. 18 Jun, 2000 1 commit
  19. 01 Jun, 2000 1 commit
    • Not Zed's avatar
      Fixes Bug 192. · 7e662425
      Not Zed authored
      2000-06-01  Not Zed  <NotZed@HelixCode.com>
              * camel-mime-part.c (construct_from_parser): For a message part,
              set the default content-type to message/rfc822.  Maybe needs to be
              done for multiparts too?
      2000-05-31  Not Zed  <NotZed@HelixCode.com>
              * camel-mime-message.c (construct_from_parser): Typo in assersion.
              * camel-mime-parser.c (folder_scan_step): Use a default type of
              message/rfc822 for multipart/digest.  Bug Z192.
              (folder_scan_drop_step): Remove warning.
      svn path=/trunk/; revision=3340
  20. 19 May, 2000 1 commit
    • NotZed's avatar
      > searchpart = strchr(namepart, '?'); · 2ce4eb74
      NotZed authored
      2000-05-19  NotZed  <NotZed@HelixCode.com>
              * camel-simple-data-wrapper.c (construct_from_stream): If we
              already have been constructed, unref our content.
              (write_to_stream): Check we've been constructued, and change for
              stream api changes.
              * camel-mime-parser.c: Removed exception stuff.
              * md5-utils.c (md5_get_digest_from_stream): repaired.
              * camel-mime-message.c: Remove exception from write_to_stream, and
              fix, and fix formatting.
              * providers/sendmail/camel-sendmail-transport.c (_send_internal):
              Fix for stream changes.
              * providers/pop3/camel-pop3-store.c (camel_pop3_command): Fixes
              for stream changes.
              * providers/mbox/camel-mbox-folder.c, and elsewhere, fix all
              stream api changes.
              (mbox_append_message): Use stream_close() now its back.
              (mbox_append_message): unref the from filter.
              * camel-stream-mem.c: And here.
              * camel-stream-fs.[ch]: Here too.
              * camel-stream-filter.c: Likewise.  This is getting tedious.
              * camel-stream-buffer.c (stream_write): Fix a few little problems.
              (stream_close): Reimplmeent.
              (camel_stream_buffer_read_line): Slightly more efficient version,
              that also only allocates the right amount of memory for strings.
              * camel-seekable-substream.c: Likewise.
              * camel-seekable-stream.[ch]: Remove exceptions, fix formatting,
              changes for stream (re)fixes.  set_bounds returns an error.
              * camel-stream.[ch]: Remove exceptions.  Make flush and reset return
              an error code, repair all the screwed up formatting, and put back
              * camel-mime-part-utils.c
              (camel_mime_part_construct_content_from_parser): And here.
              * camel-mime-part.c (camel_mime_part_set_content): And this too.
              (write_to_stream): Fixed for stream changes.
              * camel.h: Fixed.
              * providers/vee/camel-vee-folder.c (vee_search_by_expression):
              Implement.  Performs an intersection of the two searches.
              (camel_vee_folder_finalise): Unref search folders.
              (vee_append_message): Implement append.
      svn path=/trunk/; revision=3142
  21. 08 May, 2000 2 commits
    • Dan Winship's avatar
      Use CamelException to signal failure. (camel_stream_write_strings): · 65ec43cb
      Dan Winship authored
      	* camel-stream.c (camel_stream_read, camel_stream_write,
      	camel_stream_flush, camel_stream_reset, camel_stream_printf,
      	camel_stream_write_to_stream): Use CamelException to signal
      	(camel_stream_write_strings): Remove. camel_stream_printf is more
      	useful in most of the places that used this.
      	(camel_stream_write_string): Change from macro to function to
      	prevent problems with double-evaluation.
      	* camel-seekable-stream.c (camel_seekable_stream_seek,
      	camel_seekable_stream_set_bounds): Use CamelException.
      	(reset): Update.
      	* camel-seekable-substream.c, camel-stream-buffer.c,
      	camel-stream-filter.c, camel-stream-fs.c, camel-stream-mem.c:
      	* camel-stream-fs.c: Remove the virtual init functions and move
      	the code into the creator functions. Add CamelExceptions to
      	creation functions that could fail.
      	* camel-data-wrapper.c (camel_data_wrapper_write_to_stream): Use
      	* camel-mime-message.c, camel-mime-part.c, camel-multipart.c
      	(write_to_stream): Update.
      	* camel-mime-parser.c: add an exception to the mime parser private
      	data and pass that to stream functions as needed.
      	* gmime-content-field.c, md5-utils.c: Update (badly) for stream
      	* camel-exception.h (camel_exception_is_set): convenience macro.
      	* providers/Makefile.am: disable SMTP for now
      	* providers/mbox/camel-mbox-folder.c (mbox_append_message): Pass
      	CamelException to the functions that now need it. Check the
      	exception after calling camel_stream_flush, and fail if it fails.
      	(mbox_get_message_by_uid): More updates.
      	* providers/pop/camel-pop3-folder.c,
      	providers/sendmail/camel-sendmail/transport.c: Update.
      svn path=/trunk/; revision=2924
    • NotZed's avatar
      Merged NEW_SUMMARY branch back to trunk, and resolved conflicts. · b7f49ccf
      NotZed authored
      2000-05-08  NotZed  <NotZed@HelixCode.com>
      	* Merged NEW_SUMMARY branch back to trunk, and resolved conflicts.
      	* providers/mbox/camel-mbox-summary.c (camel_mbox_summary_update):
      	Return status.
      	* camel-stream-filter.c (do_close): We NEED a stream close.
      svn path=/trunk/; revision=2906
  22. 07 May, 2000 1 commit
    • Dan Winship's avatar
      Make camel not leak like a sieve. · 580d8858
      Dan Winship authored
      	* 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
      	* 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
      	* 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 +
      svn path=/trunk/; revision=2882
  23. 05 May, 2000 3 commits
    • NotZed's avatar
      And same here ... · aa7851f1
      NotZed authored
      2000-05-05  NotZed  <NotZed@HelixCode.com>
              * camel-folder-summary.c: And same here ...
              * camel-mime-utils.c: Defined out some memory profiling stuff I
              left there by mistake.
              * camel-mime-parser.c (folder_scan_content): Apply the fix from
              the header scanner to here too.
              (folder_scan_header): Only check for end of header if we have
              space for it (didn't end the read with a newline)
              (folder_scan_header): inptr is the only real thing we need
              registerised for performance.  Try to help the compiler be smart
              about it ..
              (folder_scan_header): Simplified the save header case a tad.
              Commented out some memory profiling stuff.
      svn path=/trunk/; revision=2811
    • 5's avatar
      Plug a memory leak. (header_decode_text): Fixed memory leaks with · 022c7ab1
      5 authored
      2000-05-05    <notzed@helixcode.com>
              * camel-mime-utils.c (header_decode_mailbox): Plug a memory leak.
              (header_decode_text): Fixed memory leaks with g_string_append().
              (header_encode_string): And here too, and a few other places.  The
              glib api is so awful ...
              (header_content_type_decode): More memory leaks, more left ...
      2000-05-05    <notzed@helixcode.com>
              * camel-mime-parser.c (folder_scan_init_with_fd): Make sure we
              init the end of buffer sentinal!
              (folder_scan_init_with_stream): And here too ...
      svn path=/trunk/; revision=2810
    • NotZed's avatar
      Maxcount is minimum of the max and the requested count, not the maximum :) · 214c9105
      NotZed authored
      2000-05-04  NotZed  <NotZed@HelixCode.com>
              * providers/mbox/camel-mbox-folder.c (summary_get_message_info):
              Maxcount is minimum of the max and the requested count, not the
              maximum :)
              * camel-mime-parser.c (folder_scan_content): Properly set midline,
              so we dont falsely catch offset boundary markers (i.e. From inside
              (folder_read): Set a sentinal on the end of the read data (\n) so
              we dont have to check the buffer boundary in the inner loop.
              (mempool_*): New experimental memory management routines, speed
              up simple structure parsing by about 25% ... not compiled in by
              default.  Something similar may be needed for camel-mime-utils to
              address performance issues with g_malloc and friends.
              * camel-mime-utils.c: Added a macro w(x) used to wrap all warnings
              about mime/rfc violations, so they can be turned off.
              * camel-folder-summary.c (summary_build_content_info): Step after
              the end of a message ...
              Turn into a stand-alone program for testing and profiling.
      svn path=/trunk/; revision=2808
  24. 04 May, 2000 1 commit
    • NotZed's avatar
      No, we're not going to have g_strcasecmp for no good reason, · f8bfbef0
      NotZed authored
      not even if its slipped in with no changelog.
      2000-05-04  NotZed  <NotZed@HelixCode.com>
      	* providers/mbox/camel-mbox-summary.c: Yes, and anotherone.
      	* camel-mime-utils.c: And another one.
      	* camel-mime-part.c: And another one.
      	* camel-mime-part-utils.c: And another one.
      	* camel-folder-search.c: And another one.
      	* camel-mime-parser.c: Reverted a change wihtout a ChangeLog entry.
      2000-05-04  NotZed  <NotZed@HelixCode.com>
      	* camel-folder-summary.[hc]: Yes, CamelFolderSummary is back ...
      	... re-usable class to summarise and index any stream or message
      	and to manage/load/save the created summaries.
      	* camel-folder.c: Include string.h to kill a warning.
      2000-05-03  NotZed  <NotZed@HelixCode.com>
      	* camel-folder.h: Added pos/bodypos/endpos to the basic message
      	content info object.  Size to be removed?  Moved the
      	messageconentinfo and messageinfo back to camel-folder-summary.h.
      	* camel-mime-filter-index.c (camel_mime_filter_index_set_ibex):
      	New function to (re)set the index to use on a filter.
      	* camel-mime-parser.c (camel_mime_parser_scan_from): Whole bunch
      	of inline docs.
      	(camel_mime_parser_drop_step): New function to drop a state from
      	the parser.  Needs more testing.
      svn path=/trunk/; revision=2789
  25. 03 May, 2000 1 commit
  26. 02 May, 2000 1 commit
    • NotZed's avatar
      Fix the previous overflow problem properly (can happen in 2 places). · 633171af
      NotZed authored
      2000-05-02  NotZed  <NotZed@HelixCode.com>
              * camel-mime-parser.c (folder_scan_header): Fix the previous
              overflow problem properly (can happen in 2 places).
              (header_append): A new macro to include the code changed above, so
              it only appears in one place.
              (folder_scan_step): Change the content type to text/plain if the
              multipart is broken.  Doesn't actually change the header though.
              (header_append): Also move the header-start tracking stuff here.
              Could be a static function to save code.
      svn path=/trunk/; revision=2751
  27. 28 Apr, 2000 1 commit
  28. 26 Apr, 2000 1 commit
    • NotZed's avatar
      Big cleanup of camel-stream-*, got rid of 3 classes, improved the interfaces, · c93a2e37
      NotZed authored
      and fixed at least one problem (end of stream never happening in certain
      cases).  Things that can fail now have a way of saying they failed too.
      So much for taking ANZAC day off to get drunk!
      2000-04-26  NotZed  <NotZed@HelixCode.com>
      	* camel-seekable-substream.c (stream_seek): Changed to have
      	absolute seek semantics, not relative to the bounds.
      	* camel-seekable-stream.c (reset): When we reset, seek to the
      	start of the bound, if there is one.
      	(stream_tell): Make tell virtual.
      	* camel-stream-filter.c (do_available): Removed.
      	* camel-stream-buffer.c: Remove leading _'s from static functions.
      	(stream_read): Renamed from read().  Fancy that conflicting!  (my
      	boo!)  Others too.
      	* providers/pop3/camel-pop3-folder.c (get_message_by_number):
      	Changed to stream_mem interface.
      	* providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Fixed
      	for streamfs interface changes, and implement a failure case.
      	(_append_message): Changed for fs stream interface change.
      	* camel-multipart.c (print_part): Iterate rahter than callback.  I
      	hate glists's interface (hence, move this to write_to_stream).
      	(write_to_stream): Return an error (yuck, this is a royal PITA to
      	do with the stream write interface).
      	* camel-mime-message.c: Removed leading _ from static names.
      	* camel-mime-part.h: construct_from_parser() now returns an error
      	* camel-mime-part-utils.c
      	(camel_mime_part_construct_content_from_parser): Changed to use a
      	camel-data-wrapper instead of a camel-simple-data-wrapper (no
      	change needed elsewhere?).
      	(simple_data_wrapper_construct_from_parser): Fixes for stream-mem
      	interface changes.
      	* camel-simple-data-wrapper.[ch],
      	camel-stream-data-wrapper.[ch], removed.  Fixed including of these
      	* camel-mime-part.c (camel_mime_part_set_text): Remove the use of
      	the camel-simple-data-wrapper-stream, just use a mem stream.
      	(write_to_stream): Renamed from my_*
      	(construct_from_stream): Return an error on error.
      	* camel-stream-mem.c (camel_stream_mem_new*): Remove mode
      	* camel-stream-mem.h (enum CamelStreamMemMode): Removed.  It
      	wasn't used at all.
      	* camel-data-wrapper.h: Add camel_data_wrapper_new() to create
      	(write_to_stream, construct_from_stream): Return an error
      	indicator for success.  Fixed all methods to match (ICK).
      	* Makefile.am (libcamel_la_SOURCES): Remove
      	camel-simple-data-wrapper.c, camel-simple-data-wrapper-stream.c,
      	camel-stream-data-wrapper.c.  Obsoleted by code re-use!
      	* camel-data-wrapper.c (construct_from_stream): Change the default
      	implementation to just set the output stream == construction
      	stream.  Well, this lets me get rid of both simple-data-wrapper
      	and stream-data-wrapper (unused anyway), and
      	simple-data-wrapper-stream in one hit.  CamelDataWrapper is now
      	also a concrete class.
      	(write_to_stream): Use camel_stream_write_to_stream() to
      	calculate/return values (and save code).
      	Include <errno.h> for obvious reasons.
      	* camel-stream.c (eos): Provide a default implementation of .eos().
      	(camel_stream_write_to_stream): Make it return an error code on
      	(camel_stream_printf): Changed to return the number of bytes
      	(camel_stream_available): Removed.
      	* camel-stream-fs.h (enum CamelStreamFsMode): Removed.  Changed to
      	use unix modes and so forth (wasn't used for anything but new file
      	creation and didn't work well either).
      	* camel-stream-fs.c: Removed leading _'s for names.  And removed
      	some virtual method 'documentation'.
      	(destroy): Dont try and close a closed/error fd.  Only report
      	error if close returns -1.  Moved all the code to finalise(), and
      	killed this function.
      	(init_with_fd): Properly setup the seek offset, if it is a
      	valid and seekable file descriptor.
      	(init_with_fd_and_bounds): Use off_t for bounds, set bounds on the
      	seekable stream.
      	(init_with_name): Return error codes.
      	(init_with_name_and_bounds): Ditto.
      	(camel_stream_fs_new_with_name): REturn NULL object if it failed.
      	(camel_stream_fs_new_with_name_and_bounds): Return NULL object on
      	failure.  Changed with_name* api's to take unix open style args
      	and flags.
      	(read): The bounded stream bounds checking seemed off, simplified
      	code a bit.
      	(write): Implement bounds checking for writing, the comment was
      	wrong, it could make sense to bound writing.  Cleaned up a little.
      	(available): Gone.
      	(eos): Removed.  Use CamelStream's implementation now.
      	(close): Reset the fd to -1, provide a warning for bad usage.
      	(seek): Cleaned up.  Changed the behaviour a little, the returned
      	offset is the absolute position in the file, even in bounded
      	(seek): Seek from end mirrors lseek() behaviour (reverse seeking).
      2000-04-25  NotZed  <NotZed@HelixCode.com>
      	* camel-stream-fs.h (struct _CamelStreamFs): Moved bounds and eof
      	indicator to other parent classes.
      	* camel-stream.c (camel_stream_printf): New utility
      	function.  Obvious use.
      	* camel-stream-mem.c: Removed leading _'s from static func's.
      	(camel_stream_mem_new_with_byte_array): Fixed for api changes, set
      	the owner for the byte array to us.
      	: Removed A bunch of gtk doc stuff for static (implementation) functions.
      	(available): Removed.
      	(write): Fixed the write implementation so that seek() works on a
      	seekable memory stream, as expected.  Seeking past the end of the
      	buffer has unix semantics (filling with 0).
      	(available): Removed.
      	(write): Implement seekable stream bounded stream.
      	(read): Implement seekable stream bounded stream.
      	(close): Dont free the stream_mem if we're not the owner.
      	(seek): Allow to seek beyond the end of memory area,
      	implement bounds checking.
      	(seek): Set errno on bad policy.
      	* camel-stream-mem.h (struct _CamelStreamMem): Changed position to off_t.
      	(new_with_buffer): Changed len to be a size_t.
      	(set_buffer, set_byte_array): New interface functions.
      	(struct _CamelStreamMem): Removed position, it is stored in the
      	* camel-stream.h: Removed some of the seemingly random
      	whitespace.  Removed the available method (its not
      	impelemented/useful enough).
      	* camel-seekable-substream.c
      	(init_with_seekable_stream_and_bounds): Remove the data_available
      	stuff, it hasn't been properly implemented/finished, and may never
      	work (unfortunately *sigh).
      	(reemit_parent_signal): Removed part of the above change.
      	(set_bounds): Removed (moved to seekable-stream).
      	: Fixed up some of the generally unreadable indenting (sorry,
      	wrapping at 80 characters with
      	(available): Removed.
      	(stream_seek): Fixup for object changes.  Make sure we return -1
      	if the parent stream can't seek.
      	* camel-seekable-stream.c (ccamel_seekable_stream_set_bounds): New
      	function to bound any seekable stream.
      	: Removed _'s.
      	(camel_seekable_stream_class_init): Implement an init function, to
      	setup the stream bounds to unbound.
      	* camel-seekable-stream.h (CamelSeekableStreamClass): New virtual
      	method set_bounds for seekable streams.
      	(CAMEL_STREAM_UNBOUND): New define for no bound.
      	* camel-seekable-substream.h (struct _CamelSeekableSubstream):
      	Removed sup_bound and inf_bound, moved to CamelSeekableStream (and
      	renamed, and changed to off_t's).
      	(new_with_seekable_stream_and_bounds): Use off_t as the bounds.
      	(CamelSeekableSubstreamClass): Uh, why was the intialiser virtual?
      	* camel-seekable-stream.[ch] (CamelSeekableStreamClass): Changed seek
      	to accept an off_t as the offset.
      	(struct _CamelSeekableStream): Renamed cur_pos to position and
      	changed it to an off_t type.
      	(enum CamelStreamSeekPolicy): Set to match the SEEK_* constants
      	from lseek().
      	(get_current_position): Renamed to tell().
      	* camel-stream-buffer.h: Commented out set_vbuf - never implemented.
      svn path=/trunk/; revision=2624
  29. 23 Apr, 2000 1 commit
    • NotZed's avatar
      Whole swag of changes. Still lots of cleanup remaining ... · 5fcb83b5
      NotZed authored
      2000-04-23  NotZed  <NotZed@HelixCode.com>
      	* camel-data-wrapper.c (set_mime_type_field): Ref the
      	content_field when we get it?
      	* camel-mime-parser.c (camel_mime_parser_unstep): New function.
      	Cause a subsequent call to mime_parser_step() to return the same
      	state over again.
      	* providers/mbox/camel-mbox-folder.c (_get_message_by_uid):
      	Initial test code using the mime parser to construct the message.
      	* camel-mime-part.c (construct_from_parser): part constructor.
      	(camel_mime_part_construct_content): Basically a simpler
      	replacement for the datawrapper repository.
      	(camel_mime_part_init): Set the default type to text/plain.
      	* camel-simple-data-wrapper.c (construct_from_parser): Initial
      	implementation of a content constructor.
      	* camel-multipart.c (construct_from_parser): Multipart
      	construction routine.
      	(camel_multipart_init): Set the default multipart type to
      	multipart/mixed.  Duh, no subtype is not allowed anyway.
      2000-04-22  NotZed  <NotZed@HelixCode.com>
      	* camel-mime-message.h (struct _CamelMimeMessage): Removed
      	send_date, and received_date, and replaced it with a time_t
      	'date' (this is what the header is called), and date_offset to
      	store the GMT offset of the date.
      	* camel-mime-message.c (camel_mime_message_set_from): Update raw
      	header as we go.
      	(_set_from): Removed.
      	(_get_from): Removed.
      	(camel_mime_message_get_from): Moved implementation here.
      	(camel_mime_message_get_subject): Move implementation here.
      	(_get_subject): Nuked.
      	(camel_mime_message_set_subject): Handle utf-8 input, and also
      	update raw header when changed.
      	(_set_subject): Removed.
      	(_set_received_date): Removed.
      	(camel_mime_message_set_received_date): Removed.
      	(_get_received_date): Removed.
      	(camel_mime_message_get_received_date): Removed.
      	(_get_sent_date): Removed.
      	(camel_mime_message_get_sent_date): Removed.
      	(camel_mime_message_get_date): New function to get the date as a
      	(camel_mime_message_set_date): Set the date as a time_t/offset.
      	(camel_mime_message_get_date_string): Get the date as a string.
      	(camel_mime_message_init): Initialise the current date as
      	(_set_reply_to): Removed.
      	(camel_mime_message_set_reply_to): Moved implementation here.
      	This is still broken, reply-to can have multiple addresses.
      	(_get_reply_to): Removed.
      	(_set_field): Removed, no longer used anywhere.
      	(_get_field): Also removed.
      	(_init_header_name_table): Add the Date header.
      	(process_header): Also handle snooping of Date header here.
      	* camel-stream-filter.c (finalise): Unref the source stream on
      	finalise, and also call the parent class (oops).
      	* camel-mime-parser.c (camel_mime_parser_state): New function to
      	get the current parser state.
      	(camel_mime_parser_stream): Allow you to get the stream back from
      	the mime_parser.
      	(camel_mime_parser_fd): Alternative to allow you to get the fd
      	back from the mime_parser.
      	(folder_scan_init_with_stream): Properly ref/unref the stream.
      	(folder_scan_close): Properly unref the stream/close the fd on
      	(folder_scan_init_with_fd): Close the old fd if there is one.
      	* camel-data-wrapper.c (camel_data_wrapper_construct_from_parser):
      	New method, construct a data wrapper from an initialised parser.
      	(construct_from_parser): Empty implementation.
      	* providers/mbox/camel-mbox-summary.c (message_struct_new):
      	Convert subject line to unicode, before storing in the summary.
      	(strdup_trim): Removed, no longer needed.
      	* providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Ref
      	the folder after setting it in the new message.
      	* camel-mime-part.c (my_set_content_object): Have the headers
      	follow the content-type change here too.
      	(my_write_to_stream): Dont write content-type here, automatically
      	stored in the headers ...
      	(my_write_to_stream): Use header_disposition_format() to format
      	the content-disposition header.
      	(my_write_to_stream): Removed old code, all headers are now stored
      	in the camel-medium level, always.  Need to do the same with
      	camel-mime-message i suppose ...
      	(my_write_to_stream): Write the content using the parent class,
      	not some weird function.
      	(camel_mime_part_class_init): Dont override get_output_stream.
      	(camel_mime_part_encoding_from_string): Bleh, make it
      	* camel-mime-utils.c (header_content_type_is): Handle empty types.
      	(header_encode_string): Start of an implementation of the rfc2047
      	encoder.  It does iso-8859-1, and us-ascii, and utf-8 (others get
      	tricky *sigh*)
      	(rfc2047_encode_word): Convert a single word/string into rfc2047
      	(quoted_encode): Different quoted-printable encoding for rfc2047
      	encoding of headers.
      	* gmime-content-field.c (gmime_content_field_write_to_stream): Use
      	header_content_type_format() to format it.
      svn path=/trunk/; revision=2560
  30. 22 Apr, 2000 1 commit
    • NotZed's avatar
      Ref the folder after setting it in the new message. · 0d820530
      NotZed authored
      2000-04-22  NotZed  <NotZed@HelixCode.com>
      	* providers/mbox/camel-mbox-folder.c (_get_message_by_uid): Ref
      	the folder after setting it in the new message.
      	* camel-mime-part.c (my_set_content_object): Have the headers
      	follow the content-type change here too.
      	(my_write_to_stream): Dont write content-type here, automatically
      	stored in the headers ...
      	(my_write_to_stream): Use header_disposition_format() to format
      	the content-disposition header.
      	(my_write_to_stream): Removed old code, all headers are now stored
      	in the camel-medium level, always.  Need to do the same with
      	camel-mime-message i suppose ...
      	* camel-mime-utils.c (header_content_type_is): Handle empty types.
      	* gmime-content-field.c (gmime_content_field_write_to_stream): Use
      	header_content_type_format() to format it.
      2000-04-21  NotZed  <NotZed@HelixCode.com>
      	* camel-mime-utils.h: Add prototype for header_param_list_free.
      	* camel-recipient.c: New function to remove all the types of a
      	recipient list.  I think this whole object needs a major review.
      	* camel-mime-message.c (camel_mime_message_class_init): Removed
      	parse_header_pair override, override add_header instead.
      	(_parse_header_pair): Renamed to add_header.
      	(remove_header): Add this method, to make sure we keep upto date
      	with removed headers too.
      	(_set_field): If given a NULL value, clear it out.
      	(_set_recipient_list_from_string): Constify.
      	(set_header): Override set_header from camel_medium.
      	(process_header): Local function to handle set/add/remove of each
      	header we know about.
      	* camel-mime-part.c (camel_mime_part_class_init): Removed
      	parse_header_pair setup.
      	(my_parse_header_pair): Moved into add_header(), removed.
      	(my_set_disposition): Allow a NULL disposition to clear it.
      	(my_set_content_id): Allow NULL content id to clear it.
      	(remove_header): Track removed headers.
      	(my_set_description): Allow NULL description to clear it.
      	(my_set_content_MD5): Make sure we copy the md5 value, and allow a
      	NULL value to reset it.
      	(my_set_filename): Copy the filename.
      	(my_set_header_lines): Removed.  Nothing uses it, it doesn't
      	actually serve any purpose.
      	(camel_mime_part_set_header_lines): Ditto.
      	(my_get_header_lines): Ditto.
      	(camel_mime_part_get_header_lines): Ditto.
      	(camel_mime_part_class_init): Remove *_header_lines setup.
      	(camel_mime_part_init): Remove header_lines init.
      	(my_finalize): Remove header_lines finalise.
      	(my_write_to_stream): Write the headers here.  This is just WRONG,
      	camel_medium should be doing this.
      	(my_get_output_stream): Kill a warning.
      	(camel_mime_part_encoding_to_string): Ditto.
      	(camel_mime_part_set_description): Unvirtualiase, use add_header()
      	to do the processing.
      	(my_set_description): Removed.
      	(set_disposition): Renamed from my_set_disposition.
      	(camel_mime_part_get_description): Get the descriptionf rom the
      	get_header method.
      	(my_get_description): Removed.
      	(my_set_filename): Removed.
      	(camel_mime_part_get_filename): Get the parameter from the
      	(camel_mime_part_encoding_from_string): Handle NULL string.
      	(camel_mime_part_init): Remove reference to filename.
      	(my_finalize): Dont free filename.
      	* camel-mime-part.h (CamelMimePartClass): Removed
      	parse_header_pair() method, it doesn't add anything that
      	add_header() can't be used for.
      	(CamelMimePartClass): Remove *_header_lines methods.
      	(struct _CamelMimePart): Remove header_lines list.
      	(struct _CamelMimePart): Removed filename attribute.
      	* camel-medium.c (camel_medium_init): Init headers to null, not a
      	(add_header): Append the headers as a list.
      	(remove_header): Remove headers as a list.
      	(get_header): Likewise for lookup.
      	(free_header): Removed, no longer needed.
      	(finalize): Free headers using header_raw_clear().
      	(camel_medium_set_header): New function, to reset and override all
      	values of a header with a new value.
      	* camel-medium.h (struct _CamelMedium): Changed to use a
      	header_raw struct rather than a hash table, to store headers
      	(many headers can occur multiple times).
      	* camel-mime-utils.c (header_raw_find_next): New function, allows
      	you to find multi-valued header fields.
      	(header_disposition_format): New function to format/create
      	content-disposition header string.
      	(header_param_list_format_append): Function to format parameter
      	lists into a GString.
      	(header_content_type_format): Function to format content-type into
      	a usable format.
      	(header_set_param): allow NULL value to remove the parameter.
      	(decode_token): Renamed from header_decode_token.
      	(header_decode_token): New interface for external use.
      	(quoted_decode): Made static to kill annoying warnings.
      	(g_strdup_len): Killed, replaced with calls to g_strndup().
      	(rfc2047_decode_word): Made static to kill warnings.
      	(decode_coded_string): Terminated.
      	(g_string_append_len): Made static to kill warnings.
      	(header_decode_text): Made static to kill warnings.
      	(header_decode_text): Constify.
      	(rfc2047_decode_word): Constify.
      	(header_param): Constify.
      	(header_content_type_new): Copy the type/subtype strings.
      	(header_param_list_decode): Made static.
      	(header_param_list_format_append): Made static.
      	(quoted_decode): Constify.
      	(g_string_append_len): Constify.
      	(header_token_decode): New function to decode a single token.
      	* providers/mbox/camel-mbox-summary.c (header_write): Append a
      	trailing \n when writing headers.
      	(strdup_trim): Killed a warning.
      	(camel_mbox_summary_set_uid): Make sure the next uid is at least 1
      	higher than any existing one.
      	(header_evolution_decode): Use header_token_decode to get the
      	* camel-mime-parser.c (folder_scan_header): Strip the trailing \n
      	of the end of all header lines.
      svn path=/trunk/; revision=2551
  31. 20 Apr, 2000 1 commit
    • NotZed's avatar
      MERGE NEW_PARSER branch into HEAD, fixed conflicts. · 383f245d
      NotZed authored
      2000-04-20  NotZed  <NotZed@HelixCode.com>
      	* MERGE NEW_PARSER branch into HEAD, fixed conflicts.
      	* gmime-content-field.c (_print_parameter): Duh, removed again
      	(@@#$@ cvs merge).
      	* camel-mime-utils.c (header_content_type_is): Constify.
      	(header_content_type_unref): Killed a couple warnings.
      	* camel-folder.c (_init): Removed more log crap.
      	* providers/Makefile.am (SUBDIRS): Removed nntp, pending fixes for
      	summary changes.
      	* providers/mbox/camel-mbox-folder.c (_get_message_by_number):
      	Fixed for new summary interface.  Added a warning for using this
      	broken api.
      	(_get_message_by_uid): Fixed for message new with session
      svn path=/trunk/; revision=2531