summaryrefslogtreecommitdiff
path: root/libyelp/yelp-uri-builder.c
diff options
context:
space:
mode:
Diffstat (limited to 'libyelp/yelp-uri-builder.c')
-rw-r--r--libyelp/yelp-uri-builder.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libyelp/yelp-uri-builder.c b/libyelp/yelp-uri-builder.c
index 72084596..680bf90b 100644
--- a/libyelp/yelp-uri-builder.c
+++ b/libyelp/yelp-uri-builder.c
@@ -109,7 +109,13 @@ build_yelp_uri (const gchar *uri_str)
memmove (resource, resource + 1, strlen (resource));
}
else if (g_str_has_prefix (uri, "ghelp:")) {
- if (resource[0] == '/' && resource[1] == '/')
+ /* This is an ugly heuristic that probably always works. The URI
+ mangling ends up not distinguishing between absolute file paths
+ and ordinary old ghelp URIs. But absolute file paths should
+ have more than one slash, right? This will fail:
+ cp foo.xml / && yelp /foo.xml
+ */
+ if (resource[0] == '/' && !strchr (resource + 1, '/'))
memmove (resource, resource + 1, strlen (resource));
}
}