summaryrefslogtreecommitdiff
path: root/usr.bin/mandoc
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2014-07-25 20:08:50 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2014-07-25 20:08:50 +0000
commit85ac9d504f8aa5e92306b27cc74d2a2eb29e0fd9 (patch)
tree7eef586b9eb0ab745a5ba4eebdb31e47bdc25cf2 /usr.bin/mandoc
parent4c59e7da970a9c59d1e75d5d9173f64307ca9929 (diff)
Sort the URI keys for .Xr links in the same order used by the search form,
and leave out the manpath when it is the default. For building the HTML formatter options, do not use a static buffer.
Diffstat (limited to 'usr.bin/mandoc')
-rw-r--r--usr.bin/mandoc/cgi.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/usr.bin/mandoc/cgi.c b/usr.bin/mandoc/cgi.c
index 2c0b8c2aebe..b5c4579154f 100644
--- a/usr.bin/mandoc/cgi.c
+++ b/usr.bin/mandoc/cgi.c
@@ -1,4 +1,4 @@
-/* $Id: cgi.c,v 1.29 2014/07/25 19:36:02 schwarze Exp $ */
+/* $Id: cgi.c,v 1.30 2014/07/25 20:08:49 schwarze Exp $ */
/*
* Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2014 Ingo Schwarze <schwarze@usta.de>
@@ -847,12 +847,13 @@ static void
format(const struct req *req, const char *file)
{
struct mparse *mp;
- int fd;
struct mdoc *mdoc;
struct man *man;
void *vp;
+ char *opts;
enum mandoclevel rc;
- char opts[PATH_MAX + 128];
+ int fd;
+ int usepath;
if (-1 == (fd = open(file, O_RDONLY, 0))) {
puts("<P>You specified an invalid manual file.</P>");
@@ -871,11 +872,14 @@ format(const struct req *req, const char *file)
return;
}
- snprintf(opts, sizeof(opts), "fragment,man=%s?"
- "manpath=%s&query=%%N&sec=%%S%s%s",
- scriptname, req->q.manpath,
- req->q.arch ? "&arch=" : "",
- req->q.arch ? req->q.arch : "");
+ usepath = strcmp(req->q.manpath, req->p[0]);
+ mandoc_asprintf(&opts,
+ "fragment,man=%s?query=%%N&sec=%%S%s%s%s%s",
+ scriptname,
+ req->q.arch ? "&arch=" : "",
+ req->q.arch ? req->q.arch : "",
+ usepath ? "&manpath=" : "",
+ usepath ? req->q.manpath : "");
mparse_result(mp, &mdoc, &man, NULL);
if (NULL == man && NULL == mdoc) {
@@ -895,6 +899,7 @@ format(const struct req *req, const char *file)
html_free(vp);
mparse_free(mp);
+ free(opts);
}
static void