aboutsummaryrefslogtreecommitdiffstats
path: root/my-evolution
diff options
context:
space:
mode:
Diffstat (limited to 'my-evolution')
-rw-r--r--my-evolution/ChangeLog7
-rw-r--r--my-evolution/e-summary-rdf.c20
2 files changed, 22 insertions, 5 deletions
diff --git a/my-evolution/ChangeLog b/my-evolution/ChangeLog
index 697a12108a..d512e6c376 100644
--- a/my-evolution/ChangeLog
+++ b/my-evolution/ChangeLog
@@ -1,3 +1,10 @@
+2003-05-02 Not Zed <NotZed@Ximian.com>
+
+ [#41849]
+
+ * e-summary-rdf.c (tree_walk): check the in-memory charset, not
+ the transport charset when creating output.
+
2003-04-18 Rodney Dawes <dobey@ximian.com>
[#21499]
diff --git a/my-evolution/e-summary-rdf.c b/my-evolution/e-summary-rdf.c
index 70ce86687d..a0a7adf58d 100644
--- a/my-evolution/e-summary-rdf.c
+++ b/my-evolution/e-summary-rdf.c
@@ -180,6 +180,7 @@ tree_walk (xmlNodePtr root,
int i;
char *t, *u;
char *tmp;
+ char *charset;
if (r->summary->preferences == NULL) {
limit = 10;
@@ -187,6 +188,15 @@ tree_walk (xmlNodePtr root,
limit = r->summary->preferences->limit;
}
+ /* check in-memory encoding first, fallback to transport encoding, which may or may not be correct */
+ if (r->cache->charset == XML_CHAR_ENCODING_UTF8
+ || r->cache->charset == XML_CHAR_ENCODING_ASCII) {
+ charset = NULL;
+ } else {
+ /* bad/missing encoding, fallback to latin1 (locale?) */
+ charset = r->cache->encoding ? r->cache->encoding : "iso-8859-1";
+ }
+
/* FIXME: Need arrows */
if (r->shown == FALSE) {
char *p;
@@ -252,8 +262,8 @@ tree_walk (xmlNodePtr root,
if (*u != '\0')
g_string_sprintfa (html, "<a href=\"%s\">", u);
- if (r->cache->encoding) {
- char *tmp = e_utf8_from_charset_string (r->cache->encoding, t);
+ if (charset) {
+ char *tmp = e_utf8_from_charset_string (charset, t);
g_string_append (html, tmp);
g_free (tmp);
} else {
@@ -278,9 +288,9 @@ tree_walk (xmlNodePtr root,
tmp = g_strdup_printf ("<LI><font size=\"-1\"><A href=\"%s\">\n", layer_find_url(item[i]->children, "link", ""));
g_string_append (html, tmp);
g_free (tmp);
-
- if (r->cache->encoding) {
- char *tmp = e_utf8_from_charset_string (r->cache->encoding, p);
+
+ if (charset) {
+ char *tmp = e_utf8_from_charset_string (charset, p);
g_string_append (html, tmp);
g_free (tmp);
} else {