diff -Nur exo-0.10.6.orig/exo-open/main.c exo-0.10.6/exo-open/main.c
--- exo-0.10.6.orig/exo-open/main.c 2015-05-25 12:04:45.000000000 -0600
+++ exo-0.10.6/exo-open/main.c 2015-07-31 13:16:51.148691020 -0600
@@ -206,11 +206,17 @@
{
gchar *current_dir;
gchar *uri;
+ gchar *escaped_uri;
gchar *path;
/* is an absolute path, return file uri */
if (g_path_is_absolute (string))
- return g_strconcat ("file://", string, NULL);
+ {
+ uri = g_strconcat ("file://", string, NULL);
+ escaped_uri = g_uri_escape_string (uri, G_URI_RESERVED_CHARS_ALLOWED_IN_PATH, TRUE);
+ g_free(uri);
+ return escaped_uri;
+ }
/* treat it like a relative path */
current_dir = g_get_current_dir ();
@@ -221,8 +227,10 @@
if (g_file_test (path, G_FILE_TEST_EXISTS))
{
uri = g_strconcat ("file://", path, NULL);
+ escaped_uri = g_uri_escape_string (uri, G_URI_RESERVED_CHARS_ALLOWED_IN_PATH, TRUE);
g_free (path);
- return uri;
+ g_free (uri);
+ return escaped_uri;
}
g_free (path);
@@ -307,7 +315,6 @@
{
GFile *file;
gchar *scheme;
- gchar *escaped;
GFileInfo *file_info;
gboolean succeed = FALSE;
gboolean retval = FALSE;
@@ -331,15 +338,13 @@
g_free (scheme);
#endif
- escaped = g_uri_escape_string (uri, G_URI_RESERVED_CHARS_ALLOWED_IN_PATH, TRUE);
- file = g_file_new_for_uri (escaped);
+ file = g_file_new_for_uri (uri);
scheme = g_file_get_uri_scheme (file);
/* try to launch common schemes for know preferred applications */
if (scheme != NULL && exo_open_uri_known_category (uri, scheme, &retval))
{
g_free (scheme);
- g_free (escaped);
return retval;
}
@@ -356,7 +361,7 @@
g_debug ("file is directory, use filemanager");
#endif
/* directories should go fine with a file manager */
- retval = exo_open_launch_category ("FileManager", escaped);
+ retval = exo_open_launch_category ("FileManager", uri);
succeed = TRUE;
}
else
@@ -382,7 +387,7 @@
if (executable == NULL
|| strcmp (executable, "exo-open") != 0)
{
- fake_list.data = (gpointer) escaped;
+ fake_list.data = (gpointer) uri;
fake_list.prev = fake_list.next = NULL;
/* launch it */
@@ -410,7 +415,7 @@
/* found scheme, open in file manager */
if (strcmp (scheme, schemes[i]) == 0)
{
- retval = succeed = exo_open_launch_category ("FileManager", escaped);
+ retval = succeed = exo_open_launch_category ("FileManager", uri);
break;
}
}
@@ -429,13 +434,12 @@
/* try ftp uris if the file manager/gio failed to recognize it */
if (scheme != NULL
&& (strcmp (scheme, "ftp") == 0 || strcmp (scheme, "ftps") == 0))
- retval = exo_open_launch_category ("WebBrowser", escaped);
+ retval = exo_open_launch_category ("WebBrowser", uri);
else
- retval = gtk_show_uri (NULL, escaped, 0, error);
+ retval = gtk_show_uri (NULL, uri, 0, error);
}
g_free (scheme);
- g_free (escaped);
if (!retval && error != NULL)
*error = err;