diff options
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/Makefile | 7 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/bullet.in | 65 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/bullet.out_ascii | 67 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/dash.in | 65 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/dash.out_ascii | 67 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/enum.in | 61 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/enum.out_ascii | 64 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/item.in | 23 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/item.out_ascii | 16 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/ohang.in | 23 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/mdoc/Bl/ohang.out_ascii | 22 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc.h | 3 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_man.c | 131 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_term.c | 20 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_validate.c | 22 |
15 files changed, 630 insertions, 26 deletions
diff --git a/regress/usr.bin/mandoc/mdoc/Bl/Makefile b/regress/usr.bin/mandoc/mdoc/Bl/Makefile index 1c2fb8d01e7..176e65041fd 100644 --- a/regress/usr.bin/mandoc/mdoc/Bl/Makefile +++ b/regress/usr.bin/mandoc/mdoc/Bl/Makefile @@ -1,6 +1,7 @@ -# $OpenBSD: Makefile,v 1.8 2011/11/17 16:28:45 schwarze Exp $ +# $OpenBSD: Makefile,v 1.9 2012/07/10 14:35:57 schwarze Exp $ -REGRESS_TARGETS=tag inset hang diag column extend nested +REGRESS_TARGETS = item inset diag ohang bullet dash enum hang tag +REGRESS_TARGETS += column extend nested # mandoc still contains a compatibility hack with groff-1.15 # regarding hang list indentation. @@ -12,6 +13,6 @@ REGRESS_TARGETS+=multitype multitag empty unclosed SKIP_GROFF ?= hang empty -SKIP_TMAN ?= tag inset hang diag column extend nested multitype multitag empty +SKIP_TMAN ?= tag hang column extend nested multitype multitag empty .include <bsd.regress.mk> diff --git a/regress/usr.bin/mandoc/mdoc/Bl/bullet.in b/regress/usr.bin/mandoc/mdoc/Bl/bullet.in new file mode 100644 index 00000000000..6893426ff6e --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/bullet.in @@ -0,0 +1,65 @@ +.Dd June 17, 2009 +.Dt BL-BULLET 1 +.Os OpenBSD +.Sh NAME +.Nm Bl-bullet +.Nd bullet lists +.Sh DESCRIPTION +.Bl -bullet -width 0n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -bullet -width 1n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -bullet -width 2n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -bullet -width 3n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -bullet -width 4n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -bullet -width 5n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -bullet -width 6n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -bullet -width 7n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -bullet +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El diff --git a/regress/usr.bin/mandoc/mdoc/Bl/bullet.out_ascii b/regress/usr.bin/mandoc/mdoc/Bl/bullet.out_ascii new file mode 100644 index 00000000000..37e77f59c24 --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/bullet.out_ascii @@ -0,0 +1,67 @@ +BL-BULLET(1) OpenBSD Reference Manual BL-BULLET(1) + +NNAAMMEE + BBll--bbuulllleett - bullet lists + +DDEESSCCRRIIPPTTIIOONN + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + oo x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + +OpenBSD June 17, 2009 OpenBSD diff --git a/regress/usr.bin/mandoc/mdoc/Bl/dash.in b/regress/usr.bin/mandoc/mdoc/Bl/dash.in new file mode 100644 index 00000000000..ea35e3f292b --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/dash.in @@ -0,0 +1,65 @@ +.Dd June 17, 2009 +.Dt BL-DASH 1 +.Os OpenBSD +.Sh NAME +.Nm Bl-dash +.Nd dash and hyphen lists +.Sh DESCRIPTION +.Bl -dash -width 0n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -hyphen -width 1n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -dash -width 2n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -dash -width 3n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -hyphen -width 4n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -hyphen -width 5n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -dash -width 6n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -dash -width 7n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -dash +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El diff --git a/regress/usr.bin/mandoc/mdoc/Bl/dash.out_ascii b/regress/usr.bin/mandoc/mdoc/Bl/dash.out_ascii new file mode 100644 index 00000000000..e1ef8e2f7f8 --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/dash.out_ascii @@ -0,0 +1,67 @@ +BL-DASH(1) OpenBSD Reference Manual BL-DASH(1) + +NNAAMMEE + BBll--ddaasshh - dash and hyphen lists + +DDEESSCCRRIIPPTTIIOONN + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + -- x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + +OpenBSD June 17, 2009 OpenBSD diff --git a/regress/usr.bin/mandoc/mdoc/Bl/enum.in b/regress/usr.bin/mandoc/mdoc/Bl/enum.in new file mode 100644 index 00000000000..0f87afa2ce5 --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/enum.in @@ -0,0 +1,61 @@ +.Dd June 17, 2009 +.Dt BL-ENUM 1 +.Os OpenBSD +.Sh NAME +.Nm Bl-enum +.Nd enumerated lists +.Sh DESCRIPTION +.Bl -enum -width 1n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -enum -width 2n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -enum -width 3n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -enum -width 4n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -enum -width 5n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -enum -width 6n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -enum -width 7n +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El +.Bl -enum +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.It +x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +.El diff --git a/regress/usr.bin/mandoc/mdoc/Bl/enum.out_ascii b/regress/usr.bin/mandoc/mdoc/Bl/enum.out_ascii new file mode 100644 index 00000000000..1635beaebcf --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/enum.out_ascii @@ -0,0 +1,64 @@ +BL-ENUM(1) OpenBSD Reference Manual BL-ENUM(1) + +NNAAMMEE + BBll--eennuumm - enumerated lists + +DDEESSCCRRIIPPTTIIOONN + 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x + + 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x x + + 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x x + + 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x x x + + 1. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 2. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 3. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 4. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 5. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 6. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 7. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 8. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 9. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 10. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 11. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + + 12. x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x + x x x x x x + +OpenBSD June 17, 2009 OpenBSD diff --git a/regress/usr.bin/mandoc/mdoc/Bl/item.in b/regress/usr.bin/mandoc/mdoc/Bl/item.in new file mode 100644 index 00000000000..672e9dc794f --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/item.in @@ -0,0 +1,23 @@ +.Dd July 10, 2012 +.Dt BL-ITEM 1 +.Os OpenBSD +.Sh NAME +.Nm Bl-item +.Nd itemized lists +.Sh DESCRIPTION +.Bl -item +.It +first line +.It ignore +second line +.It +third line +.El +.Bl -item -compact +.It +first line +.It ignore +second line +.It +third line +.El diff --git a/regress/usr.bin/mandoc/mdoc/Bl/item.out_ascii b/regress/usr.bin/mandoc/mdoc/Bl/item.out_ascii new file mode 100644 index 00000000000..3ad42d9a011 --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/item.out_ascii @@ -0,0 +1,16 @@ +BL-ITEM(1) OpenBSD Reference Manual BL-ITEM(1) + +NNAAMMEE + BBll--iitteemm - itemized lists + +DDEESSCCRRIIPPTTIIOONN + first line + + second line + + third line + first line + second line + third line + +OpenBSD July 10, 2012 OpenBSD diff --git a/regress/usr.bin/mandoc/mdoc/Bl/ohang.in b/regress/usr.bin/mandoc/mdoc/Bl/ohang.in new file mode 100644 index 00000000000..af4bdf6d01a --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/ohang.in @@ -0,0 +1,23 @@ +.Dd July 10, 2012 +.Dt BL-OHANG 1 +.Os OpenBSD +.Sh NAME +.Nm Bl-ohang +.Nd over-hanging lists +.Sh DESCRIPTION +.Bl -ohang +.It first tag +first line +.It second tag +second line +.It third tag +third line +.El +.Bl -ohang -compact +.It first tag +first line +.It second tag +second line +.It third tag +third line +.El diff --git a/regress/usr.bin/mandoc/mdoc/Bl/ohang.out_ascii b/regress/usr.bin/mandoc/mdoc/Bl/ohang.out_ascii new file mode 100644 index 00000000000..99e73d7d6ba --- /dev/null +++ b/regress/usr.bin/mandoc/mdoc/Bl/ohang.out_ascii @@ -0,0 +1,22 @@ +BL-OHANG(1) OpenBSD Reference Manual BL-OHANG(1) + +NNAAMMEE + BBll--oohhaanngg - over-hanging lists + +DDEESSCCRRIIPPTTIIOONN + first tag + first line + + second tag + second line + + third tag + third line + first tag + first line + second tag + second line + third tag + third line + +OpenBSD July 10, 2012 OpenBSD diff --git a/usr.bin/mandoc/mdoc.h b/usr.bin/mandoc/mdoc.h index ba074cbfc9f..109e7f4b6bc 100644 --- a/usr.bin/mandoc/mdoc.h +++ b/usr.bin/mandoc/mdoc.h @@ -1,4 +1,4 @@ -/* $Id: mdoc.h,v 1.46 2011/04/24 16:22:02 schwarze Exp $ */ +/* $Id: mdoc.h,v 1.47 2012/07/10 14:35:57 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * @@ -311,6 +311,7 @@ struct mdoc_bl { int comp; /* -compact */ size_t ncols; /* -column arg count */ const char **cols; /* -column val ptr */ + int count; /* -enum counter */ }; struct mdoc_bf { diff --git a/usr.bin/mandoc/mdoc_man.c b/usr.bin/mandoc/mdoc_man.c index 005e7f632e4..d38ada18b3c 100644 --- a/usr.bin/mandoc/mdoc_man.c +++ b/usr.bin/mandoc/mdoc_man.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_man.c,v 1.27 2012/07/09 23:52:47 schwarze Exp $ */ +/* $Id: mdoc_man.c,v 1.28 2012/07/10 14:35:57 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Ingo Schwarze <schwarze@openbsd.org> * @@ -42,6 +42,7 @@ static void font_pop(void); static void post_bd(DECL_ARGS); static void post_bf(DECL_ARGS); static void post_bk(DECL_ARGS); +static void post_bl(DECL_ARGS); static void post_dl(DECL_ARGS); static void post_enc(DECL_ARGS); static void post_eo(DECL_ARGS); @@ -52,6 +53,7 @@ static void post_fn(DECL_ARGS); static void post_fo(DECL_ARGS); static void post_font(DECL_ARGS); static void post_in(DECL_ARGS); +static void post_it(DECL_ARGS); static void post_lb(DECL_ARGS); static void post_nm(DECL_ARGS); static void post_percent(DECL_ARGS); @@ -64,6 +66,7 @@ static int pre_ap(DECL_ARGS); static int pre_bd(DECL_ARGS); static int pre_bf(DECL_ARGS); static int pre_bk(DECL_ARGS); +static int pre_bl(DECL_ARGS); static int pre_br(DECL_ARGS); static int pre_bx(DECL_ARGS); static int pre_dl(DECL_ARGS); @@ -93,6 +96,8 @@ static int pre_ux(DECL_ARGS); static int pre_xr(DECL_ARGS); static void print_word(const char *); static void print_offs(const char *); +static void print_width(const char *); +static void print_count(int *); static void print_node(DECL_ARGS); static const struct manact manacts[MDOC_MAX + 1] = { @@ -107,9 +112,9 @@ static const struct manact manacts[MDOC_MAX + 1] = { { cond_body, pre_dl, post_dl, NULL, NULL }, /* Dl */ { cond_body, pre_bd, post_bd, NULL, NULL }, /* Bd */ { NULL, NULL, NULL, NULL, NULL }, /* Ed */ - { NULL, NULL, NULL, NULL, NULL }, /* Bl */ + { cond_body, pre_bl, post_bl, NULL, NULL }, /* Bl */ { NULL, NULL, NULL, NULL, NULL }, /* El */ - { NULL, pre_it, NULL, NULL, NULL }, /* _It */ + { NULL, pre_it, post_it, NULL, NULL }, /* It */ { NULL, pre_em, post_font, NULL, NULL }, /* Ad */ { NULL, pre_an, NULL, NULL, NULL }, /* An */ { NULL, pre_em, post_font, NULL, NULL }, /* Ar */ @@ -351,6 +356,36 @@ print_offs(const char *v) } void +print_width(const char *v) +{ + char buf[24]; + struct roffsu su; + size_t sz; + + if (a2roffsu(v, &su, SCALE_MAX)) { + if (SCALE_EN == su.unit) + sz = su.scale; + else { + print_word(v); + return; + } + } else + sz = strlen(v); + + snprintf(buf, sizeof(buf), "%ldn", sz + 2); + print_word(buf); +} + +void +print_count(int *count) +{ + char buf[12]; + + snprintf(buf, sizeof(buf), "%d.", ++*count); + print_word(buf); +} + +void man_man(void *arg, const struct man *man) { @@ -701,6 +736,23 @@ post_bk(DECL_ARGS) } static int +pre_bl(DECL_ARGS) +{ + + if (LIST_enum == n->norm->Bl.type) + n->norm->Bl.count = 0; + return(1); +} + +static void +post_bl(DECL_ARGS) +{ + + if (LIST_enum == n->norm->Bl.type) + n->norm->Bl.count = 0; +} + +static int pre_br(DECL_ARGS) { @@ -940,27 +992,88 @@ pre_it(DECL_ARGS) { const struct mdoc_node *bln; - if (MDOC_HEAD == n->type) { + switch (n->type) { + case (MDOC_HEAD): outflags |= MMAN_nl; - print_word(".TP"); - bln = n->parent->parent->prev; + bln = n->parent->parent; switch (bln->norm->Bl.type) { + case (LIST_item): + if (bln->norm->Bl.comp) + outflags |= MMAN_br; + else + outflags |= MMAN_sp; + return(0); + case (LIST_inset): + /* FALLTHROUGH */ + case (LIST_diag): + /* FALLTHROUGH */ + case (LIST_ohang): + if (bln->norm->Bl.comp) + outflags |= MMAN_br; + else + outflags |= MMAN_sp; + if (bln->norm->Bl.type == LIST_diag) + print_word(".B \""); + else + print_word(".R \""); + outflags &= ~MMAN_spc; + return(1); case (LIST_bullet): - print_word("4n"); + /* FALLTHROUGH */ + case (LIST_dash): + /* FALLTHROUGH */ + case (LIST_hyphen): + print_word(".TP"); + print_width(bln->norm->Bl.width); + outflags |= MMAN_nl; + font_push('B'); + if (LIST_bullet == bln->norm->Bl.type) + print_word("o"); + else + print_word("-"); + font_pop(); + break; + case (LIST_enum): + print_word(".TP"); + print_width(bln->norm->Bl.width); + outflags |= MMAN_nl; + print_count(&bln->norm->Bl.count); outflags |= MMAN_nl; - print_word("\\fBo\\fP"); break; default: if (bln->norm->Bl.width) - print_word(bln->norm->Bl.width); + print_width(bln->norm->Bl.width); break; } outflags |= MMAN_nl; + default: + break; } return(1); } static void +post_it(DECL_ARGS) +{ + const struct mdoc_node *bln; + + if (MDOC_HEAD == n->type) { + bln = n->parent->parent; + switch (bln->norm->Bl.type) { + case (LIST_diag): + outflags &= ~MMAN_spc; + print_word("\\ "); + break; + case (LIST_ohang): + outflags |= MMAN_br; + break; + default: + break; + } + } +} + +static void post_lb(DECL_ARGS) { diff --git a/usr.bin/mandoc/mdoc_term.c b/usr.bin/mandoc/mdoc_term.c index a41ce181264..ca3cfe56912 100644 --- a/usr.bin/mandoc/mdoc_term.c +++ b/usr.bin/mandoc/mdoc_term.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.143 2012/07/09 23:52:47 schwarze Exp $ */ +/* $Id: mdoc_term.c,v 1.144 2012/07/10 14:35:57 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2012 Ingo Schwarze <schwarze@openbsd.org> @@ -723,12 +723,10 @@ termp_it_pre(DECL_ARGS) case (LIST_dash): /* FALLTHROUGH */ case (LIST_hyphen): - if (width < term_len(p, 4)) - width = term_len(p, 4); - break; + /* FALLTHROUGH */ case (LIST_enum): - if (width < term_len(p, 5)) - width = term_len(p, 5); + if (width < term_len(p, 2)) + width = term_len(p, 2); break; case (LIST_hang): if (0 == width) @@ -783,12 +781,18 @@ termp_it_pre(DECL_ARGS) */ switch (type) { + case (LIST_enum): + /* + * Weird special case. + * Very narrow enum lists actually hang. + */ + if (width == term_len(p, 2)) + p->flags |= TERMP_HANG; + /* FALLTHROUGH */ case (LIST_bullet): /* FALLTHROUGH */ case (LIST_dash): /* FALLTHROUGH */ - case (LIST_enum): - /* FALLTHROUGH */ case (LIST_hyphen): if (MDOC_HEAD == n->type) p->flags |= TERMP_NOBREAK; diff --git a/usr.bin/mandoc/mdoc_validate.c b/usr.bin/mandoc/mdoc_validate.c index eabced7ac31..a068db9ae7a 100644 --- a/usr.bin/mandoc/mdoc_validate.c +++ b/usr.bin/mandoc/mdoc_validate.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.102 2012/05/24 23:33:23 schwarze Exp $ */ +/* $Id: mdoc_validate.c,v 1.103 2012/07/10 14:35:57 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2011, 2012 Ingo Schwarze <schwarze@openbsd.org> @@ -729,14 +729,14 @@ pre_bl(PRE_ARGS) /* * Validate the width field. Some list types don't need width * types and should be warned about them. Others should have it - * and must also be warned. + * and must also be warned. Yet others have a default and need + * no warning. */ switch (n->norm->Bl.type) { case (LIST_tag): - if (n->norm->Bl.width) - break; - mdoc_nmsg(mdoc, n, MANDOCERR_NOWIDTHARG); + if (NULL == n->norm->Bl.width) + mdoc_nmsg(mdoc, n, MANDOCERR_NOWIDTHARG); break; case (LIST_column): /* FALLTHROUGH */ @@ -750,6 +750,18 @@ pre_bl(PRE_ARGS) if (n->norm->Bl.width) mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV); break; + case (LIST_bullet): + /* FALLTHROUGH */ + case (LIST_dash): + /* FALLTHROUGH */ + case (LIST_hyphen): + if (NULL == n->norm->Bl.width) + n->norm->Bl.width = "2n"; + break; + case (LIST_enum): + if (NULL == n->norm->Bl.width) + n->norm->Bl.width = "3n"; + break; default: break; } |