libpurple/util.c

branch
soc.2007.xmpp
changeset 17842
72d8799d2913
parent 17839
de5c923051a9
parent 17832
338d45124cad
child 18718
17a6c2c4820e
equal deleted inserted replaced
17841:e166b236738a 17842:72d8799d2913
1424 pt->src_tag = "sup"; 1424 pt->src_tag = "sup";
1425 pt->dest_tag = "span"; 1425 pt->dest_tag = "span";
1426 tags = g_list_prepend(tags, pt); 1426 tags = g_list_prepend(tags, pt);
1427 c = strchr(c, '>') + 1; 1427 c = strchr(c, '>') + 1;
1428 xhtml = g_string_append(xhtml, "<span style='vertical-align:super;'>"); 1428 xhtml = g_string_append(xhtml, "<span style='vertical-align:super;'>");
1429 continue;
1430 }
1431 if(!g_ascii_strncasecmp(c, "<img", 4) && (*(c+4) == '>' || *(c+4) == ' ')) {
1432 const char *p = c;
1433 GString *src = NULL, *alt = NULL;
1434 while(*p && *p != '>') {
1435 if(!g_ascii_strncasecmp(p, "src=", strlen("src="))) {
1436 const char *q = p + strlen("src=");
1437 src = g_string_new("");
1438 if(*q == '\'' || *q == '\"')
1439 q++;
1440 while(*q && *q != '\"' && *q != '\'' && *q != ' ') {
1441 src = g_string_append_c(src, *q);
1442 q++;
1443 }
1444 p = q;
1445 } else if(!g_ascii_strncasecmp(p, "alt=", strlen("alt="))) {
1446 const char *q = p + strlen("alt=");
1447 alt = g_string_new("");
1448 if(*q == '\'' || *q == '\"')
1449 q++;
1450 while(*q && *q != '\"' && *q != '\'' && *q != ' ') {
1451 alt = g_string_append_c(alt, *q);
1452 q++;
1453 }
1454 p = q;
1455 }
1456 p++;
1457 }
1458 if ((c = strchr(c, '>')) != NULL)
1459 c++;
1460 else
1461 c = p;
1462 /* src and alt are required! */
1463 if(src && alt)
1464 g_string_append_printf(xhtml, "<img src='%s' alt='%s' />", g_strstrip(src->str), alt->str);
1465 if(alt) {
1466 plain = g_string_append(plain, alt->str);
1467 if(!src)
1468 xhtml = g_string_append(xhtml, alt->str);
1469 }
1470 continue; 1429 continue;
1471 } 1430 }
1472 if(!g_ascii_strncasecmp(c, "<a", 2) && (*(c+2) == '>' || *(c+2) == ' ')) { 1431 if(!g_ascii_strncasecmp(c, "<a", 2) && (*(c+2) == '>' || *(c+2) == ' ')) {
1473 const char *p = c; 1432 const char *p = c;
1474 struct purple_parse_tag *pt; 1433 struct purple_parse_tag *pt;

mercurial