mirror of
git://slackware.nl/current.git
synced 2024-12-29 10:25:00 +01:00
50 lines
1.7 KiB
Diff
50 lines
1.7 KiB
Diff
|
From 05848bb3cb10ea19ef8cba607bdabcd25560063c Mon Sep 17 00:00:00 2001
|
||
|
From: Felipe Contreras <felipe.contreras@gmail.com>
|
||
|
Date: Sun, 19 May 2013 03:50:01 +0000
|
||
|
Subject: Fix exo_str_looks_like_an_uri() (bug #10098).
|
||
|
|
||
|
Commit d11199b (Check if uris also contain a slash (bug #9244)) tried to
|
||
|
fix a hang in thunar by properly recognizing that 'http:' is not an URI,
|
||
|
however, while doing so, it broke proper URIs like 'magnet:foo'.
|
||
|
|
||
|
As the RFC clearly states:
|
||
|
|
||
|
The following are two example URIs and their component parts:
|
||
|
|
||
|
foo://example.com:8042/over/there?name=ferret#nose
|
||
|
\_/ \______________/\_________/ \_________/ \__/
|
||
|
| | | | |
|
||
|
scheme authority path query fragment
|
||
|
| _____________________|__
|
||
|
/ \ / \
|
||
|
urn:example:animal:ferret:nose
|
||
|
|
||
|
But even with this succinct example exo_str_looks_like_an_uri() fails.
|
||
|
|
||
|
There is an easy solution; fail only when component part is missing
|
||
|
('urn:'), but succeed otherwise.
|
||
|
|
||
|
This solution fixes 'magnet:foo', and doesn't break the current
|
||
|
expectation from thunar that 'http:' should fail, having the best of
|
||
|
both worlds.
|
||
|
|
||
|
[1] http://www.ietf.org/rfc/rfc3986.txt
|
||
|
|
||
|
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
|
||
|
---
|
||
|
diff --git a/exo/exo-string.c b/exo/exo-string.c
|
||
|
index 33f86f9..056b36a 100644
|
||
|
--- a/exo/exo-string.c
|
||
|
+++ b/exo/exo-string.c
|
||
|
@@ -429,7 +429,7 @@ exo_str_looks_like_an_uri (const gchar *str)
|
||
|
for (++s; g_ascii_isalnum (*s) || *s == '+' || *s == '-' || *s == '.'; ++s);
|
||
|
|
||
|
/* <scheme> must be followed by ":" */
|
||
|
- return (*s == ':' && *(s+1) == '/');
|
||
|
+ return (*s == ':' && *(s+1) != '\0');
|
||
|
}
|
||
|
|
||
|
return FALSE;
|
||
|
--
|
||
|
cgit v0.9.2
|