=================================================================== RCS file: /cvs/mandoc/cgi.c,v retrieving revision 1.148 retrieving revision 1.158 diff -u -p -r1.148 -r1.158 --- mandoc/cgi.c 2017/02/22 16:20:01 1.148 +++ mandoc/cgi.c 2018/05/29 20:32:45 1.158 @@ -1,4 +1,4 @@ -/* $Id: cgi.c,v 1.148 2017/02/22 16:20:01 schwarze Exp $ */ +/* $Id: cgi.c,v 1.158 2018/05/29 20:32:45 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2014, 2015, 2016, 2017 Ingo Schwarze @@ -76,11 +76,12 @@ static void pg_error_badrequest(const char *); static void pg_error_internal(void); static void pg_index(const struct req *); static void pg_noresult(const struct req *, const char *); +static void pg_redirect(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(struct req *, const char *); -static void resp_begin_html(int, const char *); +static void resp_begin_html(int, const char *, const char *); static void resp_begin_http(int, const char *); static void resp_catman(const struct req *, const char *); static void resp_copy(const char *); @@ -139,16 +140,16 @@ html_putchar(char c) { switch (c) { - case ('"'): + case '"': printf("""); break; - case ('&'): + case '&': printf("&"); break; - case ('>'): + case '>': printf(">"); break; - case ('<'): + case '<': printf("<"); break; default: @@ -345,8 +346,9 @@ resp_copy(const char *filename) } static void -resp_begin_html(int code, const char *msg) +resp_begin_html(int code, const char *msg, const char *file) { + char *cp; resp_begin_http(code, msg); @@ -354,12 +356,24 @@ resp_begin_html(int code, const char *msg) "\n" "\n" " \n" + " \n" " \n" - " %s\n" + " ", + CSS_DIR); + if (file != NULL) { + if ((cp = strrchr(file, '/')) != NULL) + file = cp + 1; + if ((cp = strrchr(file, '.')) != NULL) { + printf("%.*s(%s) - ", (int)(cp - file), file, cp + 1); + } else + printf("%s - ", file); + } + printf("%s\n" "\n" "\n", - CSS_DIR, CUSTOMIZE_TITLE); + CUSTOMIZE_TITLE); resp_copy(MAN_DIR "/header.html"); } @@ -386,7 +400,7 @@ resp_searchform(const struct req *req, enum focus focu /* Write query input box. */ - printf(" q.query != NULL) html_print(req->q.query); printf( "\" size=\"40\""); @@ -422,7 +436,7 @@ resp_searchform(const struct req *req, enum focus focu printf(" selected=\"selected\""); puts(">All Architectures"); for (i = 0; i < arch_MAX; i++) { - printf("