Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 91862
Collapse All | Expand All

(-)gaim/gaim/src/util.c (-19 / +20 lines)
Lines 1410-1417 Link Here
1410
gaim_markup_linkify(const char *text)
1410
gaim_markup_linkify(const char *text)
1411
{
1411
{
1412
	const char *c, *t, *q = NULL;
1412
	const char *c, *t, *q = NULL;
1413
	char *tmp, *tmpurlbuf;
1413
	char *tmp, *tmpurlbuf, *url_buf;
1414
	char url_buf[BUF_LEN * 4];
1415
	gunichar g;
1414
	gunichar g;
1416
	gboolean inside_html = FALSE;
1415
	gboolean inside_html = FALSE;
1417
	int inside_paren = 0;
1416
	int inside_paren = 0;
Lines 1467-1477 Link Here
1467
						t--;
1466
						t--;
1468
					}
1467
					}
1469
1468
1470
					strncpy(url_buf, c, t - c);
1469
					url_buf = g_strndup(c, t - c);
1471
					url_buf[t - c] = 0;
1472
					tmpurlbuf = gaim_unescape_html(url_buf);
1470
					tmpurlbuf = gaim_unescape_html(url_buf);
1473
					g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>",
1471
					g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>",
1474
							tmpurlbuf, url_buf);
1472
							tmpurlbuf, url_buf);
1473
					g_free(url_buf);
1475
					g_free(tmpurlbuf);
1474
					g_free(tmpurlbuf);
1476
					c = t;
1475
					c = t;
1477
					break;
1476
					break;
Lines 1500-1511 Link Here
1500
						if ((*(t - 1) == ')' && (inside_paren > 0))) {
1499
						if ((*(t - 1) == ')' && (inside_paren > 0))) {
1501
							t--;
1500
							t--;
1502
						}
1501
						}
1503
						strncpy(url_buf, c, t - c);
1502
						url_buf = g_strndup(c, t - c);
1504
						url_buf[t - c] = 0;
1505
						tmpurlbuf = gaim_unescape_html(url_buf);
1503
						tmpurlbuf = gaim_unescape_html(url_buf);
1506
						g_string_append_printf(ret,
1504
						g_string_append_printf(ret,
1507
								"<A HREF=\"http://%s\">%s</A>", tmpurlbuf,
1505
								"<A HREF=\"http://%s\">%s</A>", tmpurlbuf,
1508
								url_buf);
1506
								url_buf);
1507
						g_free(url_buf);
1509
						g_free(tmpurlbuf);
1508
						g_free(tmpurlbuf);
1510
						c = t;
1509
						c = t;
1511
						break;
1510
						break;
Lines 1524-1534 Link Here
1524
					if ((*(t - 1) == ')' && (inside_paren > 0))) {
1523
					if ((*(t - 1) == ')' && (inside_paren > 0))) {
1525
						t--;
1524
						t--;
1526
					}
1525
					}
1527
					strncpy(url_buf, c, t - c);
1526
					g_strndup(c, t - c);
1528
					url_buf[t - c] = 0;
1529
					tmpurlbuf = gaim_unescape_html(url_buf);
1527
					tmpurlbuf = gaim_unescape_html(url_buf);
1530
					g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>",
1528
					g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>",
1531
							tmpurlbuf, url_buf);
1529
							tmpurlbuf, url_buf);
1530
					g_free(url_buf);
1532
					g_free(tmpurlbuf);
1531
					g_free(tmpurlbuf);
1533
					c = t;
1532
					c = t;
1534
					break;
1533
					break;
Lines 1551-1562 Link Here
1551
						if ((*(t - 1) == ')' && (inside_paren > 0))) {
1550
						if ((*(t - 1) == ')' && (inside_paren > 0))) {
1552
							t--;
1551
							t--;
1553
						}
1552
						}
1554
						strncpy(url_buf, c, t - c);
1553
						url_buf = g_strndup(c, t - c);
1555
						url_buf[t - c] = 0;
1556
						tmpurlbuf = gaim_unescape_html(url_buf);
1554
						tmpurlbuf = gaim_unescape_html(url_buf);
1557
						g_string_append_printf(ret,
1555
						g_string_append_printf(ret,
1558
								"<A HREF=\"ftp://%s\">%s</A>", tmpurlbuf,
1556
								"<A HREF=\"ftp://%s\">%s</A>", tmpurlbuf,
1559
								url_buf);
1557
								url_buf);
1558
						g_free(url_buf);
1560
						g_free(tmpurlbuf);
1559
						g_free(tmpurlbuf);
1561
						c = t;
1560
						c = t;
1562
						break;
1561
						break;
Lines 1572-1582 Link Here
1572
				if (badchar(*t) || badentity(t)) {
1571
				if (badchar(*t) || badentity(t)) {
1573
					if (*(t - 1) == '.')
1572
					if (*(t - 1) == '.')
1574
						t--;
1573
						t--;
1575
					strncpy(url_buf, c, t - c);
1574
					url_buf = g_strndup(c, t - c);
1576
					url_buf[t - c] = 0;
1577
					tmpurlbuf = gaim_unescape_html(url_buf);
1575
					tmpurlbuf = gaim_unescape_html(url_buf);
1578
					g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>",
1576
					g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>",
1579
							  tmpurlbuf, url_buf);
1577
							  tmpurlbuf, url_buf);
1578
					g_free(url_buf);
1580
					g_free(tmpurlbuf);
1579
					g_free(tmpurlbuf);
1581
					c = t;
1580
					c = t;
1582
					break;
1581
					break;
Lines 1590-1604 Link Here
1590
			int flag;
1589
			int flag;
1591
			GString *gurl_buf;
1590
			GString *gurl_buf;
1592
			const char illegal_chars[] = "!@#$%^&*()[]{}/|\\<>\":;\r\n \0";
1591
			const char illegal_chars[] = "!@#$%^&*()[]{}/|\\<>\":;\r\n \0";
1593
			url_buf[0] = 0;
1594
1592
1595
			if (strchr(illegal_chars,*(c - 1)) || strchr(illegal_chars, *(c + 1)))
1593
			if (strchr(illegal_chars,*(c - 1)) || strchr(illegal_chars, *(c + 1)))
1596
				flag = 0;
1594
				flag = 0;
1597
			else
1595
			else {
1598
				flag = 1;
1596
				flag = 1;
1597
				gurl_buf = g_string_new("");
1598
			}
1599
1599
1600
			t = c;
1600
			t = c;
1601
			gurl_buf = g_string_new("");
1602
			while (flag) {
1601
			while (flag) {
1603
				/* iterate backwards grabbing the local part of an email address */
1602
				/* iterate backwards grabbing the local part of an email address */
1604
				g = g_utf8_get_char(t);
1603
				g = g_utf8_get_char(t);
Lines 1626-1636 Link Here
1626
				if (badchar(*t) || (g >= 127) || (*t == ')') || badentity(t)) {
1625
				if (badchar(*t) || (g >= 127) || (*t == ')') || badentity(t)) {
1627
					char *d;
1626
					char *d;
1628
1627
1629
					strcpy(url_buf, gurl_buf->str);
1628
					url_buf = g_string_free(gurl_buf, FALSE);
1630
1629
1631
					/* strip off trailing periods */
1630
					/* strip off trailing periods */
1632
					for (d = url_buf + strlen(url_buf) - 1; *d == '.'; d--, t--)
1631
					if (strlen(url_buf) > 0) {
1633
						*d = '\0';
1632
						for (d = url_buf + strlen(url_buf) - 1; *d == '.'; d--, t--)
1633
							*d = '\0';
1634
					}
1634
1635
1635
					tmpurlbuf = gaim_unescape_html(url_buf);
1636
					tmpurlbuf = gaim_unescape_html(url_buf);
1636
					if (gaim_email_is_valid(tmpurlbuf)) {
1637
					if (gaim_email_is_valid(tmpurlbuf)) {
Lines 1639-1644 Link Here
1639
					} else {
1640
					} else {
1640
						g_string_append(ret, url_buf);
1641
						g_string_append(ret, url_buf);
1641
					}
1642
					}
1643
					g_free(url_buf);
1642
					g_free(tmpurlbuf);
1644
					g_free(tmpurlbuf);
1643
					c = t;
1645
					c = t;
1644
1646
Lines 1648-1654 Link Here
1648
					t = g_utf8_find_next_char(t, NULL);
1650
					t = g_utf8_find_next_char(t, NULL);
1649
				}
1651
				}
1650
			}
1652
			}
1651
			g_string_free(gurl_buf, TRUE);
1652
		}
1653
		}
1653
1654
1654
		if(*c == ')' && !inside_html) {
1655
		if(*c == ')' && !inside_html) {

Return to bug 91862