Christmas Vacation Hacks
Evolution
There's been discussion about Evolution not handling some brokenly
rfc2047 encoded message headers recently, so I ported some workaround
logic from GMime to Camel yesterday. I think this should turn a lot of
frowns upside down when Evolution 2.22 is released. The new rfc2047
header decoder in Evolution is now more accepting than Thunderbird's
decoder[1], so I hope this will satisfy everyone.
The new rfc2047 decoder will now handle the following cases:
* encoded-words embedded inside other tokens (e.g
n=?iso-8859-1?q?a=EF?=ve)
* encoded-words with LWSP in the encoded-text section (e.g.
=?iso-8859-1?q?Look ma! there's spaces!?=)
* some encoded-word tokens with unencoded special chars in the
encoded-text section (such as ? marks and other specials -
obviously this can't always work if a special sequence occurrs)
* encoded-word tokens with no LWSP between them
* no longer aborts if the encoded-text cannot be completely
converted to UTF-8 from the charset provided, instead it will
attempt to find a more suitable charset to use for conversion
and/or replace invalid byte sequences with a '?'
This should fix all of the more common broken-mailer cases, or at
least all of the ones that are worth even bothering to try and work
around.
GMime
Did some digging and discovered how to document more things using
gtk-doc, so GMime's documentation has been getting improved. All of
the public functions in GMime now appear in the documentation (I had
forgotten to add some of the newer API additions to the
gmime-sections.txt file) as well as began writing documentation for
each of the doc sections (which I hadn't known how to document
previously).
You can find up-to-the-minute GMime documentation here as I continue
to chug away at expanding it.
While porting GMime's rfc2047 decoding logic to Evolution, I
discovered some areas I could improve in GMime too.
1. After having ported my GMime decoder logic to Camel, I was curious
to see how Thunderbird handled broken rfc2047 encoded headers and so
had myself a peek at
mozilla/netwerk/mime/src/nsMIMEHeaderParamImpl.cpp and noted that my
new logic in Camel would handle everything that Thunderbird would
handle and more.
I also took a peek at KMail's rfc2047 header decoding logic and
discovered Evolution is now more flexible than it as well (again,
Evolution now handles everything that KMail's decoder handles and
more).
No comments:
Post a Comment