Mercurial > pidgin
comparison 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 |
comparison
equal
deleted
inserted
replaced
28097:572073acf8e7 | 28098:7a211be81a6b |
---|---|
2403 * Convert iChat color tags to normal font tags. | 2403 * Convert iChat color tags to normal font tags. |
2404 */ | 2404 */ |
2405 if (purple_markup_find_tag("body", tmp, &start, &end, &attribs)) | 2405 if (purple_markup_find_tag("body", tmp, &start, &end, &attribs)) |
2406 { | 2406 { |
2407 const char *ichattextcolor, *ichatballooncolor; | 2407 const char *ichattextcolor, *ichatballooncolor; |
2408 const char *start2, *end2; | |
2409 GData *unused; | |
2410 | |
2411 /* | |
2412 * Find the ending </body> so we can strip off the outer <html/> | |
2413 * and <body/> | |
2414 */ | |
2415 if (purple_markup_find_tag("/body", end + 1, &start2, &end2, &unused)) | |
2416 { | |
2417 gchar *tmp2; | |
2418 tmp2 = g_strndup(end + 1, (start2 - 1) - (end + 1) + 1); | |
2419 g_free(tmp); | |
2420 tmp = tmp2; | |
2421 g_datalist_clear(&unused); | |
2422 } | |
2408 | 2423 |
2409 ichattextcolor = g_datalist_get_data(&attribs, "ichattextcolor"); | 2424 ichattextcolor = g_datalist_get_data(&attribs, "ichattextcolor"); |
2410 if (ichattextcolor != NULL) | 2425 if (ichattextcolor != NULL) |
2411 { | 2426 { |
2412 gchar *tmp2; | 2427 gchar *tmp2; |