+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
char *expanded;
gboolean force_file_uri;
char force_file_uri_macro;
+ char *uri;
g_return_if_fail (exec != NULL);
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)
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)
#ifdef HAVE_PWD_H
#include <pwd.h>
#endif
+#include <string.h>
#include "gioalias.h"
{
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