]> spindle.queued.net Git - midori/commitdiff
Try to decide what an @ in a location refers to
authorChristian Dywan <christian@twotoasts.de>
Sun, 12 Apr 2009 12:00:32 +0000 (14:00 +0200)
committerChristian Dywan <christian@twotoasts.de>
Sun, 12 Apr 2009 12:00:32 +0000 (14:00 +0200)
We assume the usual case is that you intend to search for an
email address, a host with a login isn't recognized.

midori/sokoke.c
tests/magic-uri.c

index d791c879b365aff4cc7bbf8f23ec1681137c6038..4303ff40800de6690a29309f968a74ab399932fd 100644 (file)
@@ -244,10 +244,10 @@ sokoke_magic_uri (const gchar* uri,
 
     /* Do we have a domain, ip address or localhost? */
     search = NULL;
-    if (!strchr (uri, ' ') && (search = strchr (uri, ':')) &&
+    if (!strchr (uri, ' ') &&
+        ((search = strchr (uri, ':')) || (search = strchr (uri, '@'))) &&
         search[0] && !g_ascii_isalpha (search[1]))
-        if (!strchr (search, '.'))
-            return sokoke_idn_to_punycode (g_strconcat ("http://", uri, NULL));
+        return sokoke_idn_to_punycode (g_strconcat ("http://", uri, NULL));
     if (!strcmp (uri, "localhost") || g_str_has_prefix (uri, "localhost/"))
         return g_strconcat ("http://", uri, NULL);
     parts = g_strsplit (uri, ".", 0);
index e071539958677582c4b5ea9127760600dd0cbaf1..381acd4c6cf36c87167c0db7476d019f83f3e81a 100644 (file)
@@ -75,8 +75,9 @@ magic_uri_uri (void)
     test_input ("192.168.1.1:8000", "http://192.168.1.1:8000");
     test_input ("file:///home/mark/foo/bar.html",
                 "file:///home/mark/foo/bar.html");
-    /* test_input ("foo:123@bar.baz", "foo:123@bar.baz"); */
-    /* test_input ("foo:foo@bar.baz", "foo:foo@bar.baz"); */
+    test_input ("foo:123@bar.baz", "http://foo:123@bar.baz");
+    /* test_input ("foo:f1o2o3@bar.baz", "http://f1o2o3:foo@bar.baz"); */
+    /* test_input ("foo:foo@bar.baz", "http://foo:foo@bar.baz"); */
 }
 
 static void
@@ -134,6 +135,8 @@ magic_uri_search (void)
                 SM "warning: configure /dev/net: virtual");
     test_input ("g \"ISO 9001:2000 certified\"", NULL);
     test_input ("g conference \"April 2, 7:00 am\"", NULL);
+    test_input ("max@mustermann.de", NULL);
+    test_input ("g max@mustermann.de", NULL);
 }
 
 static void