mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
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:
parent
f891d4e04e
commit
896c3d1b2c
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user