aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauris Kaplinski <lauris@src.gnome.org>2001-01-03 11:12:18 +0800
committerLauris Kaplinski <lauris@src.gnome.org>2001-01-03 11:12:18 +0800
commit2934ba8dca1dd1ae21c45e53783129a2685717b2 (patch)
tree57adaf91e5fdef776a48f112f0ad9cd64ae68bc5
parent33e0d0e847cee22aaa127e3ae1e75c27cc41f5b4 (diff)
downloadgsoc2013-evolution-2934ba8dca1dd1ae21c45e53783129a2685717b2.tar.gz
gsoc2013-evolution-2934ba8dca1dd1ae21c45e53783129a2685717b2.tar.zst
gsoc2013-evolution-2934ba8dca1dd1ae21c45e53783129a2685717b2.zip
Little utf8 safe encoding/decoding into libxml1 brokenness
svn path=/trunk/; revision=7226
-rw-r--r--filter/ChangeLog12
-rw-r--r--filter/filter-input.c13
-rw-r--r--filter/filter-option.c12
-rw-r--r--filter/filter-part.c19
-rw-r--r--filter/filter-rule.c14
5 files changed, 58 insertions, 12 deletions
diff --git a/filter/ChangeLog b/filter/ChangeLog
index 9e931c4294..c35e870e39 100644
--- a/filter/ChangeLog
+++ b/filter/ChangeLog
@@ -1,3 +1,15 @@
+2001-01-02 Lauris Kaplinski <lauris@helixcode.com>
+
+ * filter-input.c (xml_encode): Encode utf8
+ (xml_decode): Decode utf8
+
+ * filter-option.c (xml_create): Decode utf8
+
+ * filter-part.c (filter_part_xml_create): Decode utf8
+
+ * filter_rule.c (xml_encode): Encode utf8
+ (xml_decode): Decode utf8
+
2001-01-02 Jeffrey Stedfast <fejj@helixcode.com>
* filter-driver.c (do_flag): Set the 'dirty' flag - this should
diff --git a/filter/filter-input.c b/filter/filter-input.c
index 556b895ef1..d154e9c898 100644
--- a/filter/filter-input.c
+++ b/filter/filter-input.c
@@ -22,6 +22,7 @@
#include <gnome.h>
#include <regex.h>
+#include <gnome-xml/xmlmemory.h>
#include <gal/widgets/e-unicode.h>
#include "filter-input.h"
@@ -226,9 +227,12 @@ xml_encode (FilterElement *fe)
while (l) {
xmlNodePtr cur;
char *str = l->data;
+ char *encstr;
cur = xmlNewChild (value, NULL, type, NULL);
- xmlNodeSetContent (cur, str);
+ encstr = e_utf8_xml1_encode (str);
+ xmlNodeSetContent (cur, encstr);
+ g_free (encstr);
l = g_list_next (l);
}
@@ -253,9 +257,12 @@ xml_decode (FilterElement *fe, xmlNodePtr node)
n = node->childs;
while (n) {
if (!strcmp (n->name, type)) {
+ gchar *decstr;
str = xmlNodeGetContent (n);
- d(printf (" '%s'\n", str));
- fi->values = g_list_append (fi->values, str);
+ decstr = e_utf8_xml1_decode (str);
+ if (str) xmlFree (str);
+ d(printf (" '%s'\n", decstr));
+ fi->values = g_list_append (fi->values, decstr);
} else {
g_warning ("Unknown node type '%s' encountered decoding a %s\n", n->name, type);
}
diff --git a/filter/filter-option.c b/filter/filter-option.c
index a6bcaad8c1..658136f0cb 100644
--- a/filter/filter-option.c
+++ b/filter/filter-option.c
@@ -175,11 +175,19 @@ xml_create (FilterElement *fe, xmlNodePtr node)
while (work) {
if (!strcmp (work->name, "title")) {
if (!op->title) {
- op->title = xmlNodeGetContent (work);
+ gchar *str, *decstr;
+ str = xmlNodeGetContent (work);
+ decstr = e_utf8_xml1_decode (str);
+ if (str) xmlFree (str);
+ op->title = decstr;
}
} else if (!strcmp (work->name, "code")) {
if (!op->code) {
- op->code = xmlNodeGetContent (work);
+ gchar *str, *decstr;
+ str = xmlNodeGetContent (work);
+ decstr = e_utf8_xml1_decode (str);
+ if (str) xmlFree (str);
+ op->code = decstr;
}
}
work = work->next;
diff --git a/filter/filter-part.c b/filter/filter-part.c
index dcd55ac92c..5d9df3a617 100644
--- a/filter/filter-part.c
+++ b/filter/filter-part.c
@@ -22,6 +22,7 @@
#include <gnome.h>
#include <gnome-xml/xmlmemory.h>
+#include <gal/widgets/e-unicode.h>
#include "filter-part.h"
#include "filter-element.h"
@@ -154,11 +155,21 @@ filter_part_xml_create (FilterPart *ff, xmlNodePtr node)
g_warning ("Invalid xml format, missing/unknown input type");
}
} else if (!strcmp (n->name, "title")) {
- if (!ff->title)
- ff->title = xmlNodeGetContent (n);
+ if (!ff->title) {
+ gchar *str, *decstr;
+ str = xmlNodeGetContent (n);
+ decstr = e_utf8_xml1_decode (str);
+ if (str) xmlFree (str);
+ ff->title = decstr;
+ }
} else if (!strcmp (n->name, "code")) {
- if (!ff->code)
- ff->code = xmlNodeGetContent (n);
+ if (!ff->code) {
+ gchar *str, *decstr;
+ str = xmlNodeGetContent (n);
+ decstr = e_utf8_xml1_decode (str);
+ if (str) xmlFree (str);
+ ff->code = decstr;
+ }
} else {
g_warning ("Unknwon part element in xml: %s\n", n->name);
}
diff --git a/filter/filter-rule.c b/filter/filter-rule.c
index 17173a1c97..663e9d7f81 100644
--- a/filter/filter-rule.c
+++ b/filter/filter-rule.c
@@ -182,8 +182,11 @@ xml_encode (FilterRule *fr)
}
if (fr->name) {
+ gchar *encstr;
work = xmlNewNode (NULL, "title");
- xmlNodeSetContent (work, fr->name);
+ encstr = e_utf8_xml1_encode (fr->name);
+ xmlNodeSetContent (work, encstr);
+ g_free (encstr);
xmlAddChild (node, work);
}
@@ -264,8 +267,13 @@ xml_decode (FilterRule *fr, xmlNodePtr node, RuleContext *f)
if (!strcmp (work->name, "partset")) {
load_set (work, fr, f);
} else if (!strcmp (work->name, "title")) {
- if (!fr->name)
- fr->name = xmlNodeGetContent (work);
+ if (!fr->name) {
+ gchar *str, *decstr;
+ str = xmlNodeGetContent (work);
+ decstr = e_utf8_xml1_decode (str);
+ if (str) xmlFree (str);
+ fr->name = decstr;
+ }
}
work = work->next;
}