diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-07-25 20:09:09 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-07-25 20:09:09 +0000 |
commit | afcd27ddb8004f570d599770cc9362d287155082 (patch) | |
tree | 010d1d91c230b4777687ae9b621358ce609b7cce | |
parent | 41d963282eebdbc3224f4cacea8af0675fe603d9 (diff) | |
download | mandoc-afcd27ddb8004f570d599770cc9362d287155082.tar.gz |
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.
-rw-r--r-- | cgi.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -851,12 +851,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>"); @@ -875,11 +876,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) { @@ -899,6 +903,7 @@ format(const struct req *req, const char *file) html_free(vp); mparse_free(mp); + free(opts); } static void |