Mercurial > pidgin
diff libpurple/protocols/oscar/oscar.c @ 28098:7a211be81a6b
Strip off the outer <html> and <body> from iChat messages. Should Fix #9968.
A recent fix in purple_markup_strip_html exposed an issue with iChat
messages, since they contain an <html/> that is not the outermost element.
Before, what was passed to libpurple looked like this:
<font back="#E68CBD"><font color="#000000"><html><body ichatballooncolor="#E68CBD" ichattextcolor="#000000"><font face="Helvetica" ABSZ=12 color="#000000">message</font></body></html></font></font>
Now, it looks like this:
<font back="#E68CBD"><font color="#000000"><font face="Helvetica" ABSZ=12 color="#000000">message</font></font></font>
Better than it was before? Yes.
Worth fixing the fact there are 3 font tags? Probably not.
My iChat friend is offline, but it worked properly when I tested this
routine all by itself.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Wed, 26 Aug 2009 05:55:25 +0000 |
parents | 0a587ffcab9b |
children | 98c5109a3d1f |
line wrap: on
line diff
--- a/libpurple/protocols/oscar/oscar.c Wed Aug 26 01:09:33 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.c Wed Aug 26 05:55:25 2009 +0000 @@ -2405,6 +2405,21 @@ if (purple_markup_find_tag("body", tmp, &start, &end, &attribs)) { const char *ichattextcolor, *ichatballooncolor; + const char *start2, *end2; + GData *unused; + + /* + * Find the ending </body> so we can strip off the outer <html/> + * and <body/> + */ + if (purple_markup_find_tag("/body", end + 1, &start2, &end2, &unused)) + { + gchar *tmp2; + tmp2 = g_strndup(end + 1, (start2 - 1) - (end + 1) + 1); + g_free(tmp); + tmp = tmp2; + g_datalist_clear(&unused); + } ichattextcolor = g_datalist_get_data(&attribs, "ichattextcolor"); if (ichattextcolor != NULL)