[Xfce4-commits] <postler:master> Validate while escaping to work around broken encoding
Christian Dywan
noreply at xfce.org
Sun Jun 6 23:10:02 CEST 2010
Updating branch refs/heads/master
to cdcb55273c2593636d9bec5db3727e3657950033 (commit)
from 3ff28ba74b9f212dd9e85425baab33517357dd8c (commit)
commit cdcb55273c2593636d9bec5db3727e3657950033
Author: Christian Dywan <christian at twotoasts.de>
Date: Sun Jun 6 15:41:52 2010 +0200
Validate while escaping to work around broken encoding
postler/postler-messages.vala | 36 +++++++++++++++++++++++++++++++++++-
1 files changed, 35 insertions(+), 1 deletions(-)
diff --git a/postler/postler-messages.vala b/postler/postler-messages.vala
index 79ef44c..d8b050f 100644
--- a/postler/postler-messages.vala
+++ b/postler/postler-messages.vala
@@ -54,6 +54,40 @@ public class Postler.Messages : Gtk.TreeView {
selected_location = location;
}
+ static string escape_text (string text) {
+ /* Like Markup.escape_text, but including UTF-8 validation */
+ var escaped = new StringBuilder.sized (text.size () * 2);
+ for (unowned string s = text; s.get_char () != 0 ; s = s.next_char ()) {
+ unichar character = s.get_char ();
+ switch (character) {
+ case '&':
+ escaped.append ("&");
+ break;
+ case '<':
+ escaped.append ("<");
+ break;
+ case '>':
+ escaped.append (">");
+ break;
+ case '\'':
+ escaped.append ("'");
+ break;
+ case '"':
+ escaped.append (""");
+ break;
+ default:
+ if (character.iscntrl ())
+ escaped.append_c (' ');
+ else if (!character.validate ())
+ escaped.append_unichar ('�');
+ else
+ escaped.append_unichar (character);
+ break;
+ }
+ }
+ return escaped.str;
+ }
+
void render_subject (Gtk.TreeViewColumn column, Gtk.CellRenderer cell,
Gtk.TreeModel model, Gtk.TreeIter iter) {
string charset, subject;
@@ -79,7 +113,7 @@ public class Postler.Messages : Gtk.TreeView {
Columns.FROM, out from,
-1);
- subject = Markup.escape_text (parse_encoded (subject, out charset));
+ subject = escape_text (parse_encoded (subject, out charset));
renderer.markup = ("<span weight=\"%d\">%s</span> <small>%s</small>\n" +
"<small><tt>%s </tt></small> %s").printf (
weight, subject,
More information about the Xfce4-commits
mailing list