summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-09-21 13:06:13 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-09-21 13:06:13 +0000
commit14dd31b8463de88a036d22876fd21cbcacffde5a (patch)
treed0ab9b81bf2676ba260a871c6a362076007468a1
parentc8074c0e1bae22d23adc6d62177dc42534576980 (diff)
downloadmandoc-14dd31b8463de88a036d22876fd21cbcacffde5a.tar.gz
Removed new-born out.{h,c} (not a good idea).
Removed if 0 for HTML-mode output (why not). Added option -oxxxx for passing options to output devices.
-rw-r--r--Makefile30
-rw-r--r--example.style.css40
-rw-r--r--html.c134
-rw-r--r--index.css44
-rw-r--r--index.sgml2
-rw-r--r--main.c18
-rw-r--r--mandoc.147
-rw-r--r--out.c113
-rw-r--r--out.h28
-rw-r--r--style.css82
10 files changed, 261 insertions, 277 deletions
diff --git a/Makefile b/Makefile
index 4296f683..5848d7c1 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-.SUFFIXES: .html .xml .sgml .1.txt .3.txt .7.txt .1 .3 .7 .md5 .tar.gz
+.SUFFIXES: .html .xml .sgml .1.txt .3.txt .7.txt .1 .3 .7 .md5 .tar.gz .1.html .3.html .7.html
BINDIR = $(PREFIX)/bin
INCLUDEDIR = $(PREFIX)/include
@@ -36,11 +36,11 @@ MANSRCS = man_macro.c man.c man_hash.c man_validate.c \
man_action.c mandoc.c man_argv.c
MAINLNS = main.ln mdoc_term.ln chars.ln term.ln tree.ln \
- compat.ln man_term.ln html.ln out.ln
+ compat.ln man_term.ln html.ln
MAINOBJS = main.o mdoc_term.o chars.o term.o tree.o compat.o \
- man_term.o html.o out.o
+ man_term.o html.o
MAINSRCS = main.c mdoc_term.c chars.c term.c tree.c compat.c \
- man_term.c html.c out.c
+ man_term.c html.c
LLNS = llib-llibmdoc.ln llib-llibman.ln llib-lmandoc.ln
LNS = $(MAINLNS) $(MDOCLNS) $(MANLNS)
@@ -51,7 +51,9 @@ DATAS = arch.in att.in lib.in msec.in st.in vol.in chars.in
HEADS = mdoc.h libmdoc.h man.h libman.h term.h libmandoc.h
SGMLS = index.sgml
XSLS = ChangeLog.xsl
-HTMLS = index.html ChangeLog.html
+HTMLS = index.html ChangeLog.html mandoc.1.html mdoc.3.html \
+ man.3.html mdoc.7.html man.7.html mandoc_char.7.html \
+ manuals.7.html
XMLS = ChangeLog.xml
STATICS = style.css external.png
MD5S = mdocml-$(VERSION).md5
@@ -78,8 +80,6 @@ cleanlint:
dist: mdocml-$(VERSION).tar.gz
-html: $(HTMLS)
-
www: all $(HTMLS) $(MD5S) $(TARGZS) $(TEXTS)
installwww: www
@@ -156,11 +156,8 @@ compat.o: compat.c
term.ln: term.c term.h man.h mdoc.h
term.o: term.c term.h man.h mdoc.h
-html.ln: html.c out.h man.h mdoc.h
-html.o: html.c out.h man.h mdoc.h
-
-out.ln: out.c out.h man.h mdoc.h
-out.o: out.c out.h man.h mdoc.h
+html.ln: html.c man.h mdoc.h
+html.o: html.c man.h mdoc.h
tree.ln: tree.c man.h mdoc.h
tree.o: tree.c man.h mdoc.h
@@ -219,11 +216,20 @@ mandoc: $(MAINOBJS) libmdoc.a libman.a
.1.1.txt:
./mandoc -Wall,error -fstrict $< | col -b > $@
+.1.1.html:
+ ./mandoc -Thtml -ostyle=style.css -Wall,error -fstrict $< > $@
+
.3.3.txt:
./mandoc -Wall,error -fstrict $< | col -b > $@
+.3.3.html:
+ ./mandoc -Thtml -ostyle=style.css -Wall,error -fstrict $< > $@
+
.7.7.txt:
./mandoc -Wall,error -fstrict $< | col -b > $@
+.7.7.html:
+ ./mandoc -Thtml -ostyle=style.css -Wall,error -fstrict $< > $@
+
.tar.gz.md5:
md5 $< > $@
diff --git a/example.style.css b/example.style.css
deleted file mode 100644
index ceb5cc74..00000000
--- a/example.style.css
+++ /dev/null
@@ -1,40 +0,0 @@
-div.body { } /* Wraps entire body file. */
-
-span.sec-head { font-weight: bold; } /* Sections (Sh). */
-div.sec-head { }
-div.sec-body { }
-div.sec-block { }
-
-span.ssec-head { font-weight: bold; } /* Sub-sections (Ss). */
-div.ssec-head { }
-div.ssec-body { }
-div.ssec-block { }
-
-span.addr { text-decoration: underline; } /* Address (Ad). */
-span.arg { font-style: italic; } /* Command argument (Ar). */
-span.author { } /* Author name (An). */
-span.config { font-weight: bold; } /* Config statement (Cd). */
-span.define { } /* Defines (Dv). */
-span.desc { } /* Nd. After em-dash. */
-span.diag { font-weight: bold; } /* Diagnostic (Bl -diag). */
-span.emph { font-style: italic; } /* Emphasis (Em). */
-span.env { } /* Environment variables (Ev). */
-span.errno { } /* Error string (Er). */
-span.farg { font-style: underline; } /* Function argument (Fa, Fn). */
-span.file { font-style: italic; } /* File (Pa). */
-span.flag { font-weight: bold; } /* Flag (Fl, Cm). */
-span.macro { } /* Macro-ish thing (Fd). */
-span.name { font-weight: bold; } /* Name of utility (Nm). */
-span.opt { } /* Options (Op, Oo/Oc). */
-span.type { font-weight: italic; } /* Variable types (Vt, Ft, Fn). */
-span.unix { } /* Unices (Ux, Ox, Nx, Fx, Bx, Bsx, Dx). */
-span.utility { font-weight: bold; } /* Name of utility (Ex). */
-
-a.link-man { } /* Manual links (Xr). */
-a.link-sec { } /* Section links (Sx). */
-
-div.lit-block { font-family: monospace; } /* Literal block (D1, Bd -literal, Dl). */
-
-table.header { } /* Document header. */
-table.footer { } /* Document footer. */
-
diff --git a/html.c b/html.c
index 463b9a4b..0151003c 100644
--- a/html.c
+++ b/html.c
@@ -27,7 +27,6 @@
#include "chars.h"
#include "mdoc.h"
#include "man.h"
-#include "out.h"
#define DOCTYPE "-//W3C//DTD HTML 4.01//EN"
#define DTD "http://www.w3.org/TR/html4/strict.dtd"
@@ -180,6 +179,10 @@ static void print_text(struct html *, const char *);
static void print_res(struct html *, const char *, int);
static void print_spec(struct html *, const char *, int);
+static int a2width(const char *);
+static int a2offs(const char *);
+static int a2list(const struct mdoc_node *);
+
static void mdoc_root_post(MDOC_ARGS);
static int mdoc_root_pre(MDOC_ARGS);
static int mdoc_tbl_pre(MDOC_ARGS, int);
@@ -231,6 +234,7 @@ static int mdoc_xr_pre(MDOC_ARGS);
static int mdoc_xx_pre(MDOC_ARGS);
#ifdef __linux__
+extern int getsubopt(char **, char * const *, char **);
extern size_t strlcpy(char *, const char *, size_t);
extern size_t strlcat(char *, const char *, size_t);
#endif
@@ -399,9 +403,14 @@ html_man(void *arg, const struct man *m)
void *
-html_alloc(void)
+html_alloc(char *outopts)
{
struct html *h;
+ char *toks[3], *o, *v;
+
+ toks[0] = "style";
+ toks[1] = "base";
+ toks[2] = NULL;
if (NULL == (h = calloc(1, sizeof(struct html))))
return(NULL);
@@ -414,8 +423,20 @@ html_alloc(void)
return(NULL);
}
- /* h->base = xxx; */
- h->style = "style.css"; /* XXX */
+ while (*outopts) {
+ o = outopts;
+ switch (getsubopt(&outopts, toks, &v)) {
+ case (0):
+ h->style = v;
+ break;
+ case (1):
+ h->base = v;
+ break;
+ default:
+ break;
+ }
+ }
+
return(h);
}
@@ -447,6 +468,93 @@ html_free(void *p)
}
+static int
+a2list(const struct mdoc_node *n)
+{
+ int i;
+
+ assert(MDOC_BLOCK == n->type && MDOC_Bl == n->tok);
+ assert(n->args);
+
+ for (i = 0; i < (int)n->args->argc; i++)
+ switch (n->args->argv[i].arg) {
+ case (MDOC_Enum):
+ /* FALLTHROUGH */
+ case (MDOC_Dash):
+ /* FALLTHROUGH */
+ case (MDOC_Hyphen):
+ /* FALLTHROUGH */
+ case (MDOC_Bullet):
+ /* FALLTHROUGH */
+ case (MDOC_Tag):
+ /* FALLTHROUGH */
+ case (MDOC_Hang):
+ /* FALLTHROUGH */
+ case (MDOC_Inset):
+ /* FALLTHROUGH */
+ case (MDOC_Diag):
+ /* FALLTHROUGH */
+ case (MDOC_Item):
+ /* FALLTHROUGH */
+ case (MDOC_Column):
+ /* FALLTHROUGH */
+ case (MDOC_Ohang):
+ return(n->args->argv[i].arg);
+ default:
+ break;
+ }
+
+ abort();
+ /* NOTREACHED */
+}
+
+
+static int
+a2width(const char *p)
+{
+ int i, len;
+
+ if (0 == (len = (int)strlen(p)))
+ return(0);
+ for (i = 0; i < len - 1; i++)
+ if ( ! isdigit((u_char)p[i]))
+ break;
+
+ if (i == len - 1)
+ if ('n' == p[len - 1] || 'm' == p[len - 1])
+ return(atoi(p) + 2);
+
+ return(len + 2);
+}
+
+
+static int
+a2offs(const char *p)
+{
+ int len, i;
+
+ if (0 == strcmp(p, "left"))
+ return(0);
+ if (0 == strcmp(p, "indent"))
+ return(INDENT + 1);
+ if (0 == strcmp(p, "indent-two"))
+ return((INDENT + 1) * 2);
+
+ if (0 == (len = (int)strlen(p)))
+ return(0);
+
+ for (i = 0; i < len - 1; i++)
+ if ( ! isdigit((u_char)p[i]))
+ break;
+
+ if (i == len - 1)
+ if ('n' == p[len - 1] || 'm' == p[len - 1])
+ return(atoi(p));
+
+ return(len);
+}
+
+
static void
print_mdoc(MDOC_ARGS)
{
@@ -1420,11 +1528,10 @@ mdoc_tbl_pre(MDOC_ARGS, int type)
if (MDOC_Width == bl->args->argv[i].arg) {
assert(bl->args->argv[i].sz);
wp = i;
- w = out_a2width(bl->args->argv[i].value[0]);
+ w = a2width(bl->args->argv[i].value[0]);
} else if (MDOC_Offset == bl->args->argv[i].arg) {
assert(bl->args->argv[i].sz);
- o = out_a2offs
- (bl->args->argv[i].value[0], INDENT);
+ o = a2offs(bl->args->argv[i].value[0]);
} else if (MDOC_Compact == bl->args->argv[i].arg)
c = 1;
@@ -1435,7 +1542,7 @@ mdoc_tbl_pre(MDOC_ARGS, int type)
/* Counter... */ ;
assert(nn);
if (wp >= 0 && i < (int)bl->args[wp].argv->sz)
- w = out_a2width(bl->args->argv[wp].value[i]);
+ w = a2width(bl->args->argv[wp].value[i]);
}
switch (type) {
@@ -1484,7 +1591,7 @@ mdoc_bl_pre(MDOC_ARGS)
if (MDOC_BLOCK != n->type)
return(1);
- if (MDOC_Enum != out_a2list(n))
+ if (MDOC_Enum != a2list(n))
return(1);
ord = malloc(sizeof(struct ord));
@@ -1506,7 +1613,7 @@ mdoc_bl_post(MDOC_ARGS)
if (MDOC_BLOCK != n->type)
return;
- if (MDOC_Enum != out_a2list(n))
+ if (MDOC_Enum != a2list(n))
return;
ord = SLIST_FIRST(&h->ords);
@@ -1522,9 +1629,9 @@ mdoc_it_pre(MDOC_ARGS)
int type;
if (MDOC_BLOCK == n->type)
- type = out_a2list(n->parent->parent);
+ type = a2list(n->parent->parent);
else
- type = out_a2list(n->parent->parent->parent);
+ type = a2list(n->parent->parent->parent);
return(mdoc_tbl_pre(m, n, h, type));
}
@@ -1749,8 +1856,7 @@ mdoc_bd_pre(MDOC_ARGS)
switch (bl->args->argv[i].arg) {
case (MDOC_Offset):
assert(bl->args->argv[i].sz);
- o = out_a2offs
- (bl->args->argv[i].value[0], INDENT);
+ o = a2offs (bl->args->argv[i].value[0]);
break;
case (MDOC_Compact):
c = 1;
diff --git a/index.css b/index.css
new file mode 100644
index 00000000..b58ad883
--- /dev/null
+++ b/index.css
@@ -0,0 +1,44 @@
+body { color: #333333;
+ font-size: smaller;
+ font-family: Verdana, Tahoma, Arial, sans-serif; }
+
+table.frame { max-width: 800px;
+ padding-left: 10px; }
+
+table { padding-left: 40px; }
+
+p { padding-left: 40px;
+ text-align: justify; }
+
+h1 { font-weight: bold;
+ font-size: small;
+ font-family: Verdana, Tahoma, Arial, sans-serif; }
+
+h2 { font-weight: bold;
+ font-size: small;
+ padding-left: 20px;
+ margin-bottom: 0px;
+ font-family: Verdana, Tahoma, Arial, sans-serif; }
+
+div.clhead { background-color: #E6E6FA; color: #000000; padding: 2px; font-weight: bold; }
+
+div.clbody { margin-left: 2px; }
+
+ul.clbody { margin-top: 4px; }
+
+span.rev { color: #808080; }
+
+span.nm { color: #000000; font-weight: bold; }
+
+span.attn { color: #000000; font-weight: bold; }
+
+div.head { border-bottom: 1px dotted #cccccc;
+ padding-bottom: 5px;
+ text-align: right; }
+
+div.foot { border-top: 1px dotted #cccccc;
+ padding-top: 5px;
+ font-size: smaller;
+ text-align: right; }
+
+a.external { background: transparent url(external.png) center right no-repeat; padding-right: 12px; }
diff --git a/index.sgml b/index.sgml
index 5a13ae4a..44345573 100644
--- a/index.sgml
+++ b/index.sgml
@@ -3,7 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="resource-type" content="document">
- <link rel="stylesheet" href="style.css" type="text/css" media="all">
+ <link rel="stylesheet" href="index.css" type="text/css" media="all">
<title>mdocml.bsd.lv</title>
</head>
<body>
diff --git a/main.c b/main.c
index d6072a6a..b9d9da81 100644
--- a/main.c
+++ b/main.c
@@ -58,9 +58,7 @@ enum intt {
enum outt {
OUTT_ASCII = 0,
OUTT_TREE,
-#if 1
OUTT_HTML,
-#endif
OUTT_LINT
};
@@ -86,14 +84,13 @@ struct curparse {
out_man outman;
out_free outfree;
void *outdata;
+ char *outopts;
};
-#if 1
-extern void *html_alloc(void);
+extern void *html_alloc(char *);
extern void html_mdoc(void *, const struct mdoc *);
extern void html_man(void *, const struct man *);
extern void html_free(void *);
-#endif
extern void *ascii_alloc(void);
extern void tree_mdoc(void *, const struct mdoc *);
extern void tree_man(void *, const struct man *);
@@ -134,7 +131,7 @@ main(int argc, char *argv[])
curp.outtype = OUTT_ASCII;
/* LINTED */
- while (-1 != (c = getopt(argc, argv, "f:m:VW:T:")))
+ while (-1 != (c = getopt(argc, argv, "f:m:o:T:VW:")))
switch (c) {
case ('f'):
if ( ! foptions(&curp.fflags, optarg))
@@ -144,6 +141,9 @@ main(int argc, char *argv[])
if ( ! moptions(&curp.inttype, optarg))
return(EXIT_FAILURE);
break;
+ case ('o'):
+ curp.outopts = optarg;
+ break;
case ('T'):
if ( ! toptions(&curp.outtype, optarg))
return(EXIT_FAILURE);
@@ -441,14 +441,12 @@ fdesc(struct buf *blk, struct buf *ln, struct curparse *curp)
if ( ! (curp->outman && curp->outmdoc)) {
switch (curp->outtype) {
-#if 1
case (OUTT_HTML):
- curp->outdata = html_alloc();
+ curp->outdata = html_alloc(curp->outopts);
curp->outman = html_man;
curp->outmdoc = html_mdoc;
curp->outfree = html_free;
break;
-#endif
case (OUTT_TREE):
curp->outman = tree_man;
curp->outmdoc = tree_mdoc;
@@ -563,10 +561,8 @@ toptions(enum outt *tflags, char *arg)
*tflags = OUTT_LINT;
else if (0 == strcmp(arg, "tree"))
*tflags = OUTT_TREE;
-#if 1
else if (0 == strcmp(arg, "html"))
*tflags = OUTT_HTML;
-#endif
else {
warnx("bad argument: -T%s", arg);
return(0);
diff --git a/mandoc.1 b/mandoc.1
index 936578f5..68b6c08d 100644
--- a/mandoc.1
+++ b/mandoc.1
@@ -26,11 +26,12 @@
.
.Sh SYNOPSIS
.Nm mandoc
-.Op Fl V
.Op Fl f Ns Ar option...
.Op Fl m Ns Ar format
-.Op Fl W Ns Ar err...
+.Op Fl o Ns Ar option...
.Op Fl T Ns Ar output
+.Op Fl V
+.Op Fl W Ns Ar err...
.Op Ar infile...
.
.
@@ -43,7 +44,7 @@ manual pages for display. The arguments are as follows:
.
.Bl -tag -width Ds
.It Fl f Ns Ar option...
-Override default compiler behaviour. See
+Comma-separated compiler options. See
.Sx Compiler Options
for details.
.
@@ -53,6 +54,11 @@ Input format. See
for available formats. Defaults to
.Fl m Ns Ar andoc .
.
+.It Fl o Ns Ar format
+Comma-separated output options. See
+.Sx Output Options
+for details.
+.
.It Fl T Ns Ar output
Output format. See
.Sx Output Formats
@@ -63,7 +69,7 @@ for available formats. Defaults to
Print version and exit.
.
.It Fl W Ns Ar err...
-Configure warning messages. Use
+Comma-separated warning options. Use
.Fl W Ns Ar all
to print warnings,
.Fl W Ns Ar error
@@ -196,6 +202,9 @@ arguments:
Produce 7-bit ASCII output, backspace-encoded for bold and underline
styles. This is the default.
.
+.It Fl T Ns Ar html
+Produce strict HTML-4.01 output, with a sane default style.
+.
.It Fl T Ns Ar tree
Produce an indented parse tree.
.
@@ -241,16 +250,24 @@ Don't halt when encountering parse errors. Useful with
over a large set of manuals passed on the command line.
.El
.
-.Pp
-As with the
-.Fl W
-flag, multiple
-.Fl f
-options may be grouped and delimited with a comma. Using
-.Fl f Ns Ar ign-scope,no-ign-escape ,
-for example, will try to ignore scope and not ignore character-escape
-errors.
-.
+.Ss Output Options
+For the time being, only
+.Fl T Ns Ar html
+is the only mode with output options:
+.Bl -tag -width Ds
+.It Fl o Ns Ar style=style.css
+The file
+.Ar style.css
+is used for an external style-sheet. This must be a valid absolute or
+relative URI.
+.It Fl o Ns Ar base=http://base/
+The URL
+.Ar http://base/
+is used as a base URL for all relative links. This is useful when
+linking between documents via the
+.Sq \&Xr
+macro.
+.El
.
.Sh EXAMPLES
To page manuals to the terminal:
@@ -275,7 +292,7 @@ Each input and output format is separately noted.
.
.
.Ss ASCII output
-.Bl -bullet -compact -width Ds
+.Bl -bullet -compact
.It
The
.Sq \e~
diff --git a/out.c b/out.c
deleted file mode 100644
index 7ed0d5cd..00000000
--- a/out.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* $Id$ */
-/*
- * Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-#include <sys/types.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "mdoc.h"
-#include "man.h"
-#include "out.h"
-
-int
-out_a2list(const struct mdoc_node *n)
-{
- int i;
-
- assert(MDOC_BLOCK == n->type && MDOC_Bl == n->tok);
- assert(n->args);
-
- for (i = 0; i < (int)n->args->argc; i++)
- switch (n->args->argv[i].arg) {
- case (MDOC_Enum):
- /* FALLTHROUGH */
- case (MDOC_Dash):
- /* FALLTHROUGH */
- case (MDOC_Hyphen):
- /* FALLTHROUGH */
- case (MDOC_Bullet):
- /* FALLTHROUGH */
- case (MDOC_Tag):
- /* FALLTHROUGH */
- case (MDOC_Hang):
- /* FALLTHROUGH */
- case (MDOC_Inset):
- /* FALLTHROUGH */
- case (MDOC_Diag):
- /* FALLTHROUGH */
- case (MDOC_Item):
- /* FALLTHROUGH */
- case (MDOC_Column):
- /* FALLTHROUGH */
- case (MDOC_Ohang):
- return(n->args->argv[i].arg);
- default:
- break;
- }
-
- abort();
- /* NOTREACHED */
-}
-
-
-int
-out_a2width(const char *p)
-{
- int i, len;
-
- if (0 == (len = (int)strlen(p)))
- return(0);
- for (i = 0; i < len - 1; i++)
- if ( ! isdigit((u_char)p[i]))
- break;
-
- if (i == len - 1)
- if ('n' == p[len - 1] || 'm' == p[len - 1])
- return(atoi(p) + 2);
-
- return(len + 2);
-}
-
-
-int
-out_a2offs(const char *p, int indent)
-{
- int len, i;
-
- if (0 == strcmp(p, "left"))
- return(0);
- if (0 == strcmp(p, "indent"))
- return(indent + 1);
- if (0 == strcmp(p, "indent-two"))
- return((indent + 1) * 2);
-
- if (0 == (len = (int)strlen(p)))
- return(0);
-
- for (i = 0; i < len - 1; i++)
- if ( ! isdigit((u_char)p[i]))
- break;
-
- if (i == len - 1)
- if ('n' == p[len - 1] || 'm' == p[len - 1])
- return(atoi(p));
-
- return(len);
-}
-
diff --git a/out.h b/out.h
deleted file mode 100644
index 7d39a0ff..00000000
--- a/out.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* $Id$ */
-/*
- * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-#ifndef OUT_H
-#define OUT_H
-
-__BEGIN_DECLS
-
-int out_a2width(const char *);
-int out_a2offs(const char *, int);
-int out_a2list(const struct mdoc_node *);
-
-__END_DECLS
-
-#endif /*!OUT_H*/
diff --git a/style.css b/style.css
index b58ad883..ceb5cc74 100644
--- a/style.css
+++ b/style.css
@@ -1,44 +1,40 @@
-body { color: #333333;
- font-size: smaller;
- font-family: Verdana, Tahoma, Arial, sans-serif; }
+div.body { } /* Wraps entire body file. */
+
+span.sec-head { font-weight: bold; } /* Sections (Sh). */
+div.sec-head { }
+div.sec-body { }
+div.sec-block { }
+
+span.ssec-head { font-weight: bold; } /* Sub-sections (Ss). */
+div.ssec-head { }
+div.ssec-body { }
+div.ssec-block { }
+
+span.addr { text-decoration: underline; } /* Address (Ad). */
+span.arg { font-style: italic; } /* Command argument (Ar). */
+span.author { } /* Author name (An). */
+span.config { font-weight: bold; } /* Config statement (Cd). */
+span.define { } /* Defines (Dv). */
+span.desc { } /* Nd. After em-dash. */
+span.diag { font-weight: bold; } /* Diagnostic (Bl -diag). */
+span.emph { font-style: italic; } /* Emphasis (Em). */
+span.env { } /* Environment variables (Ev). */
+span.errno { } /* Error string (Er). */
+span.farg { font-style: underline; } /* Function argument (Fa, Fn). */
+span.file { font-style: italic; } /* File (Pa). */
+span.flag { font-weight: bold; } /* Flag (Fl, Cm). */
+span.macro { } /* Macro-ish thing (Fd). */
+span.name { font-weight: bold; } /* Name of utility (Nm). */
+span.opt { } /* Options (Op, Oo/Oc). */
+span.type { font-weight: italic; } /* Variable types (Vt, Ft, Fn). */
+span.unix { } /* Unices (Ux, Ox, Nx, Fx, Bx, Bsx, Dx). */
+span.utility { font-weight: bold; } /* Name of utility (Ex). */
+
+a.link-man { } /* Manual links (Xr). */
+a.link-sec { } /* Section links (Sx). */
+
+div.lit-block { font-family: monospace; } /* Literal block (D1, Bd -literal, Dl). */
+
+table.header { } /* Document header. */
+table.footer { } /* Document footer. */
-table.frame { max-width: 800px;
- padding-left: 10px; }
-
-table { padding-left: 40px; }
-
-p { padding-left: 40px;
- text-align: justify; }
-
-h1 { font-weight: bold;
- font-size: small;
- font-family: Verdana, Tahoma, Arial, sans-serif; }
-
-h2 { font-weight: bold;
- font-size: small;
- padding-left: 20px;
- margin-bottom: 0px;
- font-family: Verdana, Tahoma, Arial, sans-serif; }
-
-div.clhead { background-color: #E6E6FA; color: #000000; padding: 2px; font-weight: bold; }
-
-div.clbody { margin-left: 2px; }
-
-ul.clbody { margin-top: 4px; }
-
-span.rev { color: #808080; }
-
-span.nm { color: #000000; font-weight: bold; }
-
-span.attn { color: #000000; font-weight: bold; }
-
-div.head { border-bottom: 1px dotted #cccccc;
- padding-bottom: 5px;
- text-align: right; }
-
-div.foot { border-top: 1px dotted #cccccc;
- padding-top: 5px;
- font-size: smaller;
- text-align: right; }
-
-a.external { background: transparent url(external.png) center right no-repeat; padding-right: 12px; }