From 2afbb0e9dde74b7dc457e8648d1e02630bdfcd31 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Fri, 25 Jul 2014 18:19:34 +0000 Subject: 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. --- usr.bin/mandoc/cgi.c | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) (limited to 'usr.bin/mandoc') diff --git a/usr.bin/mandoc/cgi.c b/usr.bin/mandoc/cgi.c index 681be2b9415..8f89965c55d 100644 --- a/usr.bin/mandoc/cgi.c +++ b/usr.bin/mandoc/cgi.c @@ -1,4 +1,4 @@ -/* $Id: cgi.c,v 1.27 2014/07/25 17:51:33 schwarze Exp $ */ +/* $Id: cgi.c,v 1.28 2014/07/25 18:19:33 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2014 Ingo Schwarze @@ -144,10 +144,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); @@ -156,22 +158,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("&manpath="); - html_print(req->q.manpath); + if (NULL != req->q.query) { + printf("query="); + html_print(req->q.query); } + if (0 == req->q.equal) + printf("&apropos=1"); if (NULL != req->q.sec) { printf("&sec="); html_print(req->q.sec); @@ -180,12 +183,11 @@ html_printquery(const struct req *req) printf("&arch="); html_print(req->q.arch); } - if (NULL != req->q.query) { - printf("&query="); - html_print(req->q.query); + if (NULL != req->q.manpath && + strcmp(req->q.manpath, req->p[0])) { + printf("&manpath="); + html_print(req->q.manpath); } - if (0 == req->q.equal) - printf("&apropos=1"); } static void -- cgit v1.2.3