--- gaim-0.59.9/src/html.c.buffer3 Thu Feb 12 11:59:44 2004
+++ gaim-0.59.9/src/html.c Thu Feb 12 11:59:48 2004
@@ -78,35 +78,51 @@
{
struct g_url *test = g_new0(struct g_url, 1);
char scan_info[255];
- char port[5];
+ char port[6];
+ /* hyphen at end includes it in control set */
+ static char addr_ctrl[] = "A-Za-z0-9.-";
+ static char port_ctrl[] = "0-9";
+ static char page_ctrl[] = "A-Za-z0-9.~_/:*!@&%%?=+^-";
+
int f;
if (strstr(url, "http://"))
g_snprintf(scan_info, sizeof(scan_info),
- "http://%%[A-Za-z0-9.]:%%[0-9]/%%[A-Za-z0-9.~_-/&%%?=+]");
+ "http://%%255[%s]:%%5[%s]/%%255[%s]", addr_ctrl, port_ctrl, page_ctrl);
else
g_snprintf(scan_info, sizeof(scan_info),
- "%%[A-Za-z0-9.]:%%[0-9]/%%[A-Za-z0-9.~_-/&%%?=+^]");
+ "%%255[%s]:%%5[%s]/%%255[%s]", addr_ctrl, port_ctrl, page_ctrl);
+ addr_ctrl[sizeof(addr_ctrl)-1] = '\0';
+ port_ctrl[sizeof(port_ctrl)-1] = '\0';
+ page_ctrl[sizeof(page_ctrl)-1] = '\0';
+
f = sscanf(url, scan_info, test->address, port, test->page);
if (f == 1) {
if (strstr(url, "http://"))
g_snprintf(scan_info, sizeof(scan_info),
- "http://%%[A-Za-z0-9.]/%%[A-Za-z0-9.~_-/&%%?=+^]");
+ "http://%%255[%s]/%%255[%s]", addr_ctrl, page_ctrl);
else
g_snprintf(scan_info, sizeof(scan_info),
- "%%[A-Za-z0-9.]/%%[A-Za-z0-9.~_-/&%%?=+^]");
+ "%%255[%s]/%%255[%s]", addr_ctrl, page_ctrl);
f = sscanf(url, scan_info, test->address, test->page);
+ addr_ctrl[sizeof(addr_ctrl)-1] = '\0';
+ page_ctrl[sizeof(page_ctrl)-1] = '\0';
g_snprintf(port, sizeof(test->port), "80");
port[2] = 0;
}
if (f == 1) {
if (strstr(url, "http://"))
- g_snprintf(scan_info, sizeof(scan_info), "http://%%[A-Za-z0-9.]");
+ g_snprintf(scan_info, sizeof(scan_info),
+ "http://%%255[%s]", addr_ctrl);
else
- g_snprintf(scan_info, sizeof(scan_info), "%%[A-Za-z0-9.]");
+ g_snprintf(scan_info, sizeof(scan_info),
+ "%%255[%s]", addr_ctrl);
+ addr_ctrl[sizeof(addr_ctrl)-1] = '\0';
f = sscanf(url, scan_info, test->address);
g_snprintf(test->page, sizeof(test->page), "%c", '\0');
}
+ if (f == 1)
+ *test->page = '\0';
sscanf(port, "%d", &test->port);
return test;