If the body of a man(7) .MT or .UR block is empty, do not emit a warning.
authorschwarze <schwarze@openbsd.org>
Tue, 2 Aug 2022 11:55:51 +0000 (11:55 +0000)
committerschwarze <schwarze@openbsd.org>
Tue, 2 Aug 2022 11:55:51 +0000 (11:55 +0000)
Leaving the body empty is legitimate in this case if the author only
wants to display a mail address or URI without providing a link text.
Output modules already handle this correctly: terminal output shows
just the URI without an accompanying text, HTML output uses the URI
for *both* the href= attribute and as the content of the <a> element.

The documentation was also wrong and claimed that an .MT or .UR block
with an empty body would produce no output.  As explained above,
this isn't true.

Bogus warning reported by
Alejandro Colomar <alx dot manpages at gmail dot com>.

regress/usr.bin/mandoc/man/MT/args.out_lint
regress/usr.bin/mandoc/man/UR/args.out_lint
usr.bin/mandoc/man_validate.c
usr.bin/mandoc/mandoc.1

index b06ec90..bd2d3be 100644 (file)
@@ -1,5 +1,3 @@
 mandoc: args.in:28:11: ERROR: skipping excess arguments: MT ... second
 mandoc: args.in:33:11: ERROR: skipping excess arguments: MT ... second
-mandoc: args.in:19:2: WARNING: empty block: MT
 mandoc: args.in:23:2: WARNING: missing resource identifier, using "": MT
-mandoc: args.in:33:2: WARNING: empty block: MT
index b1525e0..1df8c35 100644 (file)
@@ -1,5 +1,3 @@
 mandoc: args.in:28:11: ERROR: skipping excess arguments: UR ... second
 mandoc: args.in:33:11: ERROR: skipping excess arguments: UR ... second
-mandoc: args.in:19:2: WARNING: empty block: UR
 mandoc: args.in:23:2: WARNING: missing resource identifier, using "": UR
-mandoc: args.in:33:2: WARNING: empty block: UR
index 32cb55a..56c3f46 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: man_validate.c,v 1.126 2021/08/10 12:36:42 schwarze Exp $ */
+/* $OpenBSD: man_validate.c,v 1.127 2022/08/02 11:55:51 schwarze Exp $ */
 /*
  * Copyright (c) 2010, 2012-2020 Ingo Schwarze <schwarze@openbsd.org>
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
@@ -371,13 +371,11 @@ post_UR(CHKARGS)
        if (n->type == ROFFT_HEAD && n->child == NULL)
                mandoc_msg(MANDOCERR_UR_NOHEAD, n->line, n->pos,
                    "%s", roff_name[n->tok]);
-       check_part(man, n);
 }
 
 static void
 check_part(CHKARGS)
 {
-
        if (n->type == ROFFT_BODY && n->child == NULL)
                mandoc_msg(MANDOCERR_BLK_EMPTY, n->line, n->pos,
                    "%s", roff_name[n->tok]);
index 1880c30..9313706 100644 (file)
@@ -1,4 +1,4 @@
-.\" $OpenBSD: mandoc.1,v 1.188 2022/06/28 04:36:29 jsg Exp $
+.\" $OpenBSD: mandoc.1,v 1.189 2022/08/02 11:55:51 schwarze Exp $
 .\"
 .\" Copyright (c) 2012, 2014-2022 Ingo Schwarze <schwarze@openbsd.org>
 .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
@@ -15,7 +15,7 @@
 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: June 28 2022 $
+.Dd $Mdocdate: August 2 2022 $
 .Dt MANDOC 1
 .Os
 .Sh NAME
@@ -1473,10 +1473,8 @@ A
 .Ic \&Bl ,
 .Ic \&D1 ,
 .Ic \&Dl ,
-.Ic \&MT ,
-.Ic \&RS ,
 or
-.Ic \&UR
+.Ic \&RS
 block contains nothing in its body and will produce no output.
 .It Sy "empty argument, using 0n"
 .Pq mdoc