From 4abc19223f8e8678e62148772215522dc5396448 Mon Sep 17 00:00:00 2001 From: Jose Millan Soto Date: Wed, 7 Apr 2010 11:12:28 +0200 Subject: Ignore case of URL schemes We only accept lowercase schemes right now, for no good reason. Bug #605089 Signed-off-by: Xan Lopez --- embed/ephy-embed-utils.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'embed') diff --git a/embed/ephy-embed-utils.c b/embed/ephy-embed-utils.c index 3463f2d52..e163680be 100644 --- a/embed/ephy-embed-utils.c +++ b/embed/ephy-embed-utils.c @@ -81,18 +81,23 @@ gboolean ephy_embed_utils_address_has_web_scheme (const char *address) { gboolean has_web_scheme; + int colonpos; if (address == NULL) return FALSE; - has_web_scheme = (g_str_has_prefix (address, "http:") || - g_str_has_prefix (address, "https:") || - g_str_has_prefix (address, "ftp:") || - g_str_has_prefix (address, "file:") || - g_str_has_prefix (address, "data:") || - g_str_has_prefix (address, "about:") || - g_str_has_prefix (address, "javascript:") || - g_str_has_prefix (address, "mailto:") || - g_str_has_prefix (address, "gopher:")); + colonpos = (int)((g_strstr_len (address, 11, ":")) - address); + + if (colonpos < 0) return FALSE; + + has_web_scheme = !(g_ascii_strncasecmp (address, "http", colonpos) && + g_ascii_strncasecmp (address, "https", colonpos) && + g_ascii_strncasecmp (address, "ftp", colonpos) && + g_ascii_strncasecmp (address, "file", colonpos) && + g_ascii_strncasecmp (address, "javascript", colonpos) && + g_ascii_strncasecmp (address, "data", colonpos) && + g_ascii_strncasecmp (address, "about", colonpos) && + g_ascii_strncasecmp (address, "gopher", colonpos) && + g_ascii_strncasecmp (address, "mailto", colonpos)); return has_web_scheme; } -- cgit v1.2.3