| 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; |