summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libyelp/yelp-document.c2
-rw-r--r--libyelp/yelp-uri-builder.c8
2 files changed, 8 insertions, 2 deletions
diff --git a/libyelp/yelp-document.c b/libyelp/yelp-document.c
index cfac7291..fb340ebd 100644
--- a/libyelp/yelp-document.c
+++ b/libyelp/yelp-document.c
@@ -220,7 +220,7 @@ yelp_document_get_for_uri (YelpUri *uri)
return g_object_ref (document);
}
- switch (yelp_uri_get_document_type (uri)) {
+ switch (doctype) {
case YELP_URI_DOCUMENT_TYPE_TEXT:
case YELP_URI_DOCUMENT_TYPE_HTML:
case YELP_URI_DOCUMENT_TYPE_XHTML:
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));
}
}