]> git.cameronkatri.com Git - mandoc.git/commitdiff
Some presentation polish in man.cgi:
authorKristaps Dzonsons <kristaps@bsd.lv>
Thu, 15 Dec 2011 12:05:19 +0000 (12:05 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Thu, 15 Dec 2011 12:05:19 +0000 (12:05 +0000)
 - 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.

Makefile
cgi.c
example.style.css
man-cgi.css [new file with mode: 0644]
man.cgi.css [deleted file]

index a8a92a689604c6ce608a10f9e3f5a96945a82260..dd938c96d7681e2159dd5de01cba81ef5180fd30 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/cgi.c b/cgi.c
index c203c67145e515d5e8b1b00930cc12a39ab71d41..6ab340bb4321cf5bf7534f52ed3aa66be7c6158f 100644 (file)
--- a/cgi.c
+++ b/cgi.c
@@ -1,4 +1,4 @@
-/*     $Id: cgi.c,v 1.31 2011/12/14 13:36:59 kristaps Exp $ */
+/*     $Id: cgi.c,v 1.32 2011/12/15 12:05:19 kristaps Exp $ */
 /*
  * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -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)
index 7bd13fc10a55ce686b8227d681998d715b1c3448..d4886d07bf23eedcbc8a1b325a3b2c04916c81cc 100644 (file)
-/* $Id: example.style.css,v 1.47 2011/10/05 21:35:17 kristaps Exp $ */
-
+/* $Id: example.style.css,v 1.48 2011/12/15 12:05:19 kristaps Exp $ */
 /*
  * 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 (file)
index 0000000..5f9f8f6
--- /dev/null
@@ -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 (file)
index 184c859..0000000
+++ /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; }