glib r7953 - trunk/gio
- From: alexl svn gnome org
- To: svn-commits-list gnome org
- Subject: glib r7953 - trunk/gio
- Date: Tue, 3 Mar 2009 19:02:17 +0000 (UTC)
Author: alexl
Date: Tue Mar 3 19:02:16 2009
New Revision: 7953
URL: http://svn.gnome.org/viewvc/glib?rev=7953&view=rev
Log:
2009-03-03 Alexander Larsson <alexl redhat com>
Bug 561172 â gnome-open fails on local URIs with anchors
* gdesktopappinfo.c:
Don't force uris to filenames if the uri has an anchor, because
that would strip the anchor.
* glocalvfs.c:
Strip anchor from file:// uris when creating GFile, since
g_filename_from_uri doesn't handle them.
Modified:
trunk/gio/ChangeLog
trunk/gio/gdesktopappinfo.c
trunk/gio/glocalvfs.c
Modified: trunk/gio/gdesktopappinfo.c
==============================================================================
--- trunk/gio/gdesktopappinfo.c (original)
+++ trunk/gio/gdesktopappinfo.c Tue Mar 3 19:02:16 2009
@@ -567,6 +567,7 @@
char *expanded;
gboolean force_file_uri;
char force_file_uri_macro;
+ char *uri;
g_return_if_fail (exec != NULL);
@@ -602,15 +603,18 @@
case 'n':
if (uris)
{
- if (!force_file_uri)
+ uri = uris->data;
+ if (!force_file_uri ||
+ /* Pass URI if it contains an anchor */
+ strchr (uri, '#') != NULL)
{
- expanded = expand_macro_single (macro, uris->data);
+ expanded = expand_macro_single (macro, uri);
}
else
{
- expanded = expand_macro_single (force_file_uri_macro, uris->data);
+ expanded = expand_macro_single (force_file_uri_macro, uri);
if (expanded == NULL)
- expanded = expand_macro_single (macro, uris->data);
+ expanded = expand_macro_single (macro, uri);
}
if (expanded)
@@ -629,15 +633,19 @@
case 'N':
while (uris)
{
- if (!force_file_uri)
+ uri = uris->data;
+
+ if (!force_file_uri ||
+ /* Pass URI if it contains an anchor */
+ strchr (uri, '#') != NULL)
{
- expanded = expand_macro_single (macro, uris->data);
+ expanded = expand_macro_single (macro, uri);
}
else
{
- expanded = expand_macro_single (force_file_uri_macro, uris->data);
+ expanded = expand_macro_single (force_file_uri_macro, uri);
if (expanded == NULL)
- expanded = expand_macro_single (macro, uris->data);
+ expanded = expand_macro_single (macro, uri);
}
if (expanded)
Modified: trunk/gio/glocalvfs.c
==============================================================================
--- trunk/gio/glocalvfs.c (original)
+++ trunk/gio/glocalvfs.c Tue Mar 3 19:02:16 2009
@@ -31,6 +31,7 @@
#ifdef HAVE_PWD_H
#include <pwd.h>
#endif
+#include <string.h>
#include "gioalias.h"
@@ -90,9 +91,22 @@
{
char *path;
GFile *file;
+ char *stripped_uri, *hash;
+
+ if (strchr (uri, '#') != NULL)
+ {
+ stripped_uri = g_strdup (uri);
+ hash = strchr (stripped_uri, '#');
+ *hash = 0;
+ }
+ else
+ stripped_uri = (char *)uri;
+
+ path = g_filename_from_uri (stripped_uri, NULL, NULL);
- path = g_filename_from_uri (uri, NULL, NULL);
-
+ if (stripped_uri != uri)
+ g_free (stripped_uri);
+
if (path != NULL)
file = _g_local_file_new (path);
else
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]