diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-12-15 12:05:19 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-12-15 12:05:19 +0000 |
commit | 87d272e845827d8144a666ae93fee42f806822c5 (patch) | |
tree | f62d74766d6848dd646ecd83c8ebca81beec2dd4 | |
parent | 0ca8cf3cd36d40309e683fee5abc6174df49fe15 (diff) | |
download | mandoc-87d272e845827d8144a666ae93fee42f806822c5.tar.gz |
Some presentation polish in man.cgi:
- include search bar above result page (I relent: it's annoying to
follow three links then press back three times to get a search page);
- make man.cgi.css into man-cgi.css so Apache isn't confused by two
handlers (css, cgi);
- finally consolidate example.style.css to be under the div.mandoc css
selector;
- put catman pages under div.catman;
- put search bar under div#mancgi;
- reflect this properly in the bundled CSS files.
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | cgi.c | 68 | ||||
-rw-r--r-- | example.style.css | 242 | ||||
-rw-r--r-- | man-cgi.css | 6 | ||||
-rw-r--r-- | man.cgi.css | 6 |
5 files changed, 146 insertions, 180 deletions
@@ -107,7 +107,7 @@ SRCS = Makefile \ man.7 \ man.c \ man.cgi.7 \ - man.cgi.css \ + man-cgi.css \ man.h \ man_hash.c \ man_html.c \ @@ -482,7 +482,7 @@ installcgi: all mkdir -p $(DESTDIR)$(HTDOCDIR) $(INSTALL_PROGRAM) man.cgi $(DESTDIR)$(CGIBINDIR) $(INSTALL_DATA) example.style.css $(DESTDIR)$(HTDOCDIR)/man.css - $(INSTALL_DATA) man.cgi.css $(DESTDIR)$(HTDOCDIR) + $(INSTALL_DATA) man-cgi.css $(DESTDIR)$(HTDOCDIR) installwww: www mkdir -p $(PREFIX)/snapshots @@ -80,9 +80,9 @@ struct req { }; static int atou(const char *, unsigned *); -static void catman(const char *); +static void catman(const struct req *, const char *); static int cmp(const void *, const void *); -static void format(const char *); +static void format(const struct req *, const char *); static void html_print(const char *); static void html_putchar(char); static int http_decode(char *); @@ -346,12 +346,14 @@ resp_begin_html(int code, const char *msg) "<HEAD>\n" "<META HTTP-EQUIV=\"Content-Type\"" " CONTENT=\"text/html; charset=utf-8\">\n" - "<LINK REL=\"stylesheet\" HREF=\"%s/man.cgi.css\"" + "<LINK REL=\"stylesheet\" HREF=\"%s/man-cgi.css\"" + " TYPE=\"text/css\" media=\"all\">\n" + "<LINK REL=\"stylesheet\" HREF=\"%s/man.css\"" " TYPE=\"text/css\" media=\"all\">\n" "<TITLE>System Manpage Reference</TITLE>\n" "</HEAD>\n" "<BODY>\n" - "<!-- Begin page content. //-->\n", css); + "<!-- Begin page content. //-->\n", css, css); } static void @@ -368,7 +370,8 @@ resp_searchform(const struct req *req) int i; puts("<!-- Begin search form. //-->"); - printf("<FORM ACTION=\"%s/search.html\" METHOD=\"get\">\n" + printf("<DIV ID=\"mancgi\">\n" + "<FORM ACTION=\"%s/search.html\" METHOD=\"get\">\n" "<FIELDSET>\n" "<LEGEND>Search Parameters</LEGEND>\n" "<INPUT TYPE=\"submit\" NAME=\"op\"" @@ -404,7 +407,8 @@ resp_searchform(const struct req *req) puts(".\n" "<INPUT TYPE=\"reset\" VALUE=\"Reset\">\n" "</FIELDSET>\n" - "</FORM>"); + "</FORM>\n" + "</DIV>"); puts("<!-- End search form. //-->"); } @@ -549,7 +553,7 @@ pg_index(const struct req *req, char *path) } static void -catman(const char *file) +catman(const struct req *req, const char *file) { FILE *f; size_t len; @@ -562,21 +566,10 @@ catman(const char *file) return; } - resp_begin_http(200, NULL); - printf("<!DOCTYPE HTML PUBLIC " - " \"-//W3C//DTD HTML 4.01//EN\"" - " \"http://www.w3.org/TR/html4/strict.dtd\">\n" - "<HTML>\n" - "<HEAD>\n" - "<META HTTP-EQUIV=\"Content-Type\"" - " CONTENT=\"text/html; charset=utf-8\">\n" - "<LINK REL=\"stylesheet\" HREF=\"%s/catman.css\"" - " TYPE=\"text/css\" media=\"all\">\n" - "<TITLE>System Manpage Reference</TITLE>\n" - "</HEAD>\n" - "<BODY>\n" - "<!-- Begin page content. //-->\n" - "<PRE>\n", css); + resp_begin_html(200, NULL); + resp_searchform(req); + puts("<DIV CLASS=\"catman\">\n" + "<PRE>"); while (NULL != (p = fgetln(f, &len))) { bold = italic = 0; @@ -688,6 +681,7 @@ catman(const char *file) } puts("</PRE>\n" + "</DIV>\n" "</BODY>\n" "</HTML>"); @@ -695,7 +689,7 @@ catman(const char *file) } static void -format(const char *file) +format(const struct req *req, const char *file) { struct mparse *mp; int fd; @@ -719,22 +713,30 @@ format(const char *file) return; } - snprintf(opts, sizeof(opts), "style=%s/man.css," + snprintf(opts, sizeof(opts), "fragment," "man=%s/search.html?sec=%%S&expr=%%N," /*"includes=/cgi-bin/man.cgi/usr/include/%%I"*/, - css, progname); + progname); mparse_result(mp, &mdoc, &man); + if (NULL == man && NULL == mdoc) { + resp_baddb(); + mparse_free(mp); + return; + } + + resp_begin_html(200, NULL); + resp_searchform(req); + vp = html_alloc(opts); - if (NULL != mdoc) { - resp_begin_http(200, NULL); + if (NULL != mdoc) html_mdoc(vp, mdoc); - } else if (NULL != man) { - resp_begin_http(200, NULL); + else html_man(vp, man); - } else - resp_baddb(); + + puts("</BODY>\n" + "</HTML>"); html_free(vp); mparse_free(mp); @@ -829,9 +831,9 @@ pg_show(const struct req *req, char *path) resp_baddb(); else { if (0 == strcmp(cp, "cat")) - catman(fn + 1); + catman(req, fn + 1); else - format(fn + 1); + format(req, fn + 1); } out: if (idx) diff --git a/example.style.css b/example.style.css index ee306309..279af304 100644 --- a/example.style.css +++ b/example.style.css @@ -1,146 +1,110 @@ /* $Id$ */ - /* * This is an example style-sheet provided for mandoc(1) and the -Thtml * or -Txhtml output mode. - * - * It mimics the appearance of the traditional cvsweb output. - * + * It mimics the appearance of the legacy man.cgi output. * See mdoc(7) and man(7) for macro explanations. */ -div.mandoc { min-width: 78ex; - width: 78ex; - font-family: monospace; } /* This is the outer node of all mandoc -T[x]html documents. */ - -h1 { margin-bottom: 0ex; font-size: inherit; margin-left: -4ex; } /* Section header (Sh, SH). */ -h2 { margin-bottom: 0ex; font-size: inherit; margin-left: -2ex; } /* Sub-section header (Ss, SS). */ -table { width: 100%; margin-top: 0ex; margin-bottom: 0ex; } /* All tables. */ -td { vertical-align: top; } /* All table cells. */ -p { } /* Paragraph: Pp, Lp. */ -blockquote { margin-left: 5ex; margin-top: 0ex; margin-bottom: 0ex; } /* D1. */ -div.section { margin-bottom: 2ex; margin-left: 5ex; } /* Sections (Sh, SH). */ -div.subsection { } /* Sub-sections (Ss, SS). */ -table.synopsis { } /* SYNOPSIS section table. */ - -/* Preamble structure. */ - -table.foot { } /* Document footer. */ -td.foot-date { width: 50%; } /* Document footer: date. */ -td.foot-os { width: 50%; text-align: right; } /* Document footer: OS/source. */ -table.head { } /* Document header. */ -td.head-ltitle { width: 10%; } /* Document header: left-title. */ -td.head-vol { width: 80%; text-align: center; } /* Document header: volume. */ -td.head-rtitle { width: 10%; text-align: right; } /* Document header: right-title. */ - -/* General font modes. */ - -i { } /* Italic: BI, IB, I, (implicit). */ -.emph { font-style: italic; font-weight: normal; } /* Emphasis: Em, Bl -emphasis. */ -b { } /* Bold: SB, BI, IB, BR, RB, B, (implicit). */ -.symb { font-style: normal; font-weight: bold; } /* Symbolic: Sy, Ms, Bf -symbolic. */ -small { } /* Small: SB, SM. */ -.lit { font-style: normal; font-weight: normal; font-family: monospace; } /* Literal: Dl, Li, Ql, Bf -literal, Bl -literal, Bl -unfilled. */ - -/* Block modes. */ - -.display { } /* Top of all Bd, D1, Dl. */ -.list { } /* Top of all Bl. */ - -/* Context-specific modes. */ - -i.addr { font-weight: normal; } /* Address (Ad). */ -i.arg { font-weight: normal; } /* Command argument (Ar). */ -span.author { } /* Author name (An). */ -b.cmd { font-style: normal; } /* Command (Cm). */ -b.config { font-style: normal; } /* Config statement (Cd). */ -span.define { } /* Defines (Dv). */ -span.desc { } /* Nd. After em-dash. */ -b.diag { font-style: normal; } /* Diagnostic (Bl -diag). */ -span.env { } /* Environment variables (Ev). */ -span.errno { } /* Error string (Er). */ -i.farg { font-weight: normal; } /* Function argument (Fa, Fn). */ -i.file { font-weight: normal; } /* File (Pa). */ -b.flag { font-style: normal; } /* Flag (Fl, Cm). */ -b.fname { font-style: normal; } /* Function name (Fa, Fn, Rv). */ -i.ftype { font-weight: normal; } /* Function types (Ft, Fn). */ -b.includes { font-style: normal; } /* Header includes (In). */ -span.lib { } /* Library (Lb). */ -i.link-sec { font-weight: normal; } /* Section links (Sx). */ -b.macro { font-style: normal; } /* Macro-ish thing (Fd). */ -b.name { font-style: normal; } /* Name of utility (Nm). */ -span.opt { } /* Options (Op, Oo/Oc). */ -span.ref { } /* Citations (Rs). */ -span.ref-auth { } /* Reference author (%A). */ -i.ref-book { font-weight: normal; } /* Reference book (%B). */ -span.ref-city { } /* Reference city (%C). */ -span.ref-date { } /* Reference date (%D). */ -i.ref-issue { font-weight: normal; } /* Reference issuer/publisher (%I). */ -i.ref-jrnl { font-weight: normal; } /* Reference journal (%J). */ -span.ref-num { } /* Reference number (%N). */ -span.ref-opt { } /* Reference optionals (%O). */ -span.ref-page { } /* Reference page (%P). */ -span.ref-corp { } /* Reference corporate/foreign author (%Q). */ -span.ref-rep { } /* Reference report (%R). */ -span.ref-title { text-decoration: underline; } /* Reference title (%T). */ -span.ref-vol { } /* Reference volume (%V). */ -span.type { font-style: italic; font-weight: normal; } /* Variable types (Vt). */ -span.unix { } /* Unices (Ux, Ox, Nx, Fx, Bx, Bsx, Dx). */ -b.utility { font-style: normal; } /* Name of utility (Ex). */ -b.var { font-style: normal; } /* Variables (Rv). */ - -a.link-ext { } /* Off-site link (Lk). */ -a.link-includes { } /* Include-file link (In). */ -a.link-mail { } /* Mailto links (Mt). */ -a.link-man { } /* Manual links (Xr). */ -a.link-ref { } /* Reference section links (%Q). */ -a.link-sec { } /* Section links (Sx). */ - -/* Formatting for lists. See mdoc(7). */ - -dl.list-diag { } -dt.list-diag { } -dd.list-diag { } - -dl.list-hang { } -dt.list-hang { } -dd.list-hang { } - -dl.list-inset { } -dt.list-inset { } -dd.list-inset { } - -dl.list-ohang { } -dt.list-ohang { } -dd.list-ohang { margin-left: 0ex; } - -dl.list-tag { } -dt.list-tag { } -dd.list-tag { } - -table.list-col { } -tr.list-col { } -td.list-col { } - -ul.list-bul { list-style-type: disc; padding-left: 1em; } -li.list-bul { } - -ul.list-dash { list-style-type: none; padding-left: 0em; } -li.list-dash:before { content: "\2014 "; } - -ul.list-hyph { list-style-type: none; padding-left: 0em; } -li.list-hyph:before { content: "\2013 "; } - -ul.list-item { list-style-type: none; padding-left: 0em; } -li.list-item { } - -ol.list-enum { padding-left: 2em; } -li.list-enum { } - -/* Equation modes. See eqn(7). */ - -span.eqn { } - -/* Table modes. See tbl(7). */ - -table.tbl { } +div.mandoc { min-width: 100ex; + width: 100ex; + font-family: monospace; } /* This is the outer node of all mandoc -T[x]html documents. */ +div.mandoc h1 { margin-bottom: 0ex; font-size: inherit; margin-left: -4ex; } /* Section header (Sh, SH). */ +div.mandoc h2 { margin-bottom: 0ex; font-size: inherit; margin-left: -2ex; } /* Sub-section header (Ss, SS). */ +div.mandoc table { width: 100%; margin-top: 0ex; margin-bottom: 0ex; } /* All tables. */ +div.mandoc td { vertical-align: top; } /* All table cells. */ +div.mandoc p { } /* Paragraph: Pp, Lp. */ +div.mandoc blockquote { margin-left: 5ex; margin-top: 0ex; margin-bottom: 0ex; } /* D1, Dl. */ +div.mandoc div.section { margin-bottom: 2ex; margin-left: 5ex; } /* Sections (Sh, SH). */ +div.mandoc div.subsection { } /* Sub-sections (Ss, SS). */ +div.mandoc table.synopsis { } /* SYNOPSIS section table. */ +div.mandoc table.foot { } /* Document footer. */ +div.mandoc td.foot-date { width: 50%; } /* Document footer: date. */ +div.mandoc td.foot-os { width: 50%; text-align: right; } /* Document footer: OS/source. */ +div.mandoc table.head { } /* Document header. */ +div.mandoc td.head-ltitle { width: 10%; } /* Document header: left-title. */ +div.mandoc td.head-vol { width: 80%; text-align: center; } /* Document header: volume. */ +div.mandoc td.head-rtitle { width: 10%; text-align: right; } /* Document header: right-title. */ +div.mandoc .display { } /* All Bd, D1, Dl. */ +div.mandoc .list { } /* All Bl. */ +div.mandoc i { } /* Italic: BI, IB, I, (implicit). */ +div.mandoc b { } /* Bold: SB, BI, IB, BR, RB, B, (implicit). */ +div.mandoc small { } /* Small: SB, SM. */ +div.mandoc .emph { font-style: italic; font-weight: normal; } /* Emphasis: Em, Bl -emphasis. */ +div.mandoc .symb { font-style: normal; font-weight: bold; } /* Symbolic: Sy, Ms, Bf -symbolic. */ +div.mandoc .lit { font-style: normal; font-weight: normal; font-family: monospace; } /* Literal: Dl, Li, Ql, Bf -literal, Bl -literal, Bl -unfilled. */ +div.mandoc i.addr { font-weight: normal; } /* Address (Ad). */ +div.mandoc i.arg { font-weight: normal; } /* Command argument (Ar). */ +div.mandoc span.author { } /* Author name (An). */ +div.mandoc b.cmd { font-style: normal; } /* Command (Cm). */ +div.mandoc b.config { font-style: normal; } /* Config statement (Cd). */ +div.mandoc span.define { } /* Defines (Dv). */ +div.mandoc span.desc { } /* Nd. After em-dash. */ +div.mandoc b.diag { font-style: normal; } /* Diagnostic (Bl -diag). */ +div.mandoc span.env { } /* Environment variables (Ev). */ +div.mandoc span.errno { } /* Error string (Er). */ +div.mandoc i.farg { font-weight: normal; } /* Function argument (Fa, Fn). */ +div.mandoc i.file { font-weight: normal; } /* File (Pa). */ +div.mandoc b.flag { font-style: normal; } /* Flag (Fl, Cm). */ +div.mandoc b.fname { font-style: normal; } /* Function name (Fa, Fn, Rv). */ +div.mandoc i.ftype { font-weight: normal; } /* Function types (Ft, Fn). */ +div.mandoc b.includes { font-style: normal; } /* Header includes (In). */ +div.mandoc span.lib { } /* Library (Lb). */ +div.mandoc i.link-sec { font-weight: normal; } /* Section links (Sx). */ +div.mandoc b.macro { font-style: normal; } /* Macro-ish thing (Fd). */ +div.mandoc b.name { font-style: normal; } /* Name of utility (Nm). */ +div.mandoc span.opt { } /* Options (Op, Oo/Oc). */ +div.mandoc span.ref { } /* Citations (Rs). */ +div.mandoc span.ref-auth { } /* Reference author (%A). */ +div.mandoc i.ref-book { font-weight: normal; } /* Reference book (%B). */ +div.mandoc span.ref-city { } /* Reference city (%C). */ +div.mandoc span.ref-date { } /* Reference date (%D). */ +div.mandoc i.ref-issue { font-weight: normal; } /* Reference issuer/publisher (%I). */ +div.mandoc i.ref-jrnl { font-weight: normal; } /* Reference journal (%J). */ +div.mandoc span.ref-num { } /* Reference number (%N). */ +div.mandoc span.ref-opt { } /* Reference optionals (%O). */ +div.mandoc span.ref-page { } /* Reference page (%P). */ +div.mandoc span.ref-corp { } /* Reference corporate/foreign author (%Q). */ +div.mandoc span.ref-rep { } /* Reference report (%R). */ +div.mandoc span.ref-title { text-decoration: underline; } /* Reference title (%T). */ +div.mandoc span.ref-vol { } /* Reference volume (%V). */ +div.mandoc span.type { font-style: italic; font-weight: normal; } /* Variable types (Vt). */ +div.mandoc span.unix { } /* Unices (Ux, Ox, Nx, Fx, Bx, Bsx, Dx). */ +div.mandoc b.utility { font-style: normal; } /* Name of utility (Ex). */ +div.mandoc b.var { font-style: normal; } /* Variables (Rv). */ +div.mandoc a.link-ext { } /* Off-site link (Lk). */ +div.mandoc a.link-includes { } /* Include-file link (In). */ +div.mandoc a.link-mail { } /* Mailto links (Mt). */ +div.mandoc a.link-man { } /* Manual links (Xr). */ +div.mandoc a.link-ref { } /* Reference section links (%Q). */ +div.mandoc a.link-sec { } /* Section links (Sx). */ +div.mandoc dl.list-diag { } /* Formatting for lists. See mdoc(7). */ +div.mandoc dt.list-diag { } +div.mandoc dd.list-diag { } +div.mandoc dl.list-hang { } +div.mandoc dt.list-hang { } +div.mandoc dd.list-hang { } +div.mandoc dl.list-inset { } +div.mandoc dt.list-inset { } +div.mandoc dd.list-inset { } +div.mandoc dl.list-ohang { } +div.mandoc dt.list-ohang { } +div.mandoc dd.list-ohang { margin-left: 0ex; } +div.mandoc dl.list-tag { } +div.mandoc dt.list-tag { } +div.mandoc dd.list-tag { } +div.mandoc table.list-col { } +div.mandoc tr.list-col { } +div.mandoc td.list-col { } +div.mandoc ul.list-bul { list-style-type: disc; padding-left: 1em; } +div.mandoc li.list-bul { } +div.mandoc ul.list-dash { list-style-type: none; padding-left: 0em; } +div.mandoc li.list-dash:before { content: "\2014 "; } +div.mandoc ul.list-hyph { list-style-type: none; padding-left: 0em; } +div.mandoc li.list-hyph:before { content: "\2013 "; } +div.mandoc ul.list-item { list-style-type: none; padding-left: 0em; } +div.mandoc li.list-item { } +div.mandoc ol.list-enum { padding-left: 2em; } +div.mandoc li.list-enum { } +div.mandoc span.eqn { } /* Equation modes. See eqn(7). */ +div.mandoc table.tbl { } /* Table modes. See tbl(7). */ diff --git a/man-cgi.css b/man-cgi.css new file mode 100644 index 00000000..5f9f8f6d --- /dev/null +++ b/man-cgi.css @@ -0,0 +1,6 @@ +body { font-family: Helvetica,Arial, sans-serif; + font-size: small; } +#mancgi fieldset { text-align: center; } +#mancgi input[name=expr] { width: 25%; } +#mancgi td.title { padding-right: 1em; + text-align: right; } diff --git a/man.cgi.css b/man.cgi.css deleted file mode 100644 index 184c8592..00000000 --- a/man.cgi.css +++ /dev/null @@ -1,6 +0,0 @@ -body { font-family: Helvetica,Arial, sans-serif; - font-size: small; } -fieldset { text-align: center; } -input[name=expr] { width: 25%; } -td.title { padding-right: 1em; - text-align: right; } |