Bug 561172 – gnome-open fails on local URIs with anchors

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.



svn path=/trunk/; revision=7953
This commit is contained in:
Alexander Larsson 2009-03-03 19:02:16 +00:00 committed by Alexander Larsson
parent f891d4e04e
commit 896c3d1b2c
3 changed files with 44 additions and 10 deletions

View File

@ -1,3 +1,15 @@
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.
2009-03-03 Alexander Larsson <alexl@redhat.com>
Bug 562613 Missing const modifier in string parameters

View File

@ -567,6 +567,7 @@ expand_macro (char macro,
char *expanded;
gboolean force_file_uri;
char force_file_uri_macro;
char *uri;
g_return_if_fail (exec != NULL);
@ -602,15 +603,18 @@ expand_macro (char macro,
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 @@ expand_macro (char macro,
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)

View File

@ -31,6 +31,7 @@
#ifdef HAVE_PWD_H
#include <pwd.h>
#endif
#include <string.h>
#include "gioalias.h"
@ -90,8 +91,21 @@ g_local_vfs_get_file_for_uri (GVfs *vfs,
{
char *path;
GFile *file;
char *stripped_uri, *hash;
path = g_filename_from_uri (uri, NULL, NULL);
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);
if (stripped_uri != uri)
g_free (stripped_uri);
if (path != NULL)
file = _g_local_file_new (path);