Delete .Pp right before the first .Sh and right before any .Ss,
authorschwarze <schwarze@openbsd.org>
Fri, 28 Apr 2017 16:23:30 +0000 (16:23 +0000)
committerschwarze <schwarze@openbsd.org>
Fri, 28 Apr 2017 16:23:30 +0000 (16:23 +0000)
and warn about it; mdoclint(1) does so, and it makes sense.

regress/usr.bin/mandoc/mdoc/Sh/Makefile
regress/usr.bin/mandoc/mdoc/Sh/first.out_ascii [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Sh/parbefore.in [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Sh/parbefore.out_ascii [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Sh/parbefore.out_lint [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Sh/parbefore.out_markdown [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Sh/parborder.in [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Sh/parborder.out_ascii [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Sh/parborder.out_lint [new file with mode: 0644]
regress/usr.bin/mandoc/mdoc/Sh/parborder.out_markdown [new file with mode: 0644]
usr.bin/mandoc/mdoc_validate.c

index a41b5e3..c6849d8 100644 (file)
@@ -1,11 +1,16 @@
-# $OpenBSD: Makefile,v 1.9 2017/03/08 22:53:35 schwarze Exp $
+# $OpenBSD: Makefile,v 1.10 2017/04/28 16:23:30 schwarze Exp $
 
 REGRESS_TARGETS         = badNAME before empty emptyNAME first nohead order
-REGRESS_TARGETS        += orderNAME punctNAME subbefore
+REGRESS_TARGETS        += orderNAME parbefore parborder punctNAME subbefore
 LINT_TARGETS    = badNAME before empty emptyNAME first nohead order
-LINT_TARGETS   += orderNAME punctNAME subbefore
+LINT_TARGETS   += orderNAME parbefore parborder punctNAME subbefore
 
-SKIP_GROFF     = subbefore first empty
-SKIP_ASCII     = first
+# groff-1.22.3 defects:
+# - .Pp before .Sh NAME causes a blank line before the header line
+# - .Ss before .Sh NAME puts the subsection header before the header line
+# - missing .Sh NAME causes loss of the header and footer lines
+# - .Sh DESCRIPTION Xo aborts the parser
+
+SKIP_GROFF     = parbefore subbefore first empty
 
 .include <bsd.regress.mk>
diff --git a/regress/usr.bin/mandoc/mdoc/Sh/first.out_ascii b/regress/usr.bin/mandoc/mdoc/Sh/first.out_ascii
new file mode 100644 (file)
index 0000000..7d2234e
--- /dev/null
@@ -0,0 +1,6 @@
+SH-FIRST(1)                 General Commands Manual                SH-FIRST(1)
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+     The first section is not a NAME section.
+
+OpenBSD                          July 1, 2014                          OpenBSD
diff --git a/regress/usr.bin/mandoc/mdoc/Sh/parbefore.in b/regress/usr.bin/mandoc/mdoc/Sh/parbefore.in
new file mode 100644 (file)
index 0000000..880f3c4
--- /dev/null
@@ -0,0 +1,9 @@
+.Dd April 28, 2017
+.Dt SH-PARBEFORE 1
+.Os OpenBSD
+.Pp
+.Sh NAME
+.Nm Sh-parbefore
+.Nd paragraph macro before the first section header
+.Sh DESCRIPTION
+some text
diff --git a/regress/usr.bin/mandoc/mdoc/Sh/parbefore.out_ascii b/regress/usr.bin/mandoc/mdoc/Sh/parbefore.out_ascii
new file mode 100644 (file)
index 0000000..e92ae81
--- /dev/null
@@ -0,0 +1,9 @@
+SH-PARBEFORE(1)             General Commands Manual            SH-PARBEFORE(1)
+
+N\bNA\bAM\bME\bE
+     S\bSh\bh-\b-p\bpa\bar\brb\bbe\bef\bfo\bor\bre\be - paragraph macro before the first section header
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+     some text
+
+OpenBSD                         April 28, 2017                         OpenBSD
diff --git a/regress/usr.bin/mandoc/mdoc/Sh/parbefore.out_lint b/regress/usr.bin/mandoc/mdoc/Sh/parbefore.out_lint
new file mode 100644 (file)
index 0000000..fcb6194
--- /dev/null
@@ -0,0 +1 @@
+mandoc: parbefore.in:4:2: WARNING: skipping paragraph macro: Pp before Sh
diff --git a/regress/usr.bin/mandoc/mdoc/Sh/parbefore.out_markdown b/regress/usr.bin/mandoc/mdoc/Sh/parbefore.out_markdown
new file mode 100644 (file)
index 0000000..50f7789
--- /dev/null
@@ -0,0 +1,11 @@
+SH-PARBEFORE(1) - General Commands Manual
+
+# NAME
+
+**Sh-parbefore** - paragraph macro before the first section header
+
+# DESCRIPTION
+
+some text
+
+OpenBSD - April 28, 2017
diff --git a/regress/usr.bin/mandoc/mdoc/Sh/parborder.in b/regress/usr.bin/mandoc/mdoc/Sh/parborder.in
new file mode 100644 (file)
index 0000000..a909a0c
--- /dev/null
@@ -0,0 +1,21 @@
+.Dd April 28, 2017
+.Dt SH-PARBORDER 1
+.Os OpenBSD
+.Sh NAME
+.Nm Sh-parborder
+.Nd paragraph macros at the beginning and end of sections
+.Sh DESCRIPTION
+.Pp
+descriptive text
+.Pp
+.Sh EXAMPLES
+.Pp
+example text
+.Pp
+.Ss Subsection
+.Pp
+subsection text
+.Pp
+.Ss Another subsection
+more subsection text
+.Pp
diff --git a/regress/usr.bin/mandoc/mdoc/Sh/parborder.out_ascii b/regress/usr.bin/mandoc/mdoc/Sh/parborder.out_ascii
new file mode 100644 (file)
index 0000000..9c8d04b
--- /dev/null
@@ -0,0 +1,18 @@
+SH-PARBORDER(1)             General Commands Manual            SH-PARBORDER(1)
+
+N\bNA\bAM\bME\bE
+     S\bSh\bh-\b-p\bpa\bar\brb\bbo\bor\brd\bde\ber\br - paragraph macros at the beginning and end of sections
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+     descriptive text
+
+E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
+     example text
+
+   S\bSu\bub\bbs\bse\bec\bct\bti\bio\bon\bn
+     subsection text
+
+   A\bAn\bno\bot\bth\bhe\ber\br s\bsu\bub\bbs\bse\bec\bct\bti\bio\bon\bn
+     more subsection text
+
+OpenBSD                         April 28, 2017                         OpenBSD
diff --git a/regress/usr.bin/mandoc/mdoc/Sh/parborder.out_lint b/regress/usr.bin/mandoc/mdoc/Sh/parborder.out_lint
new file mode 100644 (file)
index 0000000..cd6c5c2
--- /dev/null
@@ -0,0 +1,7 @@
+mandoc: parborder.in:8:2: WARNING: skipping paragraph macro: Pp after Sh
+mandoc: parborder.in:10:2: WARNING: skipping paragraph macro: Pp at the end of Sh
+mandoc: parborder.in:12:2: WARNING: skipping paragraph macro: Pp after Sh
+mandoc: parborder.in:16:2: WARNING: skipping paragraph macro: Pp after Ss
+mandoc: parborder.in:18:2: WARNING: skipping paragraph macro: Pp at the end of Ss
+mandoc: parborder.in:14:2: WARNING: skipping paragraph macro: Pp before Ss
+mandoc: parborder.in:21:2: WARNING: skipping paragraph macro: Pp at the end of Ss
diff --git a/regress/usr.bin/mandoc/mdoc/Sh/parborder.out_markdown b/regress/usr.bin/mandoc/mdoc/Sh/parborder.out_markdown
new file mode 100644 (file)
index 0000000..8595760
--- /dev/null
@@ -0,0 +1,23 @@
+SH-PARBORDER(1) - General Commands Manual
+
+# NAME
+
+**Sh-parborder** - paragraph macros at the beginning and end of sections
+
+# DESCRIPTION
+
+descriptive text
+
+# EXAMPLES
+
+example text
+
+## Subsection
+
+subsection text
+
+## Another subsection
+
+more subsection text
+
+OpenBSD - April 28, 2017
index 3021db6..c699492 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mdoc_validate.c,v 1.236 2017/04/24 23:06:09 schwarze Exp $ */
+/*     $OpenBSD: mdoc_validate.c,v 1.237 2017/04/28 16:23:30 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -2003,6 +2003,9 @@ post_ignpar(POST_ARGS)
        struct roff_node *np;
 
        switch (mdoc->last->type) {
+       case ROFFT_BLOCK:
+               post_prevpar(mdoc);
+               return;
        case ROFFT_HEAD:
                post_hyph(mdoc);
                return;