From: schwarze Date: Mon, 21 Jul 2014 22:32:55 +0000 (+0000) Subject: fix a minibug reported by kristaps@: X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=81060b1ad61b032c0e6677a0c8fbd8651484f11c;p=openbsd fix a minibug reported by kristaps@: preserve manpath and arch in .Xr links --- diff --git a/usr.bin/mandoc/cgi.c b/usr.bin/mandoc/cgi.c index ea00f9c97f2..dbe73e591e8 100644 --- a/usr.bin/mandoc/cgi.c +++ b/usr.bin/mandoc/cgi.c @@ -1,4 +1,4 @@ -/* $Id: cgi.c,v 1.18 2014/07/21 15:44:22 schwarze Exp $ */ +/* $Id: cgi.c,v 1.19 2014/07/21 22:32:55 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2014 Ingo Schwarze @@ -67,7 +67,7 @@ static void pg_noresult(const struct req *, const char *); static void pg_search(const struct req *); static void pg_searchres(const struct req *, struct manpage *, size_t); -static void pg_show(const struct req *, const char *); +static void pg_show(struct req *, const char *); static void resp_begin_html(int, const char *); static void resp_begin_http(int, const char *); static void resp_end_html(void); @@ -781,9 +781,10 @@ format(const struct req *req, const char *file) return; } - snprintf(opts, sizeof(opts), - "fragment,man=%s?query=%%N&sec=%%S", - scriptname); + snprintf(opts, sizeof(opts), "fragment,man=%s?" + "manpath=%s&query=%%N&sec=%%S&arch=%s", + scriptname, req->q.manpath, + req->q.arch ? req->q.arch : ""); mparse_result(mp, &mdoc, &man, NULL); if (NULL == man && NULL == mdoc) { @@ -819,7 +820,7 @@ resp_show(const struct req *req, const char *file) } static void -pg_show(const struct req *req, const char *path) +pg_show(struct req *req, const char *path) { char *sub; @@ -855,6 +856,9 @@ pg_show(const struct req *req, const char *path) return; } + if (strcmp(path, "mandoc")) + req->q.manpath = path; + resp_begin_html(200, NULL); resp_searchform(req); resp_show(req, sub);