Blob Blame History Raw
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;