summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-12-15 12:05:19 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-12-15 12:05:19 +0000
commit87d272e845827d8144a666ae93fee42f806822c5 (patch)
treef62d74766d6848dd646ecd83c8ebca81beec2dd4
parent0ca8cf3cd36d40309e683fee5abc6174df49fe15 (diff)
downloadmandoc-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--Makefile4
-rw-r--r--cgi.c68
-rw-r--r--example.style.css242
-rw-r--r--man-cgi.css6
-rw-r--r--man.cgi.css6
5 files changed, 146 insertions, 180 deletions
diff --git a/Makefile b/Makefile
index a8a92a68..dd938c96 100644
--- 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 4709159f..18f6b7ba 100644
--- a/cgi.c
+++ b/cgi.c
@@ -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; }