From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id e7bf9ee6 for ; Wed, 15 Mar 2017 08:19:24 -0500 (EST) Date: Wed, 15 Mar 2017 08:19:24 -0500 (EST) Message-Id: <6613024602014638021.enqueue@fantadrom.bsd.lv> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Mention the manual page name and section in the HTML page X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- Mention the manual page name and section in the HTML page . Based on a patch from <Anton dot Lindqvist at gmail dot com>, but simplified and also covering apropos(1) search results. Modified Files: -------------- mdocml: cgi.c man.cgi.3 Revision Data ------------- Index: cgi.c =================================================================== RCS file: /home/cvs/mdocml/mdocml/cgi.c,v retrieving revision 1.149 retrieving revision 1.150 diff -Lcgi.c -Lcgi.c -u -p -r1.149 -r1.150 --- cgi.c +++ cgi.c @@ -81,7 +81,7 @@ 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 *); @@ -346,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); @@ -357,10 +358,20 @@ resp_begin_html(int code, const char *ms " <meta charset=\"UTF-8\"/>\n" " <link rel=\"stylesheet\" href=\"%s/mandoc.css\"" " type=\"text/css\" media=\"all\">\n" - " <title>%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"); } @@ -493,7 +504,7 @@ static void pg_index(const struct req *req) { - resp_begin_html(200, NULL); + resp_begin_html(200, NULL, NULL); resp_searchform(req, FOCUS_QUERY); printf("

\n" "This web interface is documented in the\n" @@ -510,7 +521,7 @@ pg_index(const struct req *req) static void pg_noresult(const struct req *req, const char *msg) { - resp_begin_html(200, NULL); + resp_begin_html(200, NULL, NULL); resp_searchform(req, FOCUS_QUERY); puts("

"); puts(msg); @@ -522,7 +533,7 @@ static void pg_error_badrequest(const char *msg) { - resp_begin_html(400, "Bad Request"); + resp_begin_html(400, "Bad Request", NULL); puts("

Bad Request

\n" "

\n"); puts(msg); @@ -535,7 +546,7 @@ pg_error_badrequest(const char *msg) static void pg_error_internal(void) { - resp_begin_html(500, "Internal Server Error"); + resp_begin_html(500, "Internal Server Error", NULL); puts("

Internal Server Error

"); resp_end_html(); } @@ -591,36 +602,13 @@ pg_searchres(const struct req *req, stru return; } - resp_begin_html(200, NULL); - resp_searchform(req, - req->q.equal || sz == 1 ? FOCUS_NONE : FOCUS_QUERY); - - if (sz > 1) { - puts(""); - for (i = 0; i < sz; i++) { - printf(" \n" - " \n" - " \n" - " "); - } - puts("
" - "", - scriptname, *scriptname == '\0' ? "" : "/", - req->q.manpath, r[i].file); - html_print(r[i].names); - printf(""); - html_print(r[i].output); - puts("
"); - } - /* * In man(1) mode, show one of the pages * even if more than one is found. */ + iuse = 0; if (req->q.equal || sz == 1) { - puts("
"); - iuse = 0; priouse = 20; archpriouse = 3; for (i = 0; i < sz; i++) { @@ -653,6 +641,33 @@ pg_searchres(const struct req *req, stru priouse = prio; iuse = i; } + resp_begin_html(200, NULL, r[iuse].file); + } else + resp_begin_html(200, NULL, NULL); + + resp_searchform(req, + req->q.equal || sz == 1 ? FOCUS_NONE : FOCUS_QUERY); + + if (sz > 1) { + puts(""); + for (i = 0; i < sz; i++) { + printf(" \n" + " \n" + " \n" + " "); + } + puts("
" + "", + scriptname, *scriptname == '\0' ? "" : "/", + req->q.manpath, r[i].file); + html_print(r[i].names); + printf(""); + html_print(r[i].output); + puts("
"); + } + + if (req->q.equal || sz == 1) { + puts("
"); resp_show(req, r[iuse].file); } @@ -904,7 +919,7 @@ pg_show(struct req *req, const char *ful return; } - resp_begin_html(200, NULL); + resp_begin_html(200, NULL, file); resp_searchform(req, FOCUS_NONE); resp_show(req, file); resp_end_html(); Index: man.cgi.3 =================================================================== RCS file: /home/cvs/mdocml/mdocml/man.cgi.3,v retrieving revision 1.3 retrieving revision 1.4 diff -Lman.cgi.3 -Lman.cgi.3 -u -p -r1.3 -r1.4 --- man.cgi.3 +++ man.cgi.3 @@ -1,6 +1,6 @@ .\" $Id$ .\" -.\" Copyright (c) 2016 Ingo Schwarze +.\" Copyright (c) 2016, 2017 Ingo Schwarze .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -237,13 +237,18 @@ and are used. The highest level result generators are: .Bl -tag -width 1n -.It Ft void Fn resp_begin_html "int code" "const char *msg" +.It Ft void Fn resp_begin_html "int code" "const char *msg" "const char *file" This generator calls .Fn resp_begin_http to print the HTTP headers, then prints the HTML header up to the opening tag of the element, then copies the file .Pa header.html to the output, if it exists and is readable. +If +.Fa file +is not +.Dv NULL , +it is used for the element. .It Ft void Fn resp_searchform "const struct req *req" "enum focus focus" This generator prints a search form, filling it with data from the provided request object. -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv