diff options
author | 2012-06-02 23:18:30 +0000 | |
---|---|---|
committer | 2012-06-02 23:18:30 +0000 | |
commit | 93aaf9bac2f33c2a89753b527f3d9a331ffa0ebf (patch) | |
tree | 68379c23c6bd05cf8c65b3420263f27abda4e3da | |
parent | in imsg_read() avoid calling recvmsg() if we detect that we will be short (diff) | |
download | wireguard-openbsd-93aaf9bac2f33c2a89753b527f3d9a331ffa0ebf.tar.xz wireguard-openbsd-93aaf9bac2f33c2a89753b527f3d9a331ffa0ebf.zip |
In groff, trying to redefine standard man(7) macros before .TH has no effect;
after .TH, it works. Trying to redefine standard mdoc(7) macros before .Dd
works when calling groff with the -mdoc command line option, but does not
when calling groff with -mandoc; after .Dd, it always works.
Arguably, one might call that buggy behaviour in groff, but it is very
unlikely that anybody will change groff in this respect (certainly, i'm
not volunteering). So let's be bug-compatible.
This fixes the vertical spacing in sox(1).
-rw-r--r-- | regress/usr.bin/mandoc/roff/Makefile | 4 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/roff/de/Dd.in | 11 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/roff/de/Dd.out_ascii | 9 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/roff/de/Dd.out_ascii_opt | 9 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/roff/de/Makefile | 41 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/roff/de/TH.in | 8 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/roff/de/TH.out_ascii | 13 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/roff/de/TH.out_ascii_opt | 13 | ||||
-rw-r--r-- | usr.bin/mandoc/libmandoc.h | 4 | ||||
-rw-r--r-- | usr.bin/mandoc/read.c | 4 | ||||
-rw-r--r-- | usr.bin/mandoc/roff.c | 69 |
11 files changed, 177 insertions, 8 deletions
diff --git a/regress/usr.bin/mandoc/roff/Makefile b/regress/usr.bin/mandoc/roff/Makefile index 9bd19806a52..0bdfeb1d61e 100644 --- a/regress/usr.bin/mandoc/roff/Makefile +++ b/regress/usr.bin/mandoc/roff/Makefile @@ -1,6 +1,6 @@ -# $OpenBSD: Makefile,v 1.9 2012/05/28 13:00:51 schwarze Exp $ +# $OpenBSD: Makefile,v 1.10 2012/06/02 23:18:31 schwarze Exp $ -SUBDIR+= args esc cond string br na ps rm sp +SUBDIR+= args esc cond string br de na ps rm sp ascii groff groff-clean obj-clean tman: _SUBDIRUSE diff --git a/regress/usr.bin/mandoc/roff/de/Dd.in b/regress/usr.bin/mandoc/roff/de/Dd.in new file mode 100644 index 00000000000..4dcbdd2bfcf --- /dev/null +++ b/regress/usr.bin/mandoc/roff/de/Dd.in @@ -0,0 +1,11 @@ +.de At +BSD +.. +.Dd June 3, 2012 +.Dt DE-DD 1 +.Os OpenBSD +.Sh NAME +.Nm de-Dd +.Nd interaction of the Dd macro with de requests +.Sh DESCRIPTION +.At diff --git a/regress/usr.bin/mandoc/roff/de/Dd.out_ascii b/regress/usr.bin/mandoc/roff/de/Dd.out_ascii new file mode 100644 index 00000000000..b0dedeaf09d --- /dev/null +++ b/regress/usr.bin/mandoc/roff/de/Dd.out_ascii @@ -0,0 +1,9 @@ +DE-DD(1) OpenBSD Reference Manual DE-DD(1) + +NNAAMMEE + ddee--DDdd - interaction of the Dd macro with de requests + +DDEESSCCRRIIPPTTIIOONN + AT&T UNIX + +OpenBSD June 3, 2012 OpenBSD diff --git a/regress/usr.bin/mandoc/roff/de/Dd.out_ascii_opt b/regress/usr.bin/mandoc/roff/de/Dd.out_ascii_opt new file mode 100644 index 00000000000..7d388cca414 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/de/Dd.out_ascii_opt @@ -0,0 +1,9 @@ +DE-DD(1) OpenBSD Reference Manual DE-DD(1) + +NNAAMMEE + ddee--DDdd - interaction of the Dd macro with de requests + +DDEESSCCRRIIPPTTIIOONN + BSD + +OpenBSD June 3, 2012 OpenBSD diff --git a/regress/usr.bin/mandoc/roff/de/Makefile b/regress/usr.bin/mandoc/roff/de/Makefile new file mode 100644 index 00000000000..2f3262bce36 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/de/Makefile @@ -0,0 +1,41 @@ +# $OpenBSD: Makefile,v 1.1 2012/06/02 23:18:31 schwarze Exp $ + +REGRESS_TARGETS=TH Dd + +.include <bsd.regress.mk> + + +# --- additions to public targets --- + +all ascii: ascii-diff-opt + +ascii-clean: ascii-clean-opt + +groff: TH.out_ascii_opt Dd.out_ascii_opt + +groff-clean: groff-clean-opt + + +# --- local rules --- + +ascii-diff-opt: TH.mandoc_ascii_opt Dd.mandoc_ascii_opt + ${DIFF} ${.CURDIR}/TH.out_ascii_opt TH.mandoc_ascii_opt + ${DIFF} ${.CURDIR}/Dd.out_ascii_opt Dd.mandoc_ascii_opt + +TH.mandoc_ascii_opt: TH.in + ${MANDOC} -man ${.ALLSRC} > ${.TARGET} + +Dd.mandoc_ascii_opt: Dd.in + ${MANDOC} -mdoc ${.ALLSRC} > ${.TARGET} + +ascii-clean-opt: + rm -f TH.mandoc_ascii_opt Dd.mandoc_ascii_opt + +TH.out_ascii_opt: TH.in + /usr/local/bin/nroff -c -man -Tascii ${.ALLSRC} > ${.TARGET} + +Dd.out_ascii_opt: Dd.in + /usr/local/bin/nroff -c -mdoc -Tascii ${.ALLSRC} > ${.TARGET} + +groff-clean-opt: + rm -f TH.out_ascii_opt Dd.out_ascii_opt diff --git a/regress/usr.bin/mandoc/roff/de/TH.in b/regress/usr.bin/mandoc/roff/de/TH.in new file mode 100644 index 00000000000..50b6401f922 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/de/TH.in @@ -0,0 +1,8 @@ +.de BI +.IB \\$1 \\$2 \\$3 +.. +.TH DE-TH 1 "June 3, 2012" OpenBSD +.SH NAME +de-TH - interaction of the TH macro with de requests +.SH DESCRIPTION +.BI bold italic bold diff --git a/regress/usr.bin/mandoc/roff/de/TH.out_ascii b/regress/usr.bin/mandoc/roff/de/TH.out_ascii new file mode 100644 index 00000000000..1623c53b741 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/de/TH.out_ascii @@ -0,0 +1,13 @@ +DE-TH(1) OpenBSD Reference Manual DE-TH(1) + + + +NNAAMMEE + de-TH - interaction of the TH macro with de requests + +DDEESSCCRRIIPPTTIIOONN + bboolldd_i_t_a_l_i_cbboolldd + + + +OpenBSD June 3, 2012 DE-TH(1) diff --git a/regress/usr.bin/mandoc/roff/de/TH.out_ascii_opt b/regress/usr.bin/mandoc/roff/de/TH.out_ascii_opt new file mode 100644 index 00000000000..1623c53b741 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/de/TH.out_ascii_opt @@ -0,0 +1,13 @@ +DE-TH(1) OpenBSD Reference Manual DE-TH(1) + + + +NNAAMMEE + de-TH - interaction of the TH macro with de requests + +DDEESSCCRRIIPPTTIIOONN + bboolldd_i_t_a_l_i_cbboolldd + + + +OpenBSD June 3, 2012 DE-TH(1) diff --git a/usr.bin/mandoc/libmandoc.h b/usr.bin/mandoc/libmandoc.h index a23533f0239..e438e1fe75d 100644 --- a/usr.bin/mandoc/libmandoc.h +++ b/usr.bin/mandoc/libmandoc.h @@ -1,4 +1,4 @@ -/* $Id: libmandoc.h,v 1.17 2012/05/24 23:33:23 schwarze Exp $ */ +/* $Id: libmandoc.h,v 1.18 2012/06/02 23:18:30 schwarze Exp $ */ /* * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * @@ -68,7 +68,7 @@ int man_addspan(struct man *, const struct tbl_span *); int man_addeqn(struct man *, const struct eqn *); void roff_free(struct roff *); -struct roff *roff_alloc(struct mparse *); +struct roff *roff_alloc(enum mparset, struct mparse *); void roff_reset(struct roff *); enum rofferr roff_parseln(struct roff *, int, char **, size_t *, int, int *); diff --git a/usr.bin/mandoc/read.c b/usr.bin/mandoc/read.c index ef726042c35..e70ff17655d 100644 --- a/usr.bin/mandoc/read.c +++ b/usr.bin/mandoc/read.c @@ -1,4 +1,4 @@ -/* $Id: read.c,v 1.7 2012/05/24 23:33:23 schwarze Exp $ */ +/* $Id: read.c,v 1.8 2012/06/02 23:18:30 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org> @@ -712,7 +712,7 @@ mparse_alloc(enum mparset inttype, enum mandoclevel wlevel, curp->inttype = inttype; curp->defos = defos; - curp->roff = roff_alloc(curp); + curp->roff = roff_alloc(inttype, curp); return(curp); } diff --git a/usr.bin/mandoc/roff.c b/usr.bin/mandoc/roff.c index 5dee1a8f32b..cc763da3bbd 100644 --- a/usr.bin/mandoc/roff.c +++ b/usr.bin/mandoc/roff.c @@ -1,4 +1,4 @@ -/* $Id: roff.c,v 1.46 2012/05/31 01:36:56 schwarze Exp $ */ +/* $Id: roff.c,v 1.47 2012/06/02 23:18:30 schwarze Exp $ */ /* * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2011, 2012 Ingo Schwarze <schwarze@openbsd.org> @@ -54,6 +54,8 @@ enum rofft { ROFF_so, ROFF_ta, ROFF_tr, + ROFF_Dd, + ROFF_TH, ROFF_TS, ROFF_TE, ROFF_T_, @@ -98,6 +100,7 @@ struct roffkv { }; struct roff { + enum mparset parsetype; /* requested parse type */ struct mparse *parse; /* parse point */ struct roffnode *last; /* leaf of stack */ enum roffrule rstack[RSTACK_MAX]; /* stack of !`ie' rules */ @@ -191,6 +194,8 @@ static void roff_setstrn(struct roffkv **, const char *, size_t, const char *, size_t, int); static enum rofferr roff_so(ROFF_ARGS); static enum rofferr roff_tr(ROFF_ARGS); +static enum rofferr roff_Dd(ROFF_ARGS); +static enum rofferr roff_TH(ROFF_ARGS); static enum rofferr roff_TE(ROFF_ARGS); static enum rofferr roff_TS(ROFF_ARGS); static enum rofferr roff_EQ(ROFF_ARGS); @@ -230,6 +235,8 @@ static struct roffmac roffs[ROFF_MAX] = { { "so", roff_so, NULL, NULL, 0, NULL }, { "ta", roff_line_ignore, NULL, NULL, 0, NULL }, { "tr", roff_tr, NULL, NULL, 0, NULL }, + { "Dd", roff_Dd, NULL, NULL, 0, NULL }, + { "TH", roff_TH, NULL, NULL, 0, NULL }, { "TS", roff_TS, NULL, NULL, 0, NULL }, { "TE", roff_TE, NULL, NULL, 0, NULL }, { "T&", roff_T_, NULL, NULL, 0, NULL }, @@ -240,6 +247,37 @@ static struct roffmac roffs[ROFF_MAX] = { { NULL, roff_userdef, NULL, NULL, 0, NULL }, }; +const char *const __mdoc_reserved[] = { + "Ac", "Ad", "An", "Ao", "Ap", "Aq", "Ar", "At", + "Bc", "Bd", "Bf", "Bk", "Bl", "Bo", "Bq", + "Brc", "Bro", "Brq", "Bsx", "Bt", "Bx", + "Cd", "Cm", "Db", "Dc", "Dd", "Dl", "Do", "Dq", + "Ds", "Dt", "Dv", "Dx", "D1", + "Ec", "Ed", "Ef", "Ek", "El", "Em", "em", + "En", "Eo", "Eq", "Er", "Es", "Ev", "Ex", + "Fa", "Fc", "Fd", "Fl", "Fn", "Fo", "Fr", "Ft", "Fx", + "Hf", "Ic", "In", "It", "Lb", "Li", "Lk", "Lp", "LP", + "Me", "Ms", "Mt", "Nd", "Nm", "No", "Ns", "Nx", + "Oc", "Oo", "Op", "Os", "Ot", "Ox", + "Pa", "Pc", "Pf", "Po", "Pp", "PP", "pp", "Pq", + "Qc", "Ql", "Qo", "Qq", "Or", "Rd", "Re", "Rs", "Rv", + "Sc", "Sf", "Sh", "SH", "Sm", "So", "Sq", + "Ss", "St", "Sx", "Sy", + "Ta", "Tn", "Ud", "Ux", "Va", "Vt", "Xc", "Xo", "Xr", + "%A", "%B", "%D", "%I", "%J", "%N", "%O", + "%P", "%Q", "%R", "%T", "%U", "%V", + NULL +}; + +const char *const __man_reserved[] = { + "AT", "B", "BI", "BR", "BT", "DE", "DS", "DT", + "EE", "EN", "EQ", "EX", "HF", "HP", "I", "IB", "IP", "IR", + "LP", "ME", "MT", "OP", "P", "PD", "PP", "PT", + "R", "RB", "RE", "RI", "RS", "SB", "SH", "SM", "SS", "SY", + "TE", "TH", "TP", "TQ", "TS", "T&", "UC", "UE", "UR", "YS", + NULL +}; + /* Array of injected predefined strings. */ #define PREDEFS_MAX 38 static const struct predef predefs[PREDEFS_MAX] = { @@ -405,12 +443,13 @@ roff_free(struct roff *r) struct roff * -roff_alloc(struct mparse *parse) +roff_alloc(enum mparset type, struct mparse *parse) { struct roff *r; int i; r = mandoc_calloc(1, sizeof(struct roff)); + r->parsetype = type; r->parse = parse; r->rstackpos = -1; @@ -1261,6 +1300,32 @@ roff_rm(ROFF_ARGS) /* ARGSUSED */ static enum rofferr +roff_Dd(ROFF_ARGS) +{ + const char *const *cp; + + if (MPARSE_MDOC != r->parsetype) + for (cp = __mdoc_reserved; *cp; cp++) + roff_setstr(r, *cp, NULL, 0); + + return(ROFF_CONT); +} + +/* ARGSUSED */ +static enum rofferr +roff_TH(ROFF_ARGS) +{ + const char *const *cp; + + if (MPARSE_MDOC != r->parsetype) + for (cp = __man_reserved; *cp; cp++) + roff_setstr(r, *cp, NULL, 0); + + return(ROFF_CONT); +} + +/* ARGSUSED */ +static enum rofferr roff_TE(ROFF_ARGS) { |