[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