[Evolution-hackers] redesign of camel's mime-part content objects
- From: Jeffrey Stedfast <fejj ximian com>
- To: evolution-hackers ximian com
- Subject: [Evolution-hackers] redesign of camel's mime-part content objects
- Date: Thu, 10 Jul 2003 16:28:41 -0400
- CamelDataWrapper gets changed so that it has a CamelEncodingType
enum rather than int rawtext member (since rawtext will now always be
TRUE).
- CamelDataWrapper::write_to_stream() will qp/base64 decode for us,
but will not do any charset conversion. Perhaps have a flag as to
whether to decode? this way if we are re-writing out the raw message
someplace, no need to have write_to_stream() decode, cuz then we'd
have to re-encode which would break the whole point of this change.
Hmmm, could we maybe have camel-mime-part.c grab the dw's stream and
write that out raw instead? Will this work in the offline case?
Problem is that if we make the write_to_stream() interface take a
flag as to whether or not to decode, we have to pass extra garbage
(which wouldn't even make sense) when writing out CamelMimeMessages
or CamelMimePart objects.
- camel-mime-part-utils.c will no longer qp/base64 decode the content,
rather it will just read it raw into a memory stream and then set
that on a CamelDataWrapper and also set which decoder to use.
- this means the mailer code will have to do its own UTF-8 conversion,
but that isn't so bad - most of the code is already there to do that
anyway.
- need to scan the text stream if it is an iso-8859-x charset in
order to check for it being a windows-cp125x charset (should we do
this even in the case of a user specifying the preferred charset
to display as? probably not).
- parse the HTML to get the HTML content charset in the case where a
charset isn't specified in the Content-Type header?
- camel-mime-part.c:write_to_stream() will get simplified a bit by not
needing to worry about base64/qp/etc encoding because the content
will already be encoded.
Actually, no, we'll still have to worry about this because we may
have to change the content-transfer-encoding when sending mail or
something. The way I handled this in gmime was to check if the
encodings were the same on the dw and the part, if so - just write
the raw stream (dw->stream), otherwise use the dw's
write_to_stream() method to write the decoded stream to a filtered
stream that would re-encode it in the proper encoding.
if we do it this way, then we shouldn't need to worry about changing
the way the composer code works (which is a plus).
- anything else? other than renaming CamelDataWrapper::offline to
something more intuitive, like maybe 'is_remote' or 'offsite' or
something.
--
Jeffrey Stedfast
Evolution Hacker - Ximian, Inc.
fejj ximian com - www.ximian.com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]