diff options
author | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2010-06-29 15:49:53 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2010-06-29 15:49:53 +0000 |
commit | 303d2b5bbdde6b19e2f5e03f096fc12920d87827 (patch) | |
tree | 69771c00dddb35836fc198afc5d3fc46da6f9c16 | |
parent | c9032a0974ac98a9d455f0e6d15dcd4bd6863507 (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/Makefile | 4 | ||||
-rw-r--r-- | usr.bin/mandoc/main.c | 4 | ||||
-rw-r--r-- | usr.bin/mandoc/main.h | 4 | ||||
-rw-r--r-- | usr.bin/mandoc/mandoc.1 | 248 | ||||
-rw-r--r-- | usr.bin/mandoc/term_ps.c | 26 |
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); |