summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-06-17 22:43:14 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-06-17 22:43:14 +0000
commit6dab5c29876bfeee770246c6dfbcc1e0aef2f75e (patch)
tree8ff6fbf981f3bdc5d277d4576475bacd27fcb851
parente480ff62446a168d7089e1c658d50d312188af05 (diff)
downloadmandoc-6dab5c29876bfeee770246c6dfbcc1e0aef2f75e.tar.gz
style message about missing RCS ids; inspired by mdoclint
-rw-r--r--man_validate.c8
-rw-r--r--mandoc.142
-rw-r--r--mandoc.h1
-rw-r--r--mdoc_validate.c5
-rw-r--r--read.c1
-rw-r--r--regress/char/space/esct-man.out_lint1
-rw-r--r--regress/char/space/esct-mdoc.out_lint1
-rw-r--r--regress/char/space/tab-man.out_lint1
-rw-r--r--regress/char/space/tab.out_lint1
-rw-r--r--regress/char/space/trailing-mdoc.out_lint1
-rw-r--r--regress/char/unicode/input.out_lint1
-rw-r--r--regress/char/unicode/invalid.out_lint1
-rw-r--r--regress/eqn/define/infinite.out_lint1
-rw-r--r--regress/eqn/define/invalid.out_lint1
-rw-r--r--regress/eqn/over/noarg.out_lint1
-rw-r--r--regress/man/B/args.out_lint1
-rw-r--r--regress/man/B/blank.out_lint1
-rw-r--r--regress/man/IP/empty.out_lint1
-rw-r--r--regress/man/OP/args.out_lint1
-rw-r--r--regress/man/PD/args.out_lint1
-rw-r--r--regress/man/PP/args.out_lint1
-rw-r--r--regress/man/PP/empty.out_lint1
-rw-r--r--regress/man/RS/REarg.out_lint1
-rw-r--r--regress/man/RS/empty.out_lint1
-rw-r--r--regress/man/RS/lonelyRE.out_lint1
-rw-r--r--regress/man/RS/noRE.out_lint1
-rw-r--r--regress/man/SH/broken.out_lint1
-rw-r--r--regress/man/SH/broken_eline.out_lint1
-rw-r--r--regress/man/SH/empty_before.out_lint1
-rw-r--r--regress/man/SH/noarg.out_lint1
-rw-r--r--regress/man/SS/broken.out_lint1
-rw-r--r--regress/man/SS/broken_eline.out_lint1
-rw-r--r--regress/man/SS/noarg.out_lint1
-rw-r--r--regress/man/TH/case.out_lint1
-rw-r--r--regress/man/TH/nobody.out_lint1
-rw-r--r--regress/man/TH/sixargs.out_lint1
-rw-r--r--regress/man/TP/broken.out_lint1
-rw-r--r--regress/man/TP/double.out_lint1
-rw-r--r--regress/man/TP/eof.out_lint1
-rw-r--r--regress/man/TS/break.out_lint1
-rw-r--r--regress/man/TS/vspace.in2
-rw-r--r--regress/man/TS/vspace.out_ascii2
-rw-r--r--regress/man/UR/args.out_lint1
-rw-r--r--regress/man/UR/noUE.out_lint1
-rw-r--r--regress/man/blank/afterSH.out_lint1
-rw-r--r--regress/man/blank/afterSS.out_lint1
-rw-r--r--regress/man/blank/line.out_lint1
-rw-r--r--regress/man/nf/args.out_lint1
-rw-r--r--regress/man/nf/dupe.out_lint1
-rw-r--r--regress/mdoc/Ad/noarg.out_lint1
-rw-r--r--regress/mdoc/An/break.out_lint1
-rw-r--r--regress/mdoc/Aq/empty.out_lint1
-rw-r--r--regress/mdoc/Ar/punct.out_lint1
-rw-r--r--regress/mdoc/At/invalid.out_lint1
-rw-r--r--regress/mdoc/Bd/badargs.out_lint1
-rw-r--r--regress/mdoc/Bd/beforeNAME.out_lint1
-rw-r--r--regress/mdoc/Bd/blank.out_lint1
-rw-r--r--regress/mdoc/Bd/break.out_lint1
-rw-r--r--regress/mdoc/Bd/broken.out_lint1
-rw-r--r--regress/mdoc/Bd/nested.out_lint1
-rw-r--r--regress/mdoc/Bd/unclosed.out_lint1
-rw-r--r--regress/mdoc/Bf/badargs.out_lint1
-rw-r--r--regress/mdoc/Bf/break.out_lint1
-rw-r--r--regress/mdoc/Bf/broken.out_lint1
-rw-r--r--regress/mdoc/Bf/multiargs.out_lint1
-rw-r--r--regress/mdoc/Bk/badarg.out_lint1
-rw-r--r--regress/mdoc/Bk/broken.out_lint1
-rw-r--r--regress/mdoc/Bl/badargs.out_lint1
-rw-r--r--regress/mdoc/Bl/bareIt.out_lint1
-rw-r--r--regress/mdoc/Bl/bareTa.out_lint1
-rw-r--r--regress/mdoc/Bl/break.out_lint1
-rw-r--r--regress/mdoc/Bl/breakingIt.out_lint1
-rw-r--r--regress/mdoc/Bl/broken.out_lint1
-rw-r--r--regress/mdoc/Bl/column.out_lint1
-rw-r--r--regress/mdoc/Bl/empty.out_lint1
-rw-r--r--regress/mdoc/Bl/emptyhead.out_lint1
-rw-r--r--regress/mdoc/Bl/emptyitem.out_lint1
-rw-r--r--regress/mdoc/Bl/emptytag.out_lint1
-rw-r--r--regress/mdoc/Bl/noIt.out_lint1
-rw-r--r--regress/mdoc/Bl/notype.out_lint1
-rw-r--r--regress/mdoc/Bl/tag.out_lint1
-rw-r--r--regress/mdoc/Brq/empty.out_lint1
-rw-r--r--regress/mdoc/Bx/args.out_lint1
-rw-r--r--regress/mdoc/Cd/noarg.out_lint1
-rw-r--r--regress/mdoc/Cm/noarg.out_lint1
-rw-r--r--regress/mdoc/D1/spacing.out_lint1
-rw-r--r--regress/mdoc/Db/args.out_lint1
-rw-r--r--regress/mdoc/Dd/badarg.out_lint1
-rw-r--r--regress/mdoc/Dd/dupe.out_lint1
-rw-r--r--regress/mdoc/Dd/late.out_lint1
-rw-r--r--regress/mdoc/Dd/long.out_lint1
-rw-r--r--regress/mdoc/Dd/manarg.out_lint1
-rw-r--r--regress/mdoc/Dd/noarg.out_lint1
-rw-r--r--regress/mdoc/Dd/order.out_lint1
-rw-r--r--regress/mdoc/Dl/spacing.out_lint1
-rw-r--r--regress/mdoc/Dq/empty.out_lint1
-rw-r--r--regress/mdoc/Dt/badsec.out_lint1
-rw-r--r--regress/mdoc/Dt/case.out_lint1
-rw-r--r--regress/mdoc/Dt/dupe.out_lint1
-rw-r--r--regress/mdoc/Dt/fourargs.out_lint1
-rw-r--r--regress/mdoc/Dt/late.out_lint1
-rw-r--r--regress/mdoc/Dt/missing.out_lint1
-rw-r--r--regress/mdoc/Dt/noarg.out_lint1
-rw-r--r--regress/mdoc/Dt/nobody.out_lint1
-rw-r--r--regress/mdoc/Dt/nosec.out_lint1
-rw-r--r--regress/mdoc/Dt/order.out_lint1
-rw-r--r--regress/mdoc/Dv/noarg.out_lint1
-rw-r--r--regress/mdoc/Em/noarg.out_lint1
-rw-r--r--regress/mdoc/Em/punct.out_lint1
-rw-r--r--regress/mdoc/Eo/break.out_lint1
-rw-r--r--regress/mdoc/Eo/obsolete.out_lint1
-rw-r--r--regress/mdoc/Eo/unclosed.out_lint1
-rw-r--r--regress/mdoc/Er/noarg.out_lint1
-rw-r--r--regress/mdoc/Ev/noarg.out_lint1
-rw-r--r--roff.c18
-rw-r--r--roff.h1
116 files changed, 184 insertions, 3 deletions
diff --git a/man_validate.c b/man_validate.c
index 759c42ac..7426bfbb 100644
--- a/man_validate.c
+++ b/man_validate.c
@@ -170,6 +170,10 @@ check_root(CHKARGS)
man->meta.date = man->quick ? mandoc_strdup("") :
mandoc_normdate(man, NULL, n->line, n->pos);
}
+
+ if (man->meta.os_e &&
+ (man->meta.rcsids & (1 << man->meta.os_e)) == 0)
+ mandoc_msg(MANDOCERR_RCS_MISSING, man->parse, 0, 0, NULL);
}
static void
@@ -338,6 +342,10 @@ post_TH(CHKARGS)
man->meta.os = mandoc_strdup(n->string);
else if (man->defos != NULL)
man->meta.os = mandoc_strdup(man->defos);
+ man->meta.os_e = man->meta.os == NULL ? MDOC_OS_OTHER :
+ strstr(man->meta.os, "OpenBSD") != NULL ? MDOC_OS_OPENBSD :
+ strstr(man->meta.os, "NetBSD") != NULL ? MDOC_OS_NETBSD :
+ MDOC_OS_OTHER;
/* TITLE MSEC DATE OS ->VOL<- */
/* If missing, use the default VOL name for MSEC. */
diff --git a/mandoc.1 b/mandoc.1
index b1eb9899..0e753b6f 100644
--- a/mandoc.1
+++ b/mandoc.1
@@ -757,6 +757,48 @@ of the
.Xr uname 3
function.
.Bl -ohang
+.It Sy "Mdocdate found"
+.Pq mdoc , Nx
+The
+.Ic \&Dd
+macro uses CVS
+.Ic Mdocdate
+keyword substitution, which is not supported by the
+.Nx
+base system.
+Consider using the conventional
+.Dq "Month dd, yyyy"
+format instead.
+.It Sy "Mdocdate missing"
+.Pq mdoc , Ox
+The
+.Ic \&Dd
+macro does not use CVS
+.Ic Mdocdate
+keyword substitution, but using it is conventionally expected in the
+.Ox
+base system.
+.It Sy "legacy man(7) date format"
+.Pq mdoc
+The
+.Ic \&Dd
+macro uses the legacy
+.Xr man 7
+date format
+.Dq yyyy-dd-mm .
+Consider using the conventional
+.Xr mdoc 7
+date format
+.Dq "Month dd, yyyy"
+instead.
+.It Sy "RCS id missing"
+.Pq Ox , Nx
+The manual page lacks the comment line with the RCS identifier
+generated by CVS
+.Ic OpenBSD
+or
+.Ic NetBSD
+keyword substitution as conventionally used in these operating systems.
.It Sy "useless macro"
.Pq mdoc
A
diff --git a/mandoc.h b/mandoc.h
index 81335ff8..a7c1288e 100644
--- a/mandoc.h
+++ b/mandoc.h
@@ -49,6 +49,7 @@ enum mandocerr {
MANDOCERR_MDOCDATE, /* Mdocdate found: Dd ... */
MANDOCERR_MDOCDATE_MISSING, /* Mdocdate missing: Dd ... */
MANDOCERR_DATE_LEGACY, /* legacy man(7) date format: Dd ... */
+ MANDOCERR_RCS_MISSING, /* RCS id missing */
MANDOCERR_MACRO_USELESS, /* useless macro: macro */
MANDOCERR_BX, /* consider using OS macro: macro */
MANDOCERR_ER_ORDER, /* errnos out of order: Er ... */
diff --git a/mdoc_validate.c b/mdoc_validate.c
index 30652cec..efa80e27 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -1806,7 +1806,10 @@ post_root(POST_ARGS)
mandoc_msg(MANDOCERR_OS_MISSING,
mdoc->parse, 0, 0, NULL);
mdoc->meta.os = mandoc_strdup("");
- }
+ } else if (mdoc->meta.os_e &&
+ (mdoc->meta.rcsids & (1 << mdoc->meta.os_e)) == 0)
+ mandoc_msg(MANDOCERR_RCS_MISSING,
+ mdoc->parse, 0, 0, NULL);
/* Check that we begin with a proper `Sh'. */
diff --git a/read.c b/read.c
index 3db68fa1..6c1c3177 100644
--- a/read.c
+++ b/read.c
@@ -91,6 +91,7 @@ static const char * const mandocerrs[MANDOCERR_MAX] = {
"Mdocdate found",
"Mdocdate missing",
"legacy man(7) date format",
+ "RCS id missing",
"useless macro",
"consider using OS macro",
"errnos out of order",
diff --git a/regress/char/space/esct-man.out_lint b/regress/char/space/esct-man.out_lint
index 815b68fb..396e4dc9 100644
--- a/regress/char/space/esct-man.out_lint
+++ b/regress/char/space/esct-man.out_lint
@@ -4,3 +4,4 @@ mandoc: esct-man.in:11:8: WARNING: tab in filled text
mandoc: esct-man.in:27:11: WARNING: tab in filled text
mandoc: esct-man.in:29:11: WARNING: tab in filled text
mandoc: esct-man.in:34:10: WARNING: tab in filled text
+mandoc: esct-man.in: STYLE: RCS id missing
diff --git a/regress/char/space/esct-mdoc.out_lint b/regress/char/space/esct-mdoc.out_lint
index 43ea2b9f..d34d8ac6 100644
--- a/regress/char/space/esct-mdoc.out_lint
+++ b/regress/char/space/esct-mdoc.out_lint
@@ -2,3 +2,4 @@ mandoc: esct-mdoc.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: esct-mdoc.in:10:7: WARNING: tab in filled text
mandoc: esct-mdoc.in:14:7: WARNING: tab in filled text
mandoc: esct-mdoc.in:14:8: WARNING: tab in filled text
+mandoc: esct-mdoc.in: STYLE: RCS id missing
diff --git a/regress/char/space/tab-man.out_lint b/regress/char/space/tab-man.out_lint
index a5796e1b..b3d14c9a 100644
--- a/regress/char/space/tab-man.out_lint
+++ b/regress/char/space/tab-man.out_lint
@@ -20,3 +20,4 @@ mandoc: tab-man.in:41:1: WARNING: tab in filled text
mandoc: tab-man.in:41:2: WARNING: tab in filled text
mandoc: tab-man.in:43:1: WARNING: tab in filled text
mandoc: tab-man.in:44:1: WARNING: tab in filled text
+mandoc: tab-man.in: STYLE: RCS id missing
diff --git a/regress/char/space/tab.out_lint b/regress/char/space/tab.out_lint
index c2f91ffa..fb654d20 100644
--- a/regress/char/space/tab.out_lint
+++ b/regress/char/space/tab.out_lint
@@ -41,3 +41,4 @@ mandoc: tab.in:81:7: WARNING: tab in filled text
mandoc: tab.in:83:1: WARNING: tab in filled text
mandoc: tab.in:85:1: WARNING: tab in filled text
mandoc: tab.in:85:2: WARNING: tab in filled text
+mandoc: tab.in: STYLE: RCS id missing
diff --git a/regress/char/space/trailing-mdoc.out_lint b/regress/char/space/trailing-mdoc.out_lint
index 364d3ad4..2b7062ba 100644
--- a/regress/char/space/trailing-mdoc.out_lint
+++ b/regress/char/space/trailing-mdoc.out_lint
@@ -2,3 +2,4 @@ mandoc: trailing-mdoc.in:8:16: WARNING: whitespace at end of input line
mandoc: trailing-mdoc.in:10:12: WARNING: whitespace at end of input line
mandoc: trailing-mdoc.in:11:27: WARNING: whitespace at end of input line
mandoc: trailing-mdoc.in:1:5: STYLE: Mdocdate missing: Dd December
+mandoc: trailing-mdoc.in: STYLE: RCS id missing
diff --git a/regress/char/unicode/input.out_lint b/regress/char/unicode/input.out_lint
index 8ac05edc..8b54d4c3 100644
--- a/regress/char/unicode/input.out_lint
+++ b/regress/char/unicode/input.out_lint
@@ -79,3 +79,4 @@ mandoc: input.in:66:35: ERROR: skipping bad character: 0x80
mandoc: input.in:66:36: ERROR: skipping bad character: 0x80
mandoc: input.in:66:37: ERROR: skipping bad character: 0x80
mandoc: input.in:66:23: WARNING: invalid escape sequence: \[u200000]
+mandoc: input.in: STYLE: RCS id missing
diff --git a/regress/char/unicode/invalid.out_lint b/regress/char/unicode/invalid.out_lint
index 3fd9e4bc..7fcee59e 100644
--- a/regress/char/unicode/invalid.out_lint
+++ b/regress/char/unicode/invalid.out_lint
@@ -8,3 +8,4 @@ mandoc: invalid.in:13:24: WARNING: invalid escape sequence: \[u200000]
mandoc: invalid.in:13:13: WARNING: invalid escape sequence: \[u110000]
mandoc: invalid.in:14:20: WARNING: invalid escape sequence: \[u1234g]
mandoc: invalid.in:1:5: STYLE: Mdocdate missing: Dd October
+mandoc: invalid.in: STYLE: RCS id missing
diff --git a/regress/eqn/define/infinite.out_lint b/regress/eqn/define/infinite.out_lint
index 1a0ca671..468843f0 100644
--- a/regress/eqn/define/infinite.out_lint
+++ b/regress/eqn/define/infinite.out_lint
@@ -3,3 +3,4 @@ mandoc: infinite.in:15:2: ERROR: input stack limit exceeded, infinite loop?
mandoc: infinite.in:21:2: ERROR: input stack limit exceeded, infinite loop?
mandoc: infinite.in:27:2: ERROR: input stack limit exceeded, infinite loop?
mandoc: infinite.in:1:5: STYLE: Mdocdate missing: Dd March
+mandoc: infinite.in: STYLE: RCS id missing
diff --git a/regress/eqn/define/invalid.out_lint b/regress/eqn/define/invalid.out_lint
index 27420ca8..5f31e474 100644
--- a/regress/eqn/define/invalid.out_lint
+++ b/regress/eqn/define/invalid.out_lint
@@ -4,3 +4,4 @@ mandoc: invalid.in:21:2: WARNING: skipping empty request: undef
mandoc: invalid.in:27:2: WARNING: skipping empty request: tdefine
mandoc: invalid.in:33:2: WARNING: skipping empty request: tdefine
mandoc: invalid.in:1:5: STYLE: Mdocdate missing: Dd January
+mandoc: invalid.in: STYLE: RCS id missing
diff --git a/regress/eqn/over/noarg.out_lint b/regress/eqn/over/noarg.out_lint
index c180e2e8..876e2874 100644
--- a/regress/eqn/over/noarg.out_lint
+++ b/regress/eqn/over/noarg.out_lint
@@ -1,2 +1,3 @@
mandoc: noarg.in:9:2: WARNING: missing eqn box, using "": over
mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd January
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/man/B/args.out_lint b/regress/man/B/args.out_lint
index 0239c0a3..582eccb3 100644
--- a/regress/man/B/args.out_lint
+++ b/regress/man/B/args.out_lint
@@ -1 +1,2 @@
mandoc: args.in:20:2: WARNING: line scope broken: EOF breaks B
+mandoc: args.in: STYLE: RCS id missing
diff --git a/regress/man/B/blank.out_lint b/regress/man/B/blank.out_lint
index 22e683ea..7e31d57e 100644
--- a/regress/man/B/blank.out_lint
+++ b/regress/man/B/blank.out_lint
@@ -1 +1,2 @@
mandoc: blank.in:7:1: WARNING: skipping blank line in line scope
+mandoc: blank.in: STYLE: RCS id missing
diff --git a/regress/man/IP/empty.out_lint b/regress/man/IP/empty.out_lint
index 9f677652..fec81f2b 100644
--- a/regress/man/IP/empty.out_lint
+++ b/regress/man/IP/empty.out_lint
@@ -1,2 +1,3 @@
mandoc: empty.in:12:2: WARNING: skipping paragraph macro: IP empty
mandoc: empty.in:19:2: WARNING: skipping paragraph macro: IP empty
+mandoc: empty.in: STYLE: RCS id missing
diff --git a/regress/man/OP/args.out_lint b/regress/man/OP/args.out_lint
index c468d9d0..054132b6 100644
--- a/regress/man/OP/args.out_lint
+++ b/regress/man/OP/args.out_lint
@@ -1,2 +1,3 @@
mandoc: args.in:6:2: WARNING: missing option string, using "": OP
mandoc: args.in:12:13: ERROR: skipping excess arguments: OP ... bogus
+mandoc: args.in: STYLE: RCS id missing
diff --git a/regress/man/PD/args.out_lint b/regress/man/PD/args.out_lint
index 9e42b46e..b21abc12 100644
--- a/regress/man/PD/args.out_lint
+++ b/regress/man/PD/args.out_lint
@@ -1 +1,2 @@
mandoc: args.in:26:7: ERROR: skipping excess arguments: PD ... zzz
+mandoc: args.in: STYLE: RCS id missing
diff --git a/regress/man/PP/args.out_lint b/regress/man/PP/args.out_lint
index f2862245..12fc5673 100644
--- a/regress/man/PP/args.out_lint
+++ b/regress/man/PP/args.out_lint
@@ -1,3 +1,4 @@
mandoc: args.in:6:2: ERROR: skipping all arguments: PP arg
mandoc: args.in:8:2: ERROR: skipping all arguments: LP arg1 ...
mandoc: args.in:10:2: ERROR: skipping all arguments: P arg
+mandoc: args.in: STYLE: RCS id missing
diff --git a/regress/man/PP/empty.out_lint b/regress/man/PP/empty.out_lint
index 6af9e658..252920b9 100644
--- a/regress/man/PP/empty.out_lint
+++ b/regress/man/PP/empty.out_lint
@@ -1,3 +1,4 @@
mandoc: empty.in:7:2: WARNING: skipping paragraph macro: PP empty
mandoc: empty.in:10:2: WARNING: skipping paragraph macro: PP empty
mandoc: empty.in:13:2: WARNING: skipping paragraph macro: PP empty
+mandoc: empty.in: STYLE: RCS id missing
diff --git a/regress/man/RS/REarg.out_lint b/regress/man/RS/REarg.out_lint
index 3b516d96..b3f98297 100644
--- a/regress/man/RS/REarg.out_lint
+++ b/regress/man/RS/REarg.out_lint
@@ -5,3 +5,4 @@ mandoc: REarg.in:18:6: ERROR: skipping excess arguments: RE ... c
mandoc: REarg.in:24:6: ERROR: skipping excess arguments: RE ... d
mandoc: REarg.in:26:6: ERROR: skipping excess arguments: RE ... e
mandoc: REarg.in:26:2: ERROR: fewer RS blocks open, skipping: RE 1
+mandoc: REarg.in: STYLE: RCS id missing
diff --git a/regress/man/RS/empty.out_lint b/regress/man/RS/empty.out_lint
index fe983c38..ef5def54 100644
--- a/regress/man/RS/empty.out_lint
+++ b/regress/man/RS/empty.out_lint
@@ -1 +1,2 @@
mandoc: empty.in:7:2: WARNING: empty block: RS
+mandoc: empty.in: STYLE: RCS id missing
diff --git a/regress/man/RS/lonelyRE.out_lint b/regress/man/RS/lonelyRE.out_lint
index 8cb30028..346ec364 100644
--- a/regress/man/RS/lonelyRE.out_lint
+++ b/regress/man/RS/lonelyRE.out_lint
@@ -1,3 +1,4 @@
mandoc: lonelyRE.in:11:2: ERROR: skipping end of block that is not open: RE
mandoc: lonelyRE.in:15:2: ERROR: skipping end of block that is not open: RE
mandoc: lonelyRE.in:20:2: ERROR: skipping end of block that is not open: RE
+mandoc: lonelyRE.in: STYLE: RCS id missing
diff --git a/regress/man/RS/noRE.out_lint b/regress/man/RS/noRE.out_lint
index 3c4c0a13..94381088 100644
--- a/regress/man/RS/noRE.out_lint
+++ b/regress/man/RS/noRE.out_lint
@@ -1 +1,2 @@
mandoc: noRE.in:7:2: ERROR: appending missing end of block: RS
+mandoc: noRE.in: STYLE: RCS id missing
diff --git a/regress/man/SH/broken.out_lint b/regress/man/SH/broken.out_lint
index 70ab7537..3f390eb0 100644
--- a/regress/man/SH/broken.out_lint
+++ b/regress/man/SH/broken.out_lint
@@ -1 +1,2 @@
mandoc: broken.in:6:2: WARNING: line scope broken: EOF breaks SH
+mandoc: broken.in: STYLE: RCS id missing
diff --git a/regress/man/SH/broken_eline.out_lint b/regress/man/SH/broken_eline.out_lint
index 089bf875..b79446a1 100644
--- a/regress/man/SH/broken_eline.out_lint
+++ b/regress/man/SH/broken_eline.out_lint
@@ -1,2 +1,3 @@
mandoc: broken_eline.in:7:2: WARNING: line scope broken: EOF breaks B
mandoc: broken_eline.in:6:2: WARNING: line scope broken: EOF breaks SH
+mandoc: broken_eline.in: STYLE: RCS id missing
diff --git a/regress/man/SH/empty_before.out_lint b/regress/man/SH/empty_before.out_lint
index b10c421a..00de1862 100644
--- a/regress/man/SH/empty_before.out_lint
+++ b/regress/man/SH/empty_before.out_lint
@@ -1 +1,2 @@
mandoc: empty_before.in:2:2: WARNING: skipping paragraph macro: PP empty
+mandoc: empty_before.in: STYLE: RCS id missing
diff --git a/regress/man/SH/noarg.out_lint b/regress/man/SH/noarg.out_lint
index 3f9d130d..9a7c6c74 100644
--- a/regress/man/SH/noarg.out_lint
+++ b/regress/man/SH/noarg.out_lint
@@ -12,3 +12,4 @@ 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
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/man/SS/broken.out_lint b/regress/man/SS/broken.out_lint
index b3f7aea0..9c601048 100644
--- a/regress/man/SS/broken.out_lint
+++ b/regress/man/SS/broken.out_lint
@@ -1 +1,2 @@
mandoc: broken.in:6:2: WARNING: line scope broken: EOF breaks SS
+mandoc: broken.in: STYLE: RCS id missing
diff --git a/regress/man/SS/broken_eline.out_lint b/regress/man/SS/broken_eline.out_lint
index 1128b738..a1fec398 100644
--- a/regress/man/SS/broken_eline.out_lint
+++ b/regress/man/SS/broken_eline.out_lint
@@ -1,2 +1,3 @@
mandoc: broken_eline.in:7:2: WARNING: line scope broken: EOF breaks B
mandoc: broken_eline.in:6:2: WARNING: line scope broken: EOF breaks SS
+mandoc: broken_eline.in: STYLE: RCS id missing
diff --git a/regress/man/SS/noarg.out_lint b/regress/man/SS/noarg.out_lint
index 8af88544..30a5ea29 100644
--- a/regress/man/SS/noarg.out_lint
+++ b/regress/man/SS/noarg.out_lint
@@ -12,3 +12,4 @@ 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
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/man/TH/case.out_lint b/regress/man/TH/case.out_lint
index b154fc16..94d0fd0b 100644
--- a/regress/man/TH/case.out_lint
+++ b/regress/man/TH/case.out_lint
@@ -1 +1,2 @@
mandoc: case.in:1:8: WARNING: lower case character in document title: TH TH-case
+mandoc: case.in: STYLE: RCS id missing
diff --git a/regress/man/TH/nobody.out_lint b/regress/man/TH/nobody.out_lint
index f5439fcd..5a3f1c43 100644
--- a/regress/man/TH/nobody.out_lint
+++ b/regress/man/TH/nobody.out_lint
@@ -1 +1,2 @@
mandoc: nobody.in: WARNING: no document body
+mandoc: nobody.in: STYLE: RCS id missing
diff --git a/regress/man/TH/sixargs.out_lint b/regress/man/TH/sixargs.out_lint
index 9ac7a838..87f5f5c8 100644
--- a/regress/man/TH/sixargs.out_lint
+++ b/regress/man/TH/sixargs.out_lint
@@ -1 +1,2 @@
mandoc: sixargs.in:1:53: ERROR: skipping excess arguments: TH ... SIX
+mandoc: sixargs.in: STYLE: RCS id missing
diff --git a/regress/man/TP/broken.out_lint b/regress/man/TP/broken.out_lint
index 1a3a433b..9fbd74dc 100644
--- a/regress/man/TP/broken.out_lint
+++ b/regress/man/TP/broken.out_lint
@@ -1,2 +1,3 @@
mandoc: broken.in:10:2: WARNING: line scope broken: RE breaks TP
mandoc: broken.in:15:1: WARNING: skipping blank line in line scope
+mandoc: broken.in: STYLE: RCS id missing
diff --git a/regress/man/TP/double.out_lint b/regress/man/TP/double.out_lint
index 0ec1aa87..393c8dc4 100644
--- a/regress/man/TP/double.out_lint
+++ b/regress/man/TP/double.out_lint
@@ -3,3 +3,4 @@ mandoc: double.in:30:2: WARNING: line scope broken: PP breaks B
mandoc: double.in:32:2: WARNING: line scope broken: TP breaks TP
mandoc: double.in:20:2: WARNING: skipping paragraph macro: PP empty
mandoc: double.in:31:2: WARNING: skipping paragraph macro: PP empty
+mandoc: double.in: STYLE: RCS id missing
diff --git a/regress/man/TP/eof.out_lint b/regress/man/TP/eof.out_lint
index 62d6ff86..8da8f955 100644
--- a/regress/man/TP/eof.out_lint
+++ b/regress/man/TP/eof.out_lint
@@ -1 +1,2 @@
mandoc: eof.in:6:2: WARNING: line scope broken: EOF breaks TP
+mandoc: eof.in: STYLE: RCS id missing
diff --git a/regress/man/TS/break.out_lint b/regress/man/TS/break.out_lint
index 4bff2ea1..ce4abee5 100644
--- a/regress/man/TS/break.out_lint
+++ b/regress/man/TS/break.out_lint
@@ -2,3 +2,4 @@ mandoc: break.in:6:2: WARNING: line scope broken: TS breaks TP
mandoc: break.in:13:2: WARNING: line scope broken: TS breaks SH
mandoc: break.in:20:2: WARNING: line scope broken: TS breaks SS
mandoc: break.in:27:2: WARNING: line scope broken: TS breaks B
+mandoc: break.in: STYLE: RCS id missing
diff --git a/regress/man/TS/vspace.in b/regress/man/TS/vspace.in
index c3a2363f..3fbb0c94 100644
--- a/regress/man/TS/vspace.in
+++ b/regress/man/TS/vspace.in
@@ -1,4 +1,4 @@
-.TH TBL-VSPACE 1
+.TH TBL-VSPACE 1 "May 27, 2012" OpenBSD
.SH NAME
tbl-vspace \- vertical spacing around tables
.SH DESCRIPTION
diff --git a/regress/man/TS/vspace.out_ascii b/regress/man/TS/vspace.out_ascii
index 6f2feee1..b0122b91 100644
--- a/regress/man/TS/vspace.out_ascii
+++ b/regress/man/TS/vspace.out_ascii
@@ -39,4 +39,4 @@ DDEESSCCRRIIPPTTIIOONN
- TBL-VSPACE(1)
+OpenBSD May 27, 2012 TBL-VSPACE(1)
diff --git a/regress/man/UR/args.out_lint b/regress/man/UR/args.out_lint
index 3e7ef528..bbef2bc7 100644
--- a/regress/man/UR/args.out_lint
+++ b/regress/man/UR/args.out_lint
@@ -3,3 +3,4 @@ mandoc: args.in:26:11: ERROR: skipping excess arguments: UR ... second
mandoc: args.in:12:2: WARNING: empty block: UR
mandoc: args.in:16:2: WARNING: missing resource identifier, using "": UR
mandoc: args.in:26:2: WARNING: empty block: UR
+mandoc: args.in: STYLE: RCS id missing
diff --git a/regress/man/UR/noUE.out_lint b/regress/man/UR/noUE.out_lint
index d81fad0f..f1d7578a 100644
--- a/regress/man/UR/noUE.out_lint
+++ b/regress/man/UR/noUE.out_lint
@@ -1,2 +1,3 @@
mandoc: noUE.in:6:2: ERROR: skipping end of block that is not open: UE
mandoc: noUE.in:9:2: ERROR: appending missing end of block: UR
+mandoc: noUE.in: STYLE: RCS id missing
diff --git a/regress/man/blank/afterSH.out_lint b/regress/man/blank/afterSH.out_lint
index 0a77f218..f8ce9d3c 100644
--- a/regress/man/blank/afterSH.out_lint
+++ b/regress/man/blank/afterSH.out_lint
@@ -2,3 +2,4 @@ mandoc: afterSH.in:31:2: WARNING: skipping paragraph macro: br after SH
mandoc: afterSH.in:35:2: WARNING: skipping paragraph macro: sp after SH
mandoc: afterSH.in:71:2: WARNING: skipping paragraph macro: br after SH
mandoc: afterSH.in:76:2: WARNING: skipping paragraph macro: sp after SH
+mandoc: afterSH.in: STYLE: RCS id missing
diff --git a/regress/man/blank/afterSS.out_lint b/regress/man/blank/afterSS.out_lint
index 5129637c..da1de624 100644
--- a/regress/man/blank/afterSS.out_lint
+++ b/regress/man/blank/afterSS.out_lint
@@ -2,3 +2,4 @@ mandoc: afterSS.in:32:2: WARNING: skipping paragraph macro: br after SS
mandoc: afterSS.in:36:2: WARNING: skipping paragraph macro: sp after SS
mandoc: afterSS.in:72:2: WARNING: skipping paragraph macro: br after SS
mandoc: afterSS.in:77:2: WARNING: skipping paragraph macro: sp after SS
+mandoc: afterSS.in: STYLE: RCS id missing
diff --git a/regress/man/blank/line.out_lint b/regress/man/blank/line.out_lint
index cf3507f5..70c595da 100644
--- a/regress/man/blank/line.out_lint
+++ b/regress/man/blank/line.out_lint
@@ -6,3 +6,4 @@ mandoc: line.in:38:2: WARNING: skipping paragraph macro: sp after PP
mandoc: line.in:53:1: WARNING: skipping paragraph macro: sp after PP
mandoc: line.in:81:2: WARNING: skipping paragraph macro: sp after SH
mandoc: line.in:84:2: WARNING: skipping paragraph macro: sp after SS
+mandoc: line.in: STYLE: RCS id missing
diff --git a/regress/man/nf/args.out_lint b/regress/man/nf/args.out_lint
index dc11881a..8c9c437f 100644
--- a/regress/man/nf/args.out_lint
+++ b/regress/man/nf/args.out_lint
@@ -1,2 +1,3 @@
mandoc: args.in:7:5: ERROR: skipping all arguments: nf arg1 arg2 arg3
mandoc: args.in:10:5: ERROR: skipping all arguments: fi arg1 arg2 arg3
+mandoc: args.in: STYLE: RCS id missing
diff --git a/regress/man/nf/dupe.out_lint b/regress/man/nf/dupe.out_lint
index b33d44c6..5f627bc7 100644
--- a/regress/man/nf/dupe.out_lint
+++ b/regress/man/nf/dupe.out_lint
@@ -1,2 +1,3 @@
mandoc: dupe.in:7:2: WARNING: fill mode already enabled, skipping: fi
mandoc: dupe.in:14:2: WARNING: fill mode already disabled, skipping: nf
+mandoc: dupe.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Ad/noarg.out_lint b/regress/mdoc/Ad/noarg.out_lint
index 2ca0c2e2..56c4dd6a 100644
--- a/regress/mdoc/Ad/noarg.out_lint
+++ b/regress/mdoc/Ad/noarg.out_lint
@@ -1,3 +1,4 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Ad
mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: noarg.in:9:10: STYLE: no blank before trailing delimiter: Ad 0x3bc.
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/An/break.out_lint b/regress/mdoc/An/break.out_lint
index 165a2267..a150a516 100644
--- a/regress/mdoc/An/break.out_lint
+++ b/regress/mdoc/An/break.out_lint
@@ -12,3 +12,4 @@ mandoc: break.in:39:21: ERROR: skipping excess arguments: An ... bogus
mandoc: break.in:43:9: STYLE: no blank before trailing delimiter: An Ingo,
mandoc: break.in:47:2: WARNING: skipping empty macro: An
mandoc: break.in:49:2: WARNING: skipping empty macro: An
+mandoc: break.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Aq/empty.out_lint b/regress/mdoc/Aq/empty.out_lint
index 7e74ce97..5f037720 100644
--- a/regress/mdoc/Aq/empty.out_lint
+++ b/regress/mdoc/Aq/empty.out_lint
@@ -1,3 +1,4 @@
mandoc: empty.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: empty.in:11:14: STYLE: no blank before trailing delimiter: Aq user@host:
mandoc: empty.in:14:9: STYLE: no blank before trailing delimiter: Ao full:
+mandoc: empty.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Ar/punct.out_lint b/regress/mdoc/Ar/punct.out_lint
index bf820be7..43c0d181 100644
--- a/regress/mdoc/Ar/punct.out_lint
+++ b/regress/mdoc/Ar/punct.out_lint
@@ -1,2 +1,3 @@
mandoc: punct.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: punct.in:45:8: STYLE: no blank before trailing delimiter: Ar arg.
+mandoc: punct.in: STYLE: RCS id missing
diff --git a/regress/mdoc/At/invalid.out_lint b/regress/mdoc/At/invalid.out_lint
index ab40693b..f0a5a637 100644
--- a/regress/mdoc/At/invalid.out_lint
+++ b/regress/mdoc/At/invalid.out_lint
@@ -1,2 +1,3 @@
mandoc: invalid.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: invalid.in:15:5: WARNING: unknown AT&T UNIX version: At murks
+mandoc: invalid.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bd/badargs.out_lint b/regress/mdoc/Bd/badargs.out_lint
index 44745f66..7ec1d457 100644
--- a/regress/mdoc/Bd/badargs.out_lint
+++ b/regress/mdoc/Bd/badargs.out_lint
@@ -11,3 +11,4 @@ mandoc: badargs.in:33:2: ERROR: NOT IMPLEMENTED: Bd -file
mandoc: badargs.in:38:2: ERROR: NOT IMPLEMENTED: Bd -file
mandoc: badargs.in:43:2: ERROR: NOT IMPLEMENTED: Bd -file
mandoc: badargs.in:48:2: ERROR: skipping display without arguments: Bd
+mandoc: badargs.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bd/beforeNAME.out_lint b/regress/mdoc/Bd/beforeNAME.out_lint
index cd7d5e8f..0161cd55 100644
--- a/regress/mdoc/Bd/beforeNAME.out_lint
+++ b/regress/mdoc/Bd/beforeNAME.out_lint
@@ -1,2 +1,3 @@
mandoc: beforeNAME.in:1:5: STYLE: Mdocdate missing: Dd July
+mandoc: beforeNAME.in: STYLE: RCS id missing
mandoc: beforeNAME.in:4:2: WARNING: content before first section header: Bd
diff --git a/regress/mdoc/Bd/blank.out_lint b/regress/mdoc/Bd/blank.out_lint
index 88d0fa85..d69d8687 100644
--- a/regress/mdoc/Bd/blank.out_lint
+++ b/regress/mdoc/Bd/blank.out_lint
@@ -7,3 +7,4 @@ mandoc: blank.in:23:32: WARNING: whitespace at end of input line
mandoc: blank.in:30:8: WARNING: whitespace at end of input line
mandoc: blank.in:1:5: STYLE: Mdocdate missing: Dd January
mandoc: blank.in:30:2: WARNING: empty block: Dl
+mandoc: blank.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bd/break.out_lint b/regress/mdoc/Bd/break.out_lint
index c97d00e1..782c834d 100644
--- a/regress/mdoc/Bd/break.out_lint
+++ b/regress/mdoc/Bd/break.out_lint
@@ -1,2 +1,3 @@
mandoc: break.in:12:2: WARNING: blocks badly nested: Bd breaks Bo
mandoc: break.in:1:5: STYLE: Mdocdate missing: Dd November
+mandoc: break.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bd/broken.out_lint b/regress/mdoc/Bd/broken.out_lint
index 41df6784..34802726 100644
--- a/regress/mdoc/Bd/broken.out_lint
+++ b/regress/mdoc/Bd/broken.out_lint
@@ -1,2 +1,3 @@
mandoc: broken.in:12:2: WARNING: blocks badly nested: Bo breaks Bd
mandoc: broken.in:1:5: STYLE: Mdocdate missing: Dd November
+mandoc: broken.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bd/nested.out_lint b/regress/mdoc/Bd/nested.out_lint
index 3616ae1f..74e08948 100644
--- a/regress/mdoc/Bd/nested.out_lint
+++ b/regress/mdoc/Bd/nested.out_lint
@@ -1,3 +1,4 @@
mandoc: nested.in:1:5: STYLE: Mdocdate missing: Dd November
mandoc: nested.in:13:2: WARNING: nested displays are not portable: Bd in Bd
mandoc: nested.in:24:2: WARNING: nested displays are not portable: Bd in Bd
+mandoc: nested.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bd/unclosed.out_lint b/regress/mdoc/Bd/unclosed.out_lint
index c379ecd5..774004f0 100644
--- a/regress/mdoc/Bd/unclosed.out_lint
+++ b/regress/mdoc/Bd/unclosed.out_lint
@@ -1,2 +1,3 @@
mandoc: unclosed.in:9:2: ERROR: appending missing end of block: Bd
mandoc: unclosed.in:1:5: STYLE: Mdocdate missing: Dd July
+mandoc: unclosed.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bf/badargs.out_lint b/regress/mdoc/Bf/badargs.out_lint
index 688ee4ba..2551d485 100644
--- a/regress/mdoc/Bf/badargs.out_lint
+++ b/regress/mdoc/Bf/badargs.out_lint
@@ -2,3 +2,4 @@ mandoc: badargs.in:17:2: ERROR: skipping all arguments: Ef tail argument
mandoc: badargs.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: badargs.in:11:2: WARNING: missing font type, using \fR: Bf
mandoc: badargs.in:15:5: WARNING: unknown font type, using \fR: Bf badarg
+mandoc: badargs.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bf/break.out_lint b/regress/mdoc/Bf/break.out_lint
index 49ee2144..3323b144 100644
--- a/regress/mdoc/Bf/break.out_lint
+++ b/regress/mdoc/Bf/break.out_lint
@@ -1,2 +1,3 @@
mandoc: break.in:13:2: WARNING: blocks badly nested: Bf breaks Bo
mandoc: break.in:1:5: STYLE: Mdocdate missing: Dd November
+mandoc: break.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bf/broken.out_lint b/regress/mdoc/Bf/broken.out_lint
index e977b06f..31711c34 100644
--- a/regress/mdoc/Bf/broken.out_lint
+++ b/regress/mdoc/Bf/broken.out_lint
@@ -1,2 +1,3 @@
mandoc: broken.in:12:2: WARNING: blocks badly nested: Bo breaks Bf
mandoc: broken.in:1:5: STYLE: Mdocdate missing: Dd November
+mandoc: broken.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bf/multiargs.out_lint b/regress/mdoc/Bf/multiargs.out_lint
index 6a140622..e095e561 100644
--- a/regress/mdoc/Bf/multiargs.out_lint
+++ b/regress/mdoc/Bf/multiargs.out_lint
@@ -4,3 +4,4 @@ mandoc: multiargs.in:17:15: ERROR: skipping excess arguments: Bf ... badarg
mandoc: multiargs.in:21:8: ERROR: skipping excess arguments: Bf ... -emphasis
mandoc: multiargs.in:25:8: ERROR: skipping excess arguments: Bf ... Em
mandoc: multiargs.in:29:8: ERROR: skipping excess arguments: Bf ... badarg
+mandoc: multiargs.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bk/badarg.out_lint b/regress/mdoc/Bk/badarg.out_lint
index b56bddee..bf52f2f5 100644
--- a/regress/mdoc/Bk/badarg.out_lint
+++ b/regress/mdoc/Bk/badarg.out_lint
@@ -5,3 +5,4 @@ mandoc: badarg.in:31:5: ERROR: skipping excess arguments: Bk ... -line
mandoc: badarg.in:49:12: ERROR: skipping excess arguments: Bk ... -murks
mandoc: badarg.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: badarg.in:54:2: WARNING: empty block: Bk
+mandoc: badarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bk/broken.out_lint b/regress/mdoc/Bk/broken.out_lint
index 4383d677..23a4cddf 100644
--- a/regress/mdoc/Bk/broken.out_lint
+++ b/regress/mdoc/Bk/broken.out_lint
@@ -1,3 +1,4 @@
mandoc: broken.in:10:2: ERROR: inserting missing end of block: Sh breaks Bk
mandoc: broken.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: broken.in:9:2: WARNING: empty block: Bk
+mandoc: broken.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/badargs.out_lint b/regress/mdoc/Bl/badargs.out_lint
index f4247a4a..a2f5a267 100644
--- a/regress/mdoc/Bl/badargs.out_lint
+++ b/regress/mdoc/Bl/badargs.out_lint
@@ -17,3 +17,4 @@ mandoc: badargs.in:70:20: ERROR: skipping excess arguments: Bl ... -bogus
mandoc: badargs.in:75:42: WARNING: duplicate argument: Bl -compact
mandoc: badargs.in:75:51: WARNING: duplicate argument: Bl -offset 2n
mandoc: badargs.in:75:62: WARNING: duplicate argument: Bl -width 6n
+mandoc: badargs.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/bareIt.out_lint b/regress/mdoc/Bl/bareIt.out_lint
index db7d0dcc..22636689 100644
--- a/regress/mdoc/Bl/bareIt.out_lint
+++ b/regress/mdoc/Bl/bareIt.out_lint
@@ -2,3 +2,4 @@ mandoc: bareIt.in:9:2: ERROR: skipping item outside list: It argument
mandoc: bareIt.in:14:2: ERROR: skipping item outside list: It argument
mandoc: bareIt.in:1:5: STYLE: Mdocdate missing: Dd August
mandoc: bareIt.in:9:2: WARNING: skipping paragraph macro: br before Bl
+mandoc: bareIt.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/bareTa.out_lint b/regress/mdoc/Bl/bareTa.out_lint
index 789daba7..4903456e 100644
--- a/regress/mdoc/Bl/bareTa.out_lint
+++ b/regress/mdoc/Bl/bareTa.out_lint
@@ -4,3 +4,4 @@ mandoc: bareTa.in:18:5: ERROR: skipping column outside column list: Ta
mandoc: bareTa.in:25:2: ERROR: skipping item outside list: It ignored arguments
mandoc: bareTa.in:1:5: STYLE: Mdocdate missing: Dd November
mandoc: bareTa.in:18:2: ERROR: skipping all arguments: It ignored arguments
+mandoc: bareTa.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/break.out_lint b/regress/mdoc/Bl/break.out_lint
index 4530b0ce..0e4c8b98 100644
--- a/regress/mdoc/Bl/break.out_lint
+++ b/regress/mdoc/Bl/break.out_lint
@@ -17,3 +17,4 @@ mandoc: break.in:74:2: ERROR: appending missing end of block: Bl
mandoc: break.in:1:5: STYLE: Mdocdate missing: Dd August
mandoc: break.in:75:2: WARNING: empty list item: Bl -enum It
mandoc: break.in:75:2: ERROR: skipping all arguments: It before broken block
+mandoc: break.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/breakingIt.out_lint b/regress/mdoc/Bl/breakingIt.out_lint
index c0744ad5..e3059ffc 100644
--- a/regress/mdoc/Bl/breakingIt.out_lint
+++ b/regress/mdoc/Bl/breakingIt.out_lint
@@ -15,3 +15,4 @@ mandoc: breakingIt.in:41:1: WARNING: moving content out of list: text
mandoc: breakingIt.in:42:2: WARNING: moving content out of list: Bd
mandoc: breakingIt.in:48:1: WARNING: moving content out of list: text
mandoc: breakingIt.in:49:2: WARNING: moving content out of list: Bd
+mandoc: breakingIt.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/broken.out_lint b/regress/mdoc/Bl/broken.out_lint
index 044cb1df..c5c27628 100644
--- a/regress/mdoc/Bl/broken.out_lint
+++ b/regress/mdoc/Bl/broken.out_lint
@@ -2,3 +2,4 @@ mandoc: broken.in:13:2: WARNING: blocks badly nested: Bo breaks Bl
mandoc: broken.in:23:2: WARNING: blocks badly nested: Bo breaks Bd
mandoc: broken.in:25:2: ERROR: inserting missing end of block: It breaks Bd
mandoc: broken.in:1:5: STYLE: Mdocdate missing: Dd February
+mandoc: broken.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/column.out_lint b/regress/mdoc/Bl/column.out_lint
index 3652fba1..5fb3e269 100644
--- a/regress/mdoc/Bl/column.out_lint
+++ b/regress/mdoc/Bl/column.out_lint
@@ -3,3 +3,4 @@ mandoc: column.in:71:2: WARNING: wrong number of cells: 2 columns, 1 cells
mandoc: column.in:74:2: WARNING: wrong number of cells: 2 columns, 4 cells
mandoc: column.in:75:2: WARNING: wrong number of cells: 2 columns, 5 cells
mandoc: column.in:103:18: WARNING: skipping -width argument: Bl -column
+mandoc: column.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/empty.out_lint b/regress/mdoc/Bl/empty.out_lint
index e415f2e0..bf6f0a50 100644
--- a/regress/mdoc/Bl/empty.out_lint
+++ b/regress/mdoc/Bl/empty.out_lint
@@ -10,3 +10,4 @@ mandoc: empty.in:30:2: WARNING: empty block: Bl
mandoc: empty.in:33:2: WARNING: empty block: Bl
mandoc: empty.in:36:2: WARNING: empty block: Bl
mandoc: empty.in:39:2: WARNING: empty block: Bl
+mandoc: empty.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/emptyhead.out_lint b/regress/mdoc/Bl/emptyhead.out_lint
index 6b431c1e..a2e988ac 100644
--- a/regress/mdoc/Bl/emptyhead.out_lint
+++ b/regress/mdoc/Bl/emptyhead.out_lint
@@ -3,3 +3,4 @@ mandoc: emptyhead.in:12:2: WARNING: empty head in list item: Bl -hang It
mandoc: emptyhead.in:21:2: WARNING: empty head in list item: Bl -ohang It
mandoc: emptyhead.in:30:2: WARNING: empty head in list item: Bl -inset It
mandoc: emptyhead.in:39:2: WARNING: empty head in list item: Bl -diag It
+mandoc: emptyhead.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/emptyitem.out_lint b/regress/mdoc/Bl/emptyitem.out_lint
index fd43fac5..04094800 100644
--- a/regress/mdoc/Bl/emptyitem.out_lint
+++ b/regress/mdoc/Bl/emptyitem.out_lint
@@ -7,3 +7,4 @@ mandoc: emptyitem.in:28:2: WARNING: empty list item: Bl -enum It
mandoc: emptyitem.in:29:2: ERROR: skipping all arguments: It head argument
mandoc: emptyitem.in:34:2: ERROR: skipping all arguments: It Sy
mandoc: emptyitem.in:36:2: WARNING: empty list item: Bl -hyphen It
+mandoc: emptyitem.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/emptytag.out_lint b/regress/mdoc/Bl/emptytag.out_lint
index f45d01a2..b4a6a5a2 100644
--- a/regress/mdoc/Bl/emptytag.out_lint
+++ b/regress/mdoc/Bl/emptytag.out_lint
@@ -1,2 +1,3 @@
mandoc: emptytag.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: emptytag.in:12:2: WARNING: empty head in list item: Bl -tag It
+mandoc: emptytag.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/noIt.out_lint b/regress/mdoc/Bl/noIt.out_lint
index fed447e7..73bc1536 100644
--- a/regress/mdoc/Bl/noIt.out_lint
+++ b/regress/mdoc/Bl/noIt.out_lint
@@ -7,3 +7,4 @@ mandoc: noIt.in:17:2: WARNING: moving content out of list: Em
mandoc: noIt.in:17:10: WARNING: moving content out of list: Sy
mandoc: noIt.in:17:19: WARNING: moving content out of list: Em
mandoc: noIt.in:23:1: WARNING: moving content out of list: text
+mandoc: noIt.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/notype.out_lint b/regress/mdoc/Bl/notype.out_lint
index 1664a34e..e577a78b 100644
--- a/regress/mdoc/Bl/notype.out_lint
+++ b/regress/mdoc/Bl/notype.out_lint
@@ -4,3 +4,4 @@ mandoc: notype.in:9:2: WARNING: list type is not the first argument: Bl -offset
mandoc: notype.in:15:2: ERROR: missing list type, using -item: Bl
mandoc: notype.in:15:20: WARNING: skipping -width argument: Bl -item
mandoc: notype.in:21:2: ERROR: missing list type, using -item: Bl
+mandoc: notype.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bl/tag.out_lint b/regress/mdoc/Bl/tag.out_lint
index 284629f4..c8facb85 100644
--- a/regress/mdoc/Bl/tag.out_lint
+++ b/regress/mdoc/Bl/tag.out_lint
@@ -1,2 +1,3 @@
mandoc: tag.in:1:5: STYLE: Mdocdate missing: Dd September
mandoc: tag.in:131:2: WARNING: missing -width in -tag list, using 6n: Bl -tag
+mandoc: tag.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Brq/empty.out_lint b/regress/mdoc/Brq/empty.out_lint
index fc63637b..ad27b009 100644
--- a/regress/mdoc/Brq/empty.out_lint
+++ b/regress/mdoc/Brq/empty.out_lint
@@ -1,3 +1,4 @@
mandoc: empty.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: empty.in:11:19: STYLE: no blank before trailing delimiter: Brq user@host)
mandoc: empty.in:14:14: STYLE: no blank before trailing delimiter: Bro full)
+mandoc: empty.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Bx/args.out_lint b/regress/mdoc/Bx/args.out_lint
index 9ccc9a88..182f92ba 100644
--- a/regress/mdoc/Bx/args.out_lint
+++ b/regress/mdoc/Bx/args.out_lint
@@ -1,2 +1,3 @@
mandoc: args.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: args.in:15:9: STYLE: no blank before trailing delimiter: Bx nett.
+mandoc: args.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Cd/noarg.out_lint b/regress/mdoc/Cd/noarg.out_lint
index 1ec1484c..0503b8ea 100644
--- a/regress/mdoc/Cd/noarg.out_lint
+++ b/regress/mdoc/Cd/noarg.out_lint
@@ -1,2 +1,3 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Cd
mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd January
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Cm/noarg.out_lint b/regress/mdoc/Cm/noarg.out_lint
index e7dc2932..88e134da 100644
--- a/regress/mdoc/Cm/noarg.out_lint
+++ b/regress/mdoc/Cm/noarg.out_lint
@@ -2,3 +2,4 @@ mandoc: noarg.in:9:23: WARNING: skipping empty macro: Cm
mandoc: noarg.in:12:13: WARNING: skipping empty macro: Cm
mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: noarg.in:12:31: STYLE: no blank before trailing delimiter: Cm command.
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/D1/spacing.out_lint b/regress/mdoc/D1/spacing.out_lint
index cc3e4376..1e270d1f 100644
--- a/regress/mdoc/D1/spacing.out_lint
+++ b/regress/mdoc/D1/spacing.out_lint
@@ -1,2 +1,3 @@
mandoc: spacing.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: spacing.in:11:2: WARNING: empty block: D1
+mandoc: spacing.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Db/args.out_lint b/regress/mdoc/Db/args.out_lint
index b91a8ee3..41665017 100644
--- a/regress/mdoc/Db/args.out_lint
+++ b/regress/mdoc/Db/args.out_lint
@@ -2,3 +2,4 @@ mandoc: args.in:1:5: STYLE: Mdocdate missing: Dd November
mandoc: args.in:9:2: WARNING: obsolete macro: Db
mandoc: args.in:11:2: WARNING: obsolete macro: Db
mandoc: args.in:13:2: WARNING: obsolete macro: Db
+mandoc: args.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dd/badarg.out_lint b/regress/mdoc/Dd/badarg.out_lint
index 3ad546cf..c4ace062 100644
--- a/regress/mdoc/Dd/badarg.out_lint
+++ b/regress/mdoc/Dd/badarg.out_lint
@@ -1,2 +1,3 @@
mandoc: badarg.in:1:2: WARNING: cannot parse date, using it verbatim: bad date
mandoc: badarg.in:1:5: STYLE: Mdocdate missing: Dd bad date
+mandoc: badarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dd/dupe.out_lint b/regress/mdoc/Dd/dupe.out_lint
index 3b9a9751..c960b131 100644
--- a/regress/mdoc/Dd/dupe.out_lint
+++ b/regress/mdoc/Dd/dupe.out_lint
@@ -1,3 +1,4 @@
mandoc: dupe.in:1:5: STYLE: Mdocdate missing: Dd August
mandoc: dupe.in:4:2: WARNING: duplicate prologue macro: Dd
mandoc: dupe.in:10:2: WARNING: duplicate prologue macro: Dd
+mandoc: dupe.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dd/late.out_lint b/regress/mdoc/Dd/late.out_lint
index 07374131..26f1a49c 100644
--- a/regress/mdoc/Dd/late.out_lint
+++ b/regress/mdoc/Dd/late.out_lint
@@ -1 +1,2 @@
mandoc: late.in:8:2: WARNING: late prologue macro: Dd
+mandoc: late.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dd/long.out_lint b/regress/mdoc/Dd/long.out_lint
index ec549143..3c08dfc1 100644
--- a/regress/mdoc/Dd/long.out_lint
+++ b/regress/mdoc/Dd/long.out_lint
@@ -1,2 +1,3 @@
mandoc: long.in:1:2: WARNING: cannot parse date, using it verbatim: 1234567890123456789012345678901234567890123456789012345678901234567890123456789
mandoc: long.in:1:5: STYLE: Mdocdate missing: Dd 1234567890123456789012345678901234567890123456789012345678901234567890123456789
+mandoc: long.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dd/manarg.out_lint b/regress/mdoc/Dd/manarg.out_lint
index 3f3ecf71..bdf87370 100644
--- a/regress/mdoc/Dd/manarg.out_lint
+++ b/regress/mdoc/Dd/manarg.out_lint
@@ -1,2 +1,3 @@
mandoc: manarg.in:1:2: STYLE: legacy man(7) date format: Dd 2014-08-07
mandoc: manarg.in:1:5: STYLE: Mdocdate missing: Dd 2014-08-07
+mandoc: manarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dd/noarg.out_lint b/regress/mdoc/Dd/noarg.out_lint
index f2816336..273e6fa6 100644
--- a/regress/mdoc/Dd/noarg.out_lint
+++ b/regress/mdoc/Dd/noarg.out_lint
@@ -1 +1,2 @@
mandoc: noarg.in:1:2: WARNING: missing date, using today's date
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dd/order.out_lint b/regress/mdoc/Dd/order.out_lint
index 3f0cb911..36a360a4 100644
--- a/regress/mdoc/Dd/order.out_lint
+++ b/regress/mdoc/Dd/order.out_lint
@@ -1,2 +1,3 @@
mandoc: order.in:2:2: WARNING: prologue macros out of order: Dd after Dt
mandoc: order.in:2:5: STYLE: Mdocdate missing: Dd August
+mandoc: order.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dl/spacing.out_lint b/regress/mdoc/Dl/spacing.out_lint
index 7d87c4ff..35da576c 100644
--- a/regress/mdoc/Dl/spacing.out_lint
+++ b/regress/mdoc/Dl/spacing.out_lint
@@ -1,2 +1,3 @@
mandoc: spacing.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: spacing.in:11:2: WARNING: empty block: Dl
+mandoc: spacing.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dq/empty.out_lint b/regress/mdoc/Dq/empty.out_lint
index 5abe9323..193c54a7 100644
--- a/regress/mdoc/Dq/empty.out_lint
+++ b/regress/mdoc/Dq/empty.out_lint
@@ -1 +1,2 @@
mandoc: empty.in:1:5: STYLE: Mdocdate missing: Dd June
+mandoc: empty.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dt/badsec.out_lint b/regress/mdoc/Dt/badsec.out_lint
index 3d469dee..88a8e0fb 100644
--- a/regress/mdoc/Dt/badsec.out_lint
+++ b/regress/mdoc/Dt/badsec.out_lint
@@ -1,2 +1,3 @@
mandoc: badsec.in:2:15: WARNING: unknown manual section: Dt ... foo
mandoc: badsec.in:1:5: STYLE: Mdocdate missing: Dd June
+mandoc: badsec.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dt/case.out_lint b/regress/mdoc/Dt/case.out_lint
index 921f8613..37e6392e 100644
--- a/regress/mdoc/Dt/case.out_lint
+++ b/regress/mdoc/Dt/case.out_lint
@@ -1,2 +1,3 @@
mandoc: case.in:2:6: WARNING: lower case character in document title: Dt Dt-case
mandoc: case.in:1:5: STYLE: Mdocdate missing: Dd June
+mandoc: case.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dt/dupe.out_lint b/regress/mdoc/Dt/dupe.out_lint
index e3e7d2e0..3eb38562 100644
--- a/regress/mdoc/Dt/dupe.out_lint
+++ b/regress/mdoc/Dt/dupe.out_lint
@@ -1,3 +1,4 @@
mandoc: dupe.in:1:5: STYLE: Mdocdate missing: Dd August
mandoc: dupe.in:4:2: WARNING: duplicate prologue macro: Dt
mandoc: dupe.in:10:2: WARNING: skipping late title macro: Dt
+mandoc: dupe.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dt/fourargs.out_lint b/regress/mdoc/Dt/fourargs.out_lint
index 4534bb2d..4937f537 100644
--- a/regress/mdoc/Dt/fourargs.out_lint
+++ b/regress/mdoc/Dt/fourargs.out_lint
@@ -1,2 +1,3 @@
mandoc: fourargs.in:2:25: ERROR: skipping excess arguments: Dt ... bogus
mandoc: fourargs.in:1:5: STYLE: Mdocdate missing: Dd February
+mandoc: fourargs.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dt/late.out_lint b/regress/mdoc/Dt/late.out_lint
index 2901bd51..d270b013 100644
--- a/regress/mdoc/Dt/late.out_lint
+++ b/regress/mdoc/Dt/late.out_lint
@@ -1,3 +1,4 @@
mandoc: late.in:1:5: STYLE: Mdocdate missing: Dd August
mandoc: late.in:8:2: WARNING: skipping late title macro: Dt
mandoc: late.in: WARNING: missing manual title, using UNTITLED: EOF
+mandoc: late.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dt/missing.out_lint b/regress/mdoc/Dt/missing.out_lint
index a7a3a5e3..88c3df07 100644
--- a/regress/mdoc/Dt/missing.out_lint
+++ b/regress/mdoc/Dt/missing.out_lint
@@ -1,2 +1,3 @@
mandoc: missing.in:1:5: STYLE: Mdocdate missing: Dd August
mandoc: missing.in: WARNING: missing manual title, using UNTITLED: EOF
+mandoc: missing.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dt/noarg.out_lint b/regress/mdoc/Dt/noarg.out_lint
index 2f060904..f3e6b8b9 100644
--- a/regress/mdoc/Dt/noarg.out_lint
+++ b/regress/mdoc/Dt/noarg.out_lint
@@ -1,3 +1,4 @@
mandoc: noarg.in:2:2: WARNING: missing manual title, using UNTITLED: Dt
mandoc: noarg.in:2:2: WARNING: missing manual section, using "": Dt UNTITLED
mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd August
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dt/nobody.out_lint b/regress/mdoc/Dt/nobody.out_lint
index 3986d728..bc9c6c9c 100644
--- a/regress/mdoc/Dt/nobody.out_lint
+++ b/regress/mdoc/Dt/nobody.out_lint
@@ -1,2 +1,3 @@
mandoc: nobody.in:1:5: STYLE: Mdocdate missing: Dd June
+mandoc: nobody.in: STYLE: RCS id missing
mandoc: nobody.in: WARNING: no document body
diff --git a/regress/mdoc/Dt/nosec.out_lint b/regress/mdoc/Dt/nosec.out_lint
index 8cfbae81..08e37eda 100644
--- a/regress/mdoc/Dt/nosec.out_lint
+++ b/regress/mdoc/Dt/nosec.out_lint
@@ -1,2 +1,3 @@
mandoc: nosec.in:2:2: WARNING: missing manual section, using "": Dt DT-NOSEC
mandoc: nosec.in:1:5: STYLE: Mdocdate missing: Dd August
+mandoc: nosec.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dt/order.out_lint b/regress/mdoc/Dt/order.out_lint
index 60519940..718e3095 100644
--- a/regress/mdoc/Dt/order.out_lint
+++ b/regress/mdoc/Dt/order.out_lint
@@ -1,2 +1,3 @@
mandoc: order.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: order.in:3:2: WARNING: prologue macros out of order: Dt after Os
+mandoc: order.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Dv/noarg.out_lint b/regress/mdoc/Dv/noarg.out_lint
index bb59aad2..efea3f44 100644
--- a/regress/mdoc/Dv/noarg.out_lint
+++ b/regress/mdoc/Dv/noarg.out_lint
@@ -1,3 +1,4 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Dv
mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: noarg.in:9:9: STYLE: no blank before trailing delimiter: Dv NULL.
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Em/noarg.out_lint b/regress/mdoc/Em/noarg.out_lint
index 64aec8d4..f850a862 100644
--- a/regress/mdoc/Em/noarg.out_lint
+++ b/regress/mdoc/Em/noarg.out_lint
@@ -1,2 +1,3 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Em
mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd January
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Em/punct.out_lint b/regress/mdoc/Em/punct.out_lint
index 5209a7f3..df05892f 100644
--- a/regress/mdoc/Em/punct.out_lint
+++ b/regress/mdoc/Em/punct.out_lint
@@ -25,3 +25,4 @@ mandoc: punct.in:75:7: WARNING: skipping empty macro: Em
mandoc: punct.in:83:2: WARNING: skipping empty macro: Em
mandoc: punct.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: punct.in:86:6: STYLE: no blank before trailing delimiter: Em a.
+mandoc: punct.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Eo/break.out_lint b/regress/mdoc/Eo/break.out_lint
index 9df1a640..7f86b248 100644
--- a/regress/mdoc/Eo/break.out_lint
+++ b/regress/mdoc/Eo/break.out_lint
@@ -7,3 +7,4 @@ mandoc: break.in:51:2: WARNING: blocks badly nested: Bo breaks Eo
mandoc: break.in:59:2: WARNING: blocks badly nested: Bo breaks Eo
mandoc: break.in:66:2: WARNING: blocks badly nested: Bo breaks Eo
mandoc: break.in:1:5: STYLE: Mdocdate missing: Dd February
+mandoc: break.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Eo/obsolete.out_lint b/regress/mdoc/Eo/obsolete.out_lint
index 406a4b27..dc5b7509 100644
--- a/regress/mdoc/Eo/obsolete.out_lint
+++ b/regress/mdoc/Eo/obsolete.out_lint
@@ -5,3 +5,4 @@ mandoc: obsolete.in:12:2: WARNING: obsolete macro: En
mandoc: obsolete.in:14:2: WARNING: obsolete macro: En
mandoc: obsolete.in:17:2: WARNING: obsolete macro: Es
mandoc: obsolete.in:19:2: WARNING: obsolete macro: En
+mandoc: obsolete.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Eo/unclosed.out_lint b/regress/mdoc/Eo/unclosed.out_lint
index aea85636..2f631462 100644
--- a/regress/mdoc/Eo/unclosed.out_lint
+++ b/regress/mdoc/Eo/unclosed.out_lint
@@ -1,2 +1,3 @@
mandoc: unclosed.in:9:2: ERROR: appending missing end of block: Eo
mandoc: unclosed.in:1:5: STYLE: Mdocdate missing: Dd February
+mandoc: unclosed.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Er/noarg.out_lint b/regress/mdoc/Er/noarg.out_lint
index 7f454a5d..e042addf 100644
--- a/regress/mdoc/Er/noarg.out_lint
+++ b/regress/mdoc/Er/noarg.out_lint
@@ -1,3 +1,4 @@
mandoc: noarg.in:12:2: WARNING: skipping empty macro: Er
mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: noarg.in:10:8: STYLE: no blank before trailing delimiter: Er EIO.
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/regress/mdoc/Ev/noarg.out_lint b/regress/mdoc/Ev/noarg.out_lint
index 7377133d..9aa48210 100644
--- a/regress/mdoc/Ev/noarg.out_lint
+++ b/regress/mdoc/Ev/noarg.out_lint
@@ -1,3 +1,4 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Ev
mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: noarg.in:9:9: STYLE: no blank before trailing delimiter: Ev HOME.
+mandoc: noarg.in: STYLE: RCS id missing
diff --git a/roff.c b/roff.c
index 7f067952..55cc9cbb 100644
--- a/roff.c
+++ b/roff.c
@@ -1166,6 +1166,7 @@ roff_res(struct roff *r, struct buf *buf, int ln, int pos)
size_t maxl; /* expected length of the escape name */
size_t naml; /* actual length of the escape name */
enum mandoc_esc esc; /* type of the escape sequence */
+ enum mdoc_os os_e; /* kind of RCS id seen */
int inaml; /* length returned from mandoc_escape() */
int expand_count; /* to avoid infinite loops */
int npos; /* position in numeric expression */
@@ -1183,6 +1184,23 @@ roff_res(struct roff *r, struct buf *buf, int ln, int pos)
stesc++;
if (*stesc != '"' && *stesc != '#')
continue;
+
+ /* Comment found, look for RCS id. */
+
+ if ((cp = strstr(stesc, "$" "OpenBSD")) != NULL) {
+ os_e = MDOC_OS_OPENBSD;
+ cp += 8;
+ } else if ((cp = strstr(stesc, "$" "NetBSD")) != NULL) {
+ os_e = MDOC_OS_NETBSD;
+ cp += 7;
+ }
+ if (cp != NULL &&
+ isalnum((unsigned char)*cp) == 0 &&
+ strchr(cp, '$') != NULL)
+ r->man->meta.rcsids |= 1 << os_e;
+
+ /* Handle trailing whitespace. */
+
cp = strchr(stesc--, '\0') - 1;
if (*cp == '\n') {
done = 1;
diff --git a/roff.h b/roff.h
index 4912c328..f153f854 100644
--- a/roff.h
+++ b/roff.h
@@ -534,6 +534,7 @@ struct roff_meta {
char *name; /* Leading manual name. */
char *date; /* Normalized date. */
int hasbody; /* Document is not empty. */
+ int rcsids; /* Bits indexed by enum mdoc_os. */
enum mdoc_os os_e; /* Operating system. */
};