source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: ignore blank lines in man(7) next line scope; strange groff edge
@ 2017-06-03 15:55 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2017-06-03 15:55 UTC (permalink / raw)
  To: source

Log Message:
-----------
ignore blank lines in man(7) next line scope;
strange groff edge case behaviour found in multimedia/mjpegtools

Modified Files:
--------------
    mdocml:
        man.c
        mandoc.h
        read.c
    mdocml/regress/man/B:
        Makefile
    mdocml/regress/man/SH:
        Makefile
        noarg.in
        noarg.out_ascii
        noarg.out_lint
    mdocml/regress/man/SS:
        Makefile
        noarg.in
        noarg.out_ascii
        noarg.out_lint
    mdocml/regress/man/TP:
        Makefile
        broken.in
        broken.out_ascii
        broken.out_lint

Added Files:
-----------
    mdocml/regress/man/B:
        blank.in
        blank.out_ascii
        blank.out_lint

Revision Data
-------------
Index: Makefile
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/SH/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/SH/Makefile -Lregress/man/SH/Makefile -u -p -r1.1 -r1.2
--- regress/man/SH/Makefile
+++ regress/man/SH/Makefile
@@ -10,6 +10,7 @@ LINT_TARGETS	= broken broken_eline empty
 # - If .HP breaks .SH, a line is broken after the next input line.
 # - If .RS/RE/nf/fi breaks .SH, the next input line becomes bold.
 # - .UR does not break .SH.
+# - blank line in .SH next line scope causes blank lines and bogus indent
 
 SKIP_GROFF	= broken broken_eline noarg
 
Index: noarg.in
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/SH/noarg.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/SH/noarg.in -Lregress/man/SH/noarg.in -u -p -r1.1 -r1.2
--- regress/man/SH/noarg.in
+++ regress/man/SH/noarg.in
@@ -40,3 +40,7 @@ no-fill mode
 .SH
 .fi
 back in fill mode
+.SH
+
+SEE ALSO
+broken(1)
Index: noarg.out_lint
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/SH/noarg.out_lint,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/SH/noarg.out_lint -Lregress/man/SH/noarg.out_lint -u -p -r1.1 -r1.2
--- regress/man/SH/noarg.out_lint
+++ regress/man/SH/noarg.out_lint
@@ -11,3 +11,4 @@ mandoc: noarg.in:31:2: WARNING: line sco
 mandoc: noarg.in:34:2: WARNING: line scope broken: UE breaks SH
 mandoc: noarg.in:35:2: ERROR: skipping end of block that is not open: UE
 mandoc: noarg.in:41:2: WARNING: fill mode already enabled, skipping: fi
+mandoc: noarg.in:44:1: WARNING: skipping blank line in line scope
Index: noarg.out_ascii
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/SH/noarg.out_ascii,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/SH/noarg.out_ascii -Lregress/man/SH/noarg.out_ascii -u -p -r1.1 -r1.2
--- regress/man/SH/noarg.out_ascii
+++ regress/man/SH/noarg.out_ascii
@@ -27,6 +27,9 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
        back in fill mode
 
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       broken(1)
+
 
 
 OpenBSD                         March 20, 2015                     SH-NOARG(1)
Index: man.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/man.c,v
retrieving revision 1.173
retrieving revision 1.174
diff -Lman.c -Lman.c -u -p -r1.173 -r1.174
--- man.c
+++ man.c
@@ -89,14 +89,15 @@ man_ptext(struct roff_man *man, int line
 		/* Skip leading whitespace. */ ;
 
 	/*
-	 * Blank lines are ignored right after headings
-	 * but add a single vertical space elsewhere.
+	 * Blank lines are ignored in next line scope and right
+	 * after headings but add a single vertical space elsewhere.
 	 */
 
 	if (buf[i] == '\0') {
-		man_breakscope(man, ROFF_sp);
-		/* Allocate a blank entry. */
-		if (man->last->tok != MAN_SH &&
+		if (man->flags & (MAN_ELINE | MAN_BLINE))
+			mandoc_msg(MANDOCERR_BLK_BLANK, man->parse,
+			    line, 0, NULL);
+		else if (man->last->tok != MAN_SH &&
 		    man->last->tok != MAN_SS) {
 			roff_elem_alloc(man, line, offs, ROFF_sp);
 			man->next = ROFF_NEXT_SIBLING;
Index: read.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/read.c,v
retrieving revision 1.168
retrieving revision 1.169
diff -Lread.c -Lread.c -u -p -r1.168 -r1.169
--- read.c
+++ read.c
@@ -139,6 +139,7 @@ static	const char * const	mandocerrs[MAN
 	"fill mode already enabled, skipping",
 	"fill mode already disabled, skipping",
 	"line scope broken",
+	"skipping blank line in line scope",
 
 	/* related to missing macro arguments */
 	"skipping empty request",
Index: mandoc.h
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mandoc.h,v
retrieving revision 1.221
retrieving revision 1.222
diff -Lmandoc.h -Lmandoc.h -u -p -r1.221 -r1.222
--- mandoc.h
+++ mandoc.h
@@ -97,6 +97,7 @@ enum	mandocerr {
 	MANDOCERR_FI_SKIP, /* fill mode already enabled, skipping: fi */
 	MANDOCERR_NF_SKIP, /* fill mode already disabled, skipping: nf */
 	MANDOCERR_BLK_LINE, /* line scope broken: macro breaks macro */
+	MANDOCERR_BLK_BLANK, /* skipping blank line in line scope */
 
 	/* related to missing arguments */
 	MANDOCERR_REQ_EMPTY, /* skipping empty request: request */
--- /dev/null
+++ regress/man/B/blank.out_ascii
@@ -0,0 +1,13 @@
+B-BLANK(1)                  General Commands Manual                 B-BLANK(1)
+
+
+
+N\bNA\bAM\bME\bE
+       B-blank - blank line in font macro next line scope
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       A blank line in b\bbo\bol\bld\bd next line scope.
+
+
+
+OpenBSD                          June 3, 2017                       B-BLANK(1)
--- /dev/null
+++ regress/man/B/blank.out_lint
@@ -0,0 +1 @@
+mandoc: blank.in:7:1: WARNING: skipping blank line in line scope
--- /dev/null
+++ regress/man/B/blank.in
@@ -0,0 +1,9 @@
+.TH B-BLANK 1 "June 3, 2017" OpenBSD
+.SH NAME
+B-blank \- blank line in font macro next line scope
+.SH DESCRIPTION
+A blank line in
+.B
+
+bold
+next line scope.
Index: Makefile
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/B/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/B/Makefile -Lregress/man/B/Makefile -u -p -r1.1 -r1.2
--- regress/man/B/Makefile
+++ regress/man/B/Makefile
@@ -1,6 +1,10 @@
 # $OpenBSD: Makefile,v 1.1 2014/08/14 02:00:52 schwarze Exp $
 
-REGRESS_TARGETS	= args
-LINT_TARGETS	= args
+REGRESS_TARGETS	= args blank
+LINT_TARGETS	= args blank
+
+# groff-1.22.3 defect:
+# - A blank line in next line scope causes a blank line.
+SKIP_GROFF	= blank
 
 .include <bsd.regress.mk>
Index: noarg.in
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/SS/noarg.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/SS/noarg.in -Lregress/man/SS/noarg.in -u -p -r1.1 -r1.2
--- regress/man/SS/noarg.in
+++ regress/man/SS/noarg.in
@@ -40,3 +40,7 @@ no-fill mode
 .SS
 .fi
 back in fill mode
+.SS
+
+Subsection
+with a blank line
Index: noarg.out_ascii
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/SS/noarg.out_ascii,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/SS/noarg.out_ascii -Lregress/man/SS/noarg.out_ascii -u -p -r1.1 -r1.2
--- regress/man/SS/noarg.out_ascii
+++ regress/man/SS/noarg.out_ascii
@@ -27,6 +27,9 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
 
        back in fill mode
 
+   S\bSu\bub\bbs\bse\bec\bct\bti\bio\bon\bn
+       with a blank line
+
 
 
 OpenBSD                         March 20, 2015                     SS-NOARG(1)
Index: noarg.out_lint
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/SS/noarg.out_lint,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/SS/noarg.out_lint -Lregress/man/SS/noarg.out_lint -u -p -r1.1 -r1.2
--- regress/man/SS/noarg.out_lint
+++ regress/man/SS/noarg.out_lint
@@ -11,3 +11,4 @@ mandoc: noarg.in:31:2: WARNING: line sco
 mandoc: noarg.in:34:2: WARNING: line scope broken: UE breaks SS
 mandoc: noarg.in:35:2: ERROR: skipping end of block that is not open: UE
 mandoc: noarg.in:41:2: WARNING: fill mode already enabled, skipping: fi
+mandoc: noarg.in:44:1: WARNING: skipping blank line in line scope
Index: Makefile
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/SS/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/SS/Makefile -Lregress/man/SS/Makefile -u -p -r1.1 -r1.2
--- regress/man/SS/Makefile
+++ regress/man/SS/Makefile
@@ -10,6 +10,7 @@ LINT_TARGETS	= broken broken_eline noarg
 # - If .HP breaks .SS, a line is broken after the next input line.
 # - If .RS/RE/nf/fi breaks .SS, the next input line becomes bold.
 # - .UR does not break .SS.
+# - blank line in .SS next-line scope causes a blank line
 
 SKIP_GROFF	= broken broken_eline noarg
 
Index: broken.out_lint
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/TP/broken.out_lint,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/TP/broken.out_lint -Lregress/man/TP/broken.out_lint -u -p -r1.1 -r1.2
--- regress/man/TP/broken.out_lint
+++ regress/man/TP/broken.out_lint
@@ -1 +1,2 @@
 mandoc: broken.in:10:2: WARNING: line scope broken: RE breaks TP
+mandoc: broken.in:15:1: WARNING: skipping blank line in line scope
Index: Makefile
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/TP/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/TP/Makefile -Lregress/man/TP/Makefile -u -p -r1.1 -r1.2
--- regress/man/TP/Makefile
+++ regress/man/TP/Makefile
@@ -8,6 +8,7 @@ LINT_TARGETS	 = broken double eof
 # groff-1.22.3 defects:
 # - If .TP precedes .RE, the latter does not properly reset indentation.
 # - If the last line of the file is .TP, groff does not print a page footer.
+# - A blank line in .TP next line scope causes a blank line.
 
 SKIP_GROFF	 = broken eof
 
Index: broken.in
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/TP/broken.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/TP/broken.in -Lregress/man/TP/broken.in -u -p -r1.1 -r1.2
--- regress/man/TP/broken.in
+++ regress/man/TP/broken.in
@@ -11,3 +11,7 @@ text
 .RE
 regular
 text
+.TP
+
+head
+body
Index: broken.out_ascii
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/man/TP/broken.out_ascii,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/man/TP/broken.out_ascii -Lregress/man/TP/broken.out_ascii -u -p -r1.1 -r1.2
--- regress/man/TP/broken.out_ascii
+++ regress/man/TP/broken.out_ascii
@@ -10,6 +10,8 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
            indented text
        regular text
 
+       head   body
+
 
 
 OpenBSD                        December 16, 2014                  TP-BROKEN(1)
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2017-06-03 15:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-03 15:55 mdocml: ignore blank lines in man(7) next line scope; strange groff edge schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).