diff options
author | Michael Zucci <zucchi@src.gnome.org> | 2001-09-21 11:05:03 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2001-09-21 11:05:03 +0800 |
commit | 7d17dc2230c4a3b650849ad6e2dcdc5ebf6cb47e (patch) | |
tree | 233272ab1dd5d9923f4d2e57d9a0e594fe10efff /camel/camel-mime-utils.c | |
parent | f21fc37e3c2025f2a6b4ed3a24123d2a7fd5eed4 (diff) | |
download | gsoc2013-evolution-7d17dc2230c4a3b650849ad6e2dcdc5ebf6cb47e.tar.gz gsoc2013-evolution-7d17dc2230c4a3b650849ad6e2dcdc5ebf6cb47e.tar.zst gsoc2013-evolution-7d17dc2230c4a3b650849ad6e2dcdc5ebf6cb47e.zip |
New function to just load the summary. Not much use yet, until unread
* camel-folder-summary.c (camel_folder_summary_header_load): New
function to just load the summary. Not much use yet, until unread
counts are stored in the summary (which now looks like too much
work!).
* camel-mime-utils.c (header_decode_mailbox): Crappy fix for
stupid mailers. If we get 'name b. name <foo>' then treat it as
'"name b. name" <foo>'. See 8147.
(header_decode_mailbox): Another fix for really broken mailers
that have things that look like addresses followed by <address>
bits.
(rfc2047_encode_word): Escape ??= to avoid some bizarre warning
about trigraphs.
(scan_dir): If we dont have the folder open, then scan the 'new'
and 'cur' folders for new and unread messages to count instead.
svn path=/trunk/; revision=13040
Diffstat (limited to 'camel/camel-mime-utils.c')
-rw-r--r-- | camel/camel-mime-utils.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/camel/camel-mime-utils.c b/camel/camel-mime-utils.c index 6bbf21cd5f..e1f483023d 100644 --- a/camel/camel-mime-utils.c +++ b/camel/camel-mime-utils.c @@ -1194,7 +1194,7 @@ rfc2047_encode_word(GString *outstring, const char *in, int len, const char *typ proclen = 0; p = inptr; i = 0; - while (p < (in+len) && convlen < (75 - strlen("=?utf-8?q??="))) { + while (p < (in+len) && convlen < (75 - strlen("=?utf-8?q\?\?="))) { unsigned char c = *p++; if (c >= 0xc0) @@ -2313,12 +2313,21 @@ header_decode_mailbox(const char **in) } else { name = g_string_append_c(name, ' '); } + } else { + /* Fix for stupidly-broken-mailers that like to put '.''s in names unquoted */ + /* see bug #8147 */ + if (*inptr && *inptr != '<') { + g_warning("Working around stupid mailer bug #5: unescaped characters in names"); + name = g_string_append_c(name, *inptr++); + pre = header_decode_word(&inptr); + } } g_free(last); } header_decode_lwsp(&inptr); if (*inptr == '<') { closeme = TRUE; + try_address_again: inptr++; header_decode_lwsp(&inptr); if (*inptr == '@') { @@ -2375,6 +2384,14 @@ header_decode_mailbox(const char **in) addr = g_string_append(addr, dom); g_free(dom); } else { + /* If we get a <, the address was probably a name part, lets try again shall we? */ + /* Another fix for seriously-broken-mailers */ + if (name == NULL && *inptr == '<') { + name = addr; + addr = g_string_new(""); + closeme = TRUE; + goto try_address_again; + } w(g_warning("invalid address, no '@' domain part at %c: %s", *inptr, *in)); } |