summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2010-06-29 15:49:53 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2010-06-29 15:49:53 +0000
commit303d2b5bbdde6b19e2f5e03f096fc12920d87827 (patch)
tree69771c00dddb35836fc198afc5d3fc46da6f9c16
parentc9032a0974ac98a9d455f0e6d15dcd4bd6863507 (diff)
sync to bsd.lv version 1.10.3:
* support -Tps -Opaper=a4 and -Opaper=letter * lots of mandoc.1 manual improvements
-rw-r--r--usr.bin/mandoc/Makefile4
-rw-r--r--usr.bin/mandoc/main.c4
-rw-r--r--usr.bin/mandoc/main.h4
-rw-r--r--usr.bin/mandoc/mandoc.1248
-rw-r--r--usr.bin/mandoc/term_ps.c26
5 files changed, 137 insertions, 149 deletions
diff --git a/usr.bin/mandoc/Makefile b/usr.bin/mandoc/Makefile
index d6847a8cc83..0ef7c42b411 100644
--- a/usr.bin/mandoc/Makefile
+++ b/usr.bin/mandoc/Makefile
@@ -1,8 +1,8 @@
-# $OpenBSD: Makefile,v 1.41 2010/06/26 17:56:43 schwarze Exp $
+# $OpenBSD: Makefile,v 1.42 2010/06/29 15:49:52 schwarze Exp $
.include <bsd.own.mk>
-VERSION=1.10.2
+VERSION=1.10.3
CFLAGS+=-DVERSION=\"${VERSION}\"
CFLAGS+=-W -Wall -Wstrict-prototypes
diff --git a/usr.bin/mandoc/main.c b/usr.bin/mandoc/main.c
index 7de99beeb8f..2acf3c3c44a 100644
--- a/usr.bin/mandoc/main.c
+++ b/usr.bin/mandoc/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c,v 1.38 2010/06/27 21:54:41 schwarze Exp $ */
+/* $Id: main.c,v 1.39 2010/06/29 15:49:52 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -588,7 +588,7 @@ fdesc(struct curparse *curp)
curp->outfree = ascii_free;
break;
case (OUTT_PS):
- curp->outdata = ps_alloc();
+ curp->outdata = ps_alloc(curp->outopts);
curp->outfree = ps_free;
break;
default:
diff --git a/usr.bin/mandoc/main.h b/usr.bin/mandoc/main.h
index b075ba42f95..7d38a729537 100644
--- a/usr.bin/mandoc/main.h
+++ b/usr.bin/mandoc/main.h
@@ -1,4 +1,4 @@
-/* $Id: main.h,v 1.5 2010/06/10 22:50:10 schwarze Exp $ */
+/* $Id: main.h,v 1.6 2010/06/29 15:49:52 schwarze Exp $ */
/*
* Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -44,7 +44,7 @@ void tree_man(void *, const struct man *);
void *ascii_alloc(char *);
void ascii_free(void *);
-void *ps_alloc(void);
+void *ps_alloc(char *);
void ps_free(void *);
void terminal_mdoc(void *, const struct mdoc *);
diff --git a/usr.bin/mandoc/mandoc.1 b/usr.bin/mandoc/mandoc.1
index 610960feae9..7fa4db7dc13 100644
--- a/usr.bin/mandoc/mandoc.1
+++ b/usr.bin/mandoc/mandoc.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: mandoc.1,v 1.33 2010/06/29 14:41:28 schwarze Exp $
+.\" $OpenBSD: mandoc.1,v 1.34 2010/06/29 15:49:52 schwarze Exp $
.\"
.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@bsd.lv>
.\"
@@ -51,9 +51,6 @@ Defaults to
.Fl m Ns Cm andoc .
.It Fl O Ns Ar option
Comma-separated output options.
-See
-.Sx Output Options
-for details.
.It Fl T Ns Ar output
Output format.
See
@@ -139,13 +136,45 @@ specified and
or
.Fl m Ns Cm an
is specified, then this format is used exclusively.
+.Ss Compiler Options
+Default
+.Xr mdoc 7
+and
+.Xr man 7
+compilation behaviour may be overridden with the
+.Fl f
+flag.
+.Bl -tag -width Ds
+.It Fl f Ns Cm ign-errors
+When parsing multiple files, don't halt when one errors out.
+Useful with
+.Fl T Ns Cm lint
+over a large set of manuals passed on the command line.
+.It Fl f Ns Cm ign-escape
+Ignore invalid escape sequences.
+This is the default, but the option can be used to override an earlier
+.Fl f Ns Cm strict .
+.It Fl f Ns Cm ign-scope
+When rewinding the scope of a block macro, forces the compiler to ignore
+scope violations.
+This can seriously mangle the resulting tree.
+.Pq mdoc only
+.It Fl f Ns Cm no-ign-escape
+Do not ignore invalid escape sequences.
+.It Fl f Ns Cm no-ign-macro
+Do not ignore unknown macros at the start of input lines.
+.It Fl f Ns Cm strict
+Implies
+.Fl f Ns Cm no-ign-escape
+and
+.Fl f Ns Cm no-ign-macro .
+.El
.Ss Output Formats
The
.Nm
utility accepts the following
.Fl T
-arguments (see
-.Sx OUTPUT ) :
+arguments, which correspond to output modes:
.Bl -tag -width Ds
.It Fl T Ns Cm ascii
Produce 7-bit ASCII output, backspace-encoded for bold and underline
@@ -177,43 +206,60 @@ See
.Pp
If multiple input files are specified, these will be processed by the
corresponding filter in-order.
-.Ss Compiler Options
-Default compiler behaviour may be overridden with the
-.Fl f
-flag.
+.Ss ASCII Output
+Output produced by
+.Fl T Ns Cm ascii ,
+which is the default, is rendered in standard 7-bit ASCII documented in
+.Xr ascii 7 .
+.Pp
+Font styles are applied by using back-spaced encoding such that an
+underlined character
+.Sq c
+is rendered as
+.Sq _ Ns \e[bs] Ns c ,
+where
+.Sq \e[bs]
+is the back-space character number 8.
+Emboldened characters are rendered as
+.Sq c Ns \e[bs] Ns c .
+.Pp
+The special characters documented in
+.Xr mandoc_char 7
+are rendered best-effort in an ASCII equivalent.
+.Pp
+Output width is limited to 78 visible columns unless literal input lines
+exceed this limit.
+.Pp
+The following
+.Fl O
+arguments are accepted:
.Bl -tag -width Ds
-.It Fl f Ns Cm ign-errors
-When parsing multiple files, don't halt when one errors out.
-Useful with
-.Fl T Ns Cm lint
-over a large set of manuals passed on the command line.
-.It Fl f Ns Cm ign-escape
-Ignore invalid escape sequences.
-This is the default, but the option can be used to override an earlier
-.Fl f Ns Cm strict .
-.It Fl f Ns Cm ign-scope
-When rewinding the scope of a block macro, forces the compiler to ignore
-scope violations.
-This can seriously mangle the resulting tree.
-.Pq mdoc only
-.It Fl f Ns Cm no-ign-escape
-Do not ignore invalid escape sequences.
-.It Fl f Ns Cm no-ign-macro
-Do not ignore unknown macros at the start of input lines.
-.It Fl f Ns Cm strict
-Implies
-.Fl f Ns Cm no-ign-escape
-and
-.Fl f Ns Cm no-ign-macro .
+.It Cm width Ns = Ns Ar width
+The output width is set to
+.Ar width ,
+which will normalise to \(>=60.
.El
-.Ss Output Options
+.Ss HTML Output
+Output produced by
+.Fl T Ns Cm html
+conforms to HTML-4.01 strict.
+.Pp
+Font styles and page structure are applied using CSS2.
+By default, no font style is applied to any text,
+although CSS2 is hard-coded to format
+the basic structure of output.
+.Pp
The
-.Fl T Ns Ar html
-and
-.Fl T Ns Ar xhtml
-modes accept the following
+.Pa example.style.css
+file documents the range of styles applied to output and, if used, will
+cause rendered documents to appear as they do in
+.Fl T Ns Cm ascii .
+.Pp
+Special characters are rendered in decimal-encoded UTF-8.
+.Pp
+The following
.Fl O
-arguments:
+arguments are accepted:
.Bl -tag -width Ds
.It Cm includes Ns = Ns Ar fmt
The string
@@ -251,113 +297,29 @@ is used for an external style-sheet.
This must be a valid absolute or
relative URI.
.El
-.Pp
-The
-.Fl T Ns Ar ascii
-mode accepts the following
-.Fl O
-argument:
-.Bl -tag -width Ds
-.It Cm width Ns = Ns Ar width
-The output width is set to
-.Ar width ,
-which will normalise to \(>=60.
-.El
-.Sh OUTPUT
-This section documents output details of
-.Nm .
-In general, output conforms to the traditional manual style of a header,
-a body composed of sections and sub-sections, and a footer.
-.Pp
-The text style of output characters (non-macro characters, punctuation,
-and white-space) is dictated by context.
-.Pp
-White-space is generally stripped from input.
-This can be changed with
-character escapes (specified in
-.Xr mandoc_char 7 )
-or literal modes (specified in
-.Xr mdoc 7
-and
-.Xr man 7 ) .
-.Pp
-If non-macro punctuation is set apart from words, such as in the phrase
-.Dq to be \&, or not to be ,
-it's processed by
-.Nm ,
-regardless of output format, according to the following rules: opening
-punctuation
-.Po
-.Sq \&( ,
-.Sq \&[ ,
-and
-.Sq \&{
-.Pc
-is not followed by a space; closing punctuation
-.Po
-.Sq \&. ,
-.Sq \&, ,
-.Sq \&; ,
-.Sq \&: ,
-.Sq \&? ,
-.Sq \&! ,
-.Sq \&) ,
-.Sq \&]
-and
-.Sq \&}
-.Pc
-is not preceded by white-space.
-.Pp
-If the input is
-.Xr mdoc 7 ,
-however, these rules are also applied to macro arguments when appropriate.
-.Ss ASCII Output
-Output produced by
-.Fl T Ns Cm ascii ,
-which is the default, is rendered in standard 7-bit ASCII documented in
-.Xr ascii 7 .
-.Pp
-Font styles are applied by using back-spaced encoding such that an
-underlined character
-.Sq c
-is rendered as
-.Sq _ Ns \e[bs] Ns c ,
-where
-.Sq \e[bs]
-is the back-space character number 8.
-Emboldened characters are rendered as
-.Sq c Ns \e[bs] Ns c .
-.Pp
-The special characters documented in
-.Xr mandoc_char 7
-are rendered best-effort in an ASCII equivalent.
-.Pp
-Output width is limited to 78 visible columns unless literal input lines
-exceed this limit.
-.Ss HTML Output
-Output produced by
-.Fl T Ns Cm html
-conforms to HTML-4.01 strict.
-.Pp
-Font styles and page structure are applied using CSS2.
-By default, no font style is applied to any text,
-although CSS2 is hard-coded to format
-the basic structure of output.
-.Pp
-The
-.Pa example.style.css
-file documents the range of styles applied to output and, if used, will
-cause rendered documents to appear as they do in
-.Fl T Ns Cm ascii .
-.Pp
-Special characters are rendered in decimal-encoded UTF-8.
.Ss PostScript Output
PostScript
.Qq Adobe-3.0
Level-2 pages may be generated by
.Fl T Ns Cm ps .
-Output pages are US-letter sized (215.9 x 279.4 mm) and rendered in
-fixed, 10-point Courier font.
+Output pages are US-letter sized and rendered in fixed, 10-point Courier
+font.
+.Pp
+Special characters are rendered as in
+.Sx ASCII Output .
+.Pp
+The following
+.Fl O
+arguments are accepted:
+.Bl -tag -width Ds
+.It Cm paper Ns = Ns Ar name
+The paper size
+.Ar name
+may be one of
+.Ar a4
+or
+.Ar letter .
+.El
.Ss XHTML Output
Output produced by
.Fl T Ns Cm xhtml
@@ -382,6 +344,10 @@ as the style-sheet:
To check over a large set of manuals:
.Pp
.Dl $ mandoc \-Tlint \-fign-errors `find /usr/src -name \e*\e.[1-9]`
+.Pp
+To produce a series of PostScript manuals for A4 paper:
+.Pp
+.D1 $ mandoc \-Tps \-Opaper=a4 mdoc.7 man.7 \*(Gt manuals.ps
.Sh COMPATIBILITY
This section summarises
.Nm
diff --git a/usr.bin/mandoc/term_ps.c b/usr.bin/mandoc/term_ps.c
index 3f134a46151..eb06b309c4f 100644
--- a/usr.bin/mandoc/term_ps.c
+++ b/usr.bin/mandoc/term_ps.c
@@ -1,4 +1,4 @@
-/* $Id: term_ps.c,v 1.4 2010/06/29 14:41:28 schwarze Exp $ */
+/* $Id: term_ps.c,v 1.5 2010/06/29 15:49:52 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -22,6 +22,7 @@
#include <assert.h>
#include <stdarg.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -373,14 +374,17 @@ static void ps_setfont(struct termp *, enum termfont);
void *
-ps_alloc(void)
+ps_alloc(char *outopts)
{
struct termp *p;
size_t pagex, pagey, margin;
+ const char *toks[2];
+ char *v;
if (NULL == (p = term_alloc(TERMENC_ASCII)))
return(NULL);
+ /* Default is USA letter. */
pagex = 612;
pagey = 792;
margin = 72;
@@ -393,6 +397,24 @@ ps_alloc(void)
p->endline = ps_endline;
p->width = ps_width;
+ toks[0] = "paper";
+ toks[1] = NULL;
+
+ while (outopts && *outopts)
+ switch (getsubopt(&outopts, UNCONST(toks), &v)) {
+ case (0):
+ if (0 == strcasecmp(v, "a4")) {
+ pagex = 595;
+ pagey = 842;
+ } else if (0 == strcasecmp(v, "letter")) {
+ pagex = 612;
+ pagey = 792;
+ }
+ break;
+ default:
+ break;
+ }
+
assert(margin * 2 < pagex);
assert(margin * 2 < pagey);