[Xfce4-commits] <exo:master> Fix exo_str_looks_like_an_uri() (bug #10098).

Nick Schermer noreply at xfce.org
Sun May 19 14:48:01 CEST 2013


Updating branch refs/heads/master
         to 05848bb3cb10ea19ef8cba607bdabcd25560063c (commit)
       from f76f551fb0e80fdbf259f85634ec62e7158898c5 (commit)

commit 05848bb3cb10ea19ef8cba607bdabcd25560063c
Author: Felipe Contreras <felipe.contreras at gmail.com>
Date:   Sat May 18 22:50:01 2013 -0500

    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 at gmail.com>

 exo/exo-string.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

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;


More information about the Xfce4-commits mailing list