aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cgi.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-07-25 18:20:39 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-07-25 18:20:39 +0000
commit3d219b4ac39673cfcc7a5030ee9968d293785b92 (patch)
tree8044922fec933f111b91a7268c8c1b418bfb33bb /cgi.c
parentffcf48b062f6f37207d6e3bbbcd46a6b30c7ebcc (diff)
downloadmandoc-3d219b4ac39673cfcc7a5030ee9968d293785b92.tar.gz
mandoc-3d219b4ac39673cfcc7a5030ee9968d293785b92.tar.zst
mandoc-3d219b4ac39673cfcc7a5030ee9968d293785b92.zip
We cannot easily control the order of the QUERY_STRING keys generated
by the search form, it's just the order of the fields in the form. Actually, that's not too bad; the generated URI resembles the generating form. To minimize confusion for people looking at URIs, give the keys in the same order when generating URIs for search listings and search redirections, the latter being used instead of search listings that would have only one single entry. Also, if the manpath is the default, remove it form the generated URIs.
Diffstat (limited to 'cgi.c')
-rw-r--r--cgi.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/cgi.c b/cgi.c
index ed69a7bb..04a02d63 100644
--- a/cgi.c
+++ b/cgi.c
@@ -1,4 +1,4 @@
-/* $Id: cgi.c,v 1.87 2014/07/25 17:52:04 schwarze Exp $ */
+/* $Id: cgi.c,v 1.88 2014/07/25 18:20:39 schwarze Exp $ */
/*
* Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2014 Ingo Schwarze <schwarze@usta.de>
@@ -148,10 +148,12 @@ static void
http_printquery(const struct req *req)
{
- if (NULL != req->q.manpath) {
- printf("&manpath=");
- http_print(req->q.manpath);
+ if (NULL != req->q.query) {
+ printf("query=");
+ http_print(req->q.query);
}
+ if (0 == req->q.equal)
+ printf("&apropos=1");
if (NULL != req->q.sec) {
printf("&sec=");
http_print(req->q.sec);
@@ -160,22 +162,23 @@ http_printquery(const struct req *req)
printf("&arch=");
http_print(req->q.arch);
}
- if (NULL != req->q.query) {
- printf("&query=");
- http_print(req->q.query);
+ if (NULL != req->q.manpath &&
+ strcmp(req->q.manpath, req->p[0])) {
+ printf("&manpath=");
+ http_print(req->q.manpath);
}
- if (0 == req->q.equal)
- printf("&apropos=1");
}
static void
html_printquery(const struct req *req)
{
- if (NULL != req->q.manpath) {
- printf("&amp;manpath=");
- html_print(req->q.manpath);
+ if (NULL != req->q.query) {
+ printf("query=");
+ html_print(req->q.query);
}
+ if (0 == req->q.equal)
+ printf("&amp;apropos=1");
if (NULL != req->q.sec) {
printf("&amp;sec=");
html_print(req->q.sec);
@@ -184,12 +187,11 @@ html_printquery(const struct req *req)
printf("&amp;arch=");
html_print(req->q.arch);
}
- if (NULL != req->q.query) {
- printf("&amp;query=");
- html_print(req->q.query);
+ if (NULL != req->q.manpath &&
+ strcmp(req->q.manpath, req->p[0])) {
+ printf("&amp;manpath=");
+ html_print(req->q.manpath);
}
- if (0 == req->q.equal)
- printf("&amp;apropos=1");
}
static void