The attached patch is meant to "fix" bug 329781 [1] by making
gnome_vfs_make_uri_from_input_internal a bit more robst. I don't like
the route we currently go, i.e. we just guess based on the string
instead of using GnomeVFSURIs, but it's probably too late in the cycle
to change that. The function might need some more love and URI sanity
checking, but the attached patch did the trick for me.

[1] http://bugzilla.gnome.org/show_bug.cgi?id=329781

-- 
Christian Neumair <[EMAIL PROTECTED]>
Index: libgnomevfs/gnome-vfs-utils.c
===================================================================
RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-utils.c,v
retrieving revision 1.106
diff -u -p -r1.106 gnome-vfs-utils.c
--- libgnomevfs/gnome-vfs-utils.c	20 Dec 2005 09:44:43 -0000	1.106
+++ libgnomevfs/gnome-vfs-utils.c	24 Feb 2006 16:21:44 -0000
@@ -1337,11 +1337,17 @@ looks_like_http_uri (const char *str)
 	int i;
 	char c;
 	const char *first_slash;
+	const char *first_dot;
 
 	first_slash = strchr(str, '/');
 	if (first_slash == NULL) {
 		len = strlen (str);
 	} else {
+		first_dot = strchr (str, '.');
+		if (first_dot != NULL && first_slash < first_dot) {
+			return FALSE;
+		}
+
 		len = first_slash - str;
 	}
 	for (i = 0; i < 5 && i < len; i++) {
@@ -1366,7 +1372,7 @@ gnome_vfs_make_uri_from_input_internal (
 					const char *filename_charset,
 					gboolean strip_trailing_whitespace)
 {
-	char *stripped, *uri, *locale_path, *escaped;
+	char *stripped, *uri, *locale_path, *escaped, *p;
 
 	g_return_val_if_fail (text != NULL, g_strdup (""));
 
@@ -1428,8 +1434,10 @@ gnome_vfs_make_uri_from_input_internal (
 			uri = g_strconcat ("http://";, escaped, NULL);
 			g_free (escaped);
 		} else {
-			escaped = gnome_vfs_escape_high_chars ((guchar *)stripped);
-			uri = g_strconcat ("file://", escaped, NULL);
+			for (p = stripped; p != NULL && *p == '/'; p++)
+				;
+			escaped = gnome_vfs_escape_high_chars ((guchar *)p);
+			uri = g_strconcat ("file:///", escaped, NULL);
 			g_free (escaped);
 		}
 	}

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

_______________________________________________
gnome-vfs-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-vfs-list

Reply via email to