# HG changeset patch # User Andreas Monitzer # Date 1184069201 0 # Node ID ca20c706ee5065e850606f5182f65f5b2ada638b # Parent a8420fd185453da862a138d628e1eda4b1886080 Allowing img tags in XHTML messages (for MSN-style custom emoticons and other features). diff -r a8420fd18545 -r ca20c706ee50 libpurple/util.c --- a/libpurple/util.c Sun Jul 08 22:52:48 2007 +0000 +++ b/libpurple/util.c Tue Jul 10 12:06:41 2007 +0000 @@ -1428,6 +1428,47 @@ xhtml = g_string_append(xhtml, ""); continue; } + if(!g_ascii_strncasecmp(c, "' || *(c+4) == ' ')) { + const char *p = c; + GString *src = NULL, *alt = NULL; + while(*p && *p != '>') { + if(!g_ascii_strncasecmp(p, "src=", strlen("src="))) { + const char *q = p + strlen("src="); + src = g_string_new(""); + if(*q == '\'' || *q == '\"') + q++; + while(*q && *q != '\"' && *q != '\'' && *q != ' ') { + src = g_string_append_c(src, *q); + q++; + } + p = q; + } else if(!g_ascii_strncasecmp(p, "alt=", strlen("alt="))) { + const char *q = p + strlen("alt="); + alt = g_string_new(""); + if(*q == '\'' || *q == '\"') + q++; + while(*q && *q != '\"' && *q != '\'' && *q != ' ') { + alt = g_string_append_c(alt, *q); + q++; + } + p = q; + } + p++; + } + if ((c = strchr(c, '>')) != NULL) + c++; + else + c = p; + /* src and alt are required! */ + if(src && alt) + g_string_append_printf(xhtml, "%s", g_strstrip(src->str), alt->str); + if(alt) { + plain = g_string_append(plain, alt->str); + if(!src) + xhtml = g_string_append(xhtml, alt->str); + } + continue; + } if(!g_ascii_strncasecmp(c, "' || *(c+2) == ' ')) { const char *p = c; struct purple_parse_tag *pt;