[Xfce4-commits] <midori:master> Unescape HTML entities when importing bookmarks from Netscape HTML.
Christian Dywan
noreply at xfce.org
Thu Feb 17 20:20:01 CET 2011
Updating branch refs/heads/master
to 2c4015ab9407175565e62a2f991e9487e8cebfd1 (commit)
from e272fc04f2724568ecbae66a5322388bca604c1a (commit)
commit 2c4015ab9407175565e62a2f991e9487e8cebfd1
Author: Paweł Forysiuk <tuxator at o2.pl>
Date: Wed Feb 16 16:47:09 2011 +0100
Unescape HTML entities when importing bookmarks from Netscape HTML.
midori/midori-array.c | 47 +++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/midori/midori-array.c b/midori/midori-array.c
index 20c4989..c649471 100644
--- a/midori/midori-array.c
+++ b/midori/midori-array.c
@@ -293,6 +293,45 @@ katze_array_from_xmlDocPtr (KatzeArray* array,
return TRUE;
}
+static gchar*
+katze_unescape_html (const gchar* text)
+{
+ gchar* amp = g_strstr_len (text, -1, "&");
+
+ if (amp && *amp)
+ {
+ if (!strncmp (amp, """, 6) || !strncmp (amp, "&", 5)
+ || !strncmp (amp, "<", 4) || !strncmp (amp, ">", 4)
+ || !strncmp (amp, "'", 6))
+ {
+ guint i = 0;
+ gchar** parts = g_strsplit_set (text, "&;", -1);
+ GString *unescaped = g_string_new (NULL);
+
+ while (parts[i])
+ {
+ if (katze_str_equal ("quot", parts[i]))
+ g_string_append (unescaped, "\"");
+ else if (katze_str_equal ("amp", parts[i]))
+ g_string_append (unescaped, "&");
+ else if (katze_str_equal ("lt", parts[i]))
+ g_string_append (unescaped, "<");
+ else if (katze_str_equal ("gt", parts[i]))
+ g_string_append (unescaped, ">");
+ else if (katze_str_equal ("apos", parts[i]))
+ g_string_append (unescaped, "'");
+ else
+ g_string_append (unescaped, parts[i]);
+ i++;
+ }
+ g_strfreev (parts);
+
+ return g_string_free (unescaped, FALSE);
+ }
+ }
+ return g_strdup (text);
+}
+
static gboolean
katze_array_from_netscape_file (KatzeArray* array,
const gchar* filename)
@@ -322,8 +361,8 @@ katze_array_from_netscape_file (KatzeArray* array,
gchar** parts = g_strsplit (line, "\"", -1);
item = katze_item_new ();
katze_array_add_item (folder, item);
- item->name = g_strdup (element[4]);
- item->uri = g_strdup (parts[1]);
+ item->name = katze_unescape_html (element[4]);
+ item->uri = katze_unescape_html (parts[1]);
g_strfreev (parts);
}
/* item is folder */
@@ -332,14 +371,14 @@ katze_array_from_netscape_file (KatzeArray* array,
item = (KatzeItem*)katze_array_new (KATZE_TYPE_ARRAY);
katze_array_add_item (folder, item);
folder = (KatzeArray*)item;
- item->name = g_strdup (element[4]);
+ item->name = katze_unescape_html (element[4]);
}
}
/* item description */
if (item && katze_str_equal (element[1], "DD"))
{
if (element[2])
- item->text = g_strdup (element[2]);
+ item->text = katze_unescape_html (element[2]);
item = NULL;
}
/* end of current folder, level-up */
More information about the Xfce4-commits
mailing list