aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-06-11 19:37:00 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-06-11 19:37:00 +0000
commit565360053d62a3b5df9e9ccc0926c3e6340fef63 (patch)
treef4f2345878db47d41e74be046a7f42937eef4378
parentd686462c7725fa8c3cab24acbaf5242bc67ad61a (diff)
downloadmandoc-565360053d62a3b5df9e9ccc0926c3e6340fef63.tar.gz
mandoc-565360053d62a3b5df9e9ccc0926c3e6340fef63.tar.zst
mandoc-565360053d62a3b5df9e9ccc0926c3e6340fef63.zip
Style message about legacy man(7) date format in mdoc(7) documents
and operating system dependent messages about missing or unexpected Mdocdate; inspired by mdoclint(1).
-rw-r--r--libmandoc.h4
-rw-r--r--man_validate.c5
-rw-r--r--mandoc.c18
-rw-r--r--mandoc.h5
-rw-r--r--mdoc_validate.c34
-rw-r--r--read.c5
-rw-r--r--regress/char/space/esct-mdoc.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/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/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/long.out_lint1
-rw-r--r--regress/mdoc/Dd/manarg.out_lint2
-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--regress/mdoc/Ex/noname.out_lint1
-rw-r--r--regress/mdoc/Ex/nostd.out_lint1
-rw-r--r--regress/mdoc/Fd/empty.out_lint1
-rw-r--r--regress/mdoc/Fl/punct.out_lint1
-rw-r--r--regress/mdoc/Fo/noarg.out_lint1
-rw-r--r--regress/mdoc/Fo/nohead.out_lint1
-rw-r--r--regress/mdoc/Fo/obsolete.out_lint1
-rw-r--r--regress/mdoc/Fo/punct.out_lint1
-rw-r--r--regress/mdoc/Fo/warn.out_lint1
-rw-r--r--regress/mdoc/Ic/noarg.out_lint1
-rw-r--r--regress/mdoc/In/noarg.out_lint1
-rw-r--r--regress/mdoc/Lb/badargs.out_lint1
-rw-r--r--regress/mdoc/Li/punct.out_lint1
-rw-r--r--regress/mdoc/Lk/noarg.out_lint1
-rw-r--r--regress/mdoc/Ms/noarg.out_lint1
-rw-r--r--regress/mdoc/Mt/simple.out_lint1
-rw-r--r--regress/mdoc/Nd/broken.out_lint1
-rw-r--r--regress/mdoc/Nd/noarg.out_lint1
-rw-r--r--regress/mdoc/Nm/badNAME.out_lint1
-rw-r--r--regress/mdoc/Nm/badNAMEuse.out_lint1
-rw-r--r--regress/mdoc/Nm/break.out_lint1
-rw-r--r--regress/mdoc/Nm/broken.out_lint1
-rw-r--r--regress/mdoc/Nm/punct.out_lint1
-rw-r--r--regress/mdoc/No/punct.out_lint1
-rw-r--r--regress/mdoc/Ns/position.out_lint1
101 files changed, 147 insertions, 20 deletions
diff --git a/libmandoc.h b/libmandoc.h
index abc616a5..72893552 100644
--- a/libmandoc.h
+++ b/libmandoc.h
@@ -1,4 +1,4 @@
-/* $Id: libmandoc.h,v 1.67 2017/04/29 12:45:41 schwarze Exp $ */
+/* $Id: libmandoc.h,v 1.68 2017/06/11 19:37:00 schwarze Exp $ */
/*
* Copyright (c) 2009, 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2013, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -45,7 +45,7 @@ void mandoc_vmsg(enum mandocerr, struct mparse *,
int, int, const char *, ...)
__attribute__((__format__ (__printf__, 5, 6)));
char *mandoc_getarg(struct mparse *, char **, int, int *);
-char *mandoc_normdate(struct mparse *, char *, int, int);
+char *mandoc_normdate(struct roff_man *, char *, int, int);
int mandoc_eos(const char *, size_t);
int mandoc_strntoi(const char *, size_t, int);
const char *mandoc_a2msec(const char*);
diff --git a/man_validate.c b/man_validate.c
index ee74da7d..64f54a4f 100644
--- a/man_validate.c
+++ b/man_validate.c
@@ -167,7 +167,7 @@ check_root(CHKARGS)
man->meta.title = mandoc_strdup("");
man->meta.msec = mandoc_strdup("");
man->meta.date = man->quick ? mandoc_strdup("") :
- mandoc_normdate(man->parse, NULL, n->line, n->pos);
+ mandoc_normdate(man, NULL, n->line, n->pos);
}
}
@@ -323,8 +323,7 @@ post_TH(CHKARGS)
if (n && n->string && '\0' != n->string[0]) {
man->meta.date = man->quick ?
mandoc_strdup(n->string) :
- mandoc_normdate(man->parse, n->string,
- n->line, n->pos);
+ mandoc_normdate(man, n->string, n->line, n->pos);
} else {
man->meta.date = mandoc_strdup("");
mandoc_msg(MANDOCERR_DATE_MISSING, man->parse,
diff --git a/mandoc.c b/mandoc.c
index fc360def..003bc066 100644
--- a/mandoc.c
+++ b/mandoc.c
@@ -1,4 +1,4 @@
-/* $Id: mandoc.c,v 1.100 2017/06/02 19:21:23 schwarze Exp $ */
+/* $Id: mandoc.c,v 1.101 2017/06/11 19:37:01 schwarze Exp $ */
/*
* Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011-2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -28,8 +28,9 @@
#include <string.h>
#include <time.h>
-#include "mandoc.h"
#include "mandoc_aux.h"
+#include "mandoc.h"
+#include "roff.h"
#include "libmandoc.h"
static int a2time(time_t *, const char *, const char *);
@@ -518,14 +519,14 @@ fail:
}
char *
-mandoc_normdate(struct mparse *parse, char *in, int ln, int pos)
+mandoc_normdate(struct roff_man *man, char *in, int ln, int pos)
{
time_t t;
/* No date specified: use today's date. */
if (in == NULL || *in == '\0' || strcmp(in, "$" "Mdocdate$") == 0) {
- mandoc_msg(MANDOCERR_DATE_MISSING, parse, ln, pos, NULL);
+ mandoc_msg(MANDOCERR_DATE_MISSING, man->parse, ln, pos, NULL);
return time2a(time(NULL));
}
@@ -535,10 +536,13 @@ mandoc_normdate(struct mparse *parse, char *in, int ln, int pos)
a2time(&t, "%b %d, %Y", in))
return time2a(t);
- /* Do not warn about the legacy man(7) format. */
+ /* In man(7), do not warn about the legacy format. */
- if ( ! a2time(&t, "%Y-%m-%d", in))
- mandoc_msg(MANDOCERR_DATE_BAD, parse, ln, pos, in);
+ if (a2time(&t, "%Y-%m-%d", in) == 0)
+ mandoc_msg(MANDOCERR_DATE_BAD, man->parse, ln, pos, in);
+ else if (man->macroset == MACROSET_MDOC)
+ mandoc_vmsg(MANDOCERR_DATE_LEGACY, man->parse,
+ ln, pos, "Dd %s", in);
/* Use any non-mdoc(7) date verbatim. */
diff --git a/mandoc.h b/mandoc.h
index 55b88a63..7499a4d3 100644
--- a/mandoc.h
+++ b/mandoc.h
@@ -1,4 +1,4 @@
-/* $Id: mandoc.h,v 1.228 2017/06/11 17:16:51 schwarze Exp $ */
+/* $Id: mandoc.h,v 1.229 2017/06/11 19:37:01 schwarze Exp $ */
/*
* Copyright (c) 2010, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -46,6 +46,9 @@ enum mandocerr {
MANDOCERR_STYLE, /* ===== start of style suggestions ===== */
+ MANDOCERR_MDOCDATE, /* Mdocdate found: Dd ... */
+ MANDOCERR_MDOCDATE_MISSING, /* Mdocdate missing: Dd ... */
+ MANDOCERR_DATE_LEGACY, /* legacy man(7) date format: Dd ... */
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 0ba42e2a..77187315 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_validate.c,v 1.336 2017/06/11 17:16:51 schwarze Exp $ */
+/* $Id: mdoc_validate.c,v 1.337 2017/06/11 19:37:01 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -1790,9 +1790,8 @@ post_root(POST_ARGS)
/* Add missing prologue data. */
if (mdoc->meta.date == NULL)
- mdoc->meta.date = mdoc->quick ?
- mandoc_strdup("") :
- mandoc_normdate(mdoc->parse, NULL, 0, 0);
+ mdoc->meta.date = mdoc->quick ? mandoc_strdup("") :
+ mandoc_normdate(mdoc, NULL, 0, 0);
if (mdoc->meta.title == NULL) {
mandoc_msg(MANDOCERR_DT_NOTITLE,
@@ -2348,7 +2347,7 @@ post_dd(POST_ARGS)
if (n->child == NULL || n->child->string[0] == '\0') {
mdoc->meta.date = mdoc->quick ? mandoc_strdup("") :
- mandoc_normdate(mdoc->parse, NULL, n->line, n->pos);
+ mandoc_normdate(mdoc, NULL, n->line, n->pos);
return;
}
@@ -2357,7 +2356,7 @@ post_dd(POST_ARGS)
if (mdoc->quick)
mdoc->meta.date = datestr;
else {
- mdoc->meta.date = mandoc_normdate(mdoc->parse,
+ mdoc->meta.date = mandoc_normdate(mdoc,
datestr, n->line, n->pos);
free(datestr);
}
@@ -2569,6 +2568,29 @@ post_os(POST_ARGS)
out: mdoc->meta.os_e = strstr(mdoc->meta.os, "OpenBSD") != NULL ?
MDOC_OS_OPENBSD : strstr(mdoc->meta.os, "NetBSD") != NULL ?
MDOC_OS_NETBSD : MDOC_OS_OTHER;
+
+ /*
+ * This is the earliest point where we can check
+ * Mdocdate conventions because we don't know
+ * the operating system earlier.
+ */
+
+ while (n->tok != MDOC_Dd)
+ if ((n = n->prev) == NULL)
+ return;
+ if ((n = n->child) == NULL)
+ return;
+ if (strcmp(n->string, "$" "Mdocdate")) {
+ if (mdoc->meta.os_e == MDOC_OS_OPENBSD)
+ mandoc_vmsg(MANDOCERR_MDOCDATE_MISSING,
+ mdoc->parse, n->line, n->pos,
+ "Dd %s", n->string);
+ } else {
+ if (mdoc->meta.os_e == MDOC_OS_NETBSD)
+ mandoc_vmsg(MANDOCERR_MDOCDATE,
+ mdoc->parse, n->line, n->pos,
+ "Dd %s", n->string);
+ }
}
enum roff_sec
diff --git a/read.c b/read.c
index 82996eaf..f86d5700 100644
--- a/read.c
+++ b/read.c
@@ -1,4 +1,4 @@
-/* $Id: read.c,v 1.175 2017/06/11 17:16:51 schwarze Exp $ */
+/* $Id: read.c,v 1.176 2017/06/11 19:37:01 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -88,6 +88,9 @@ static const char * const mandocerrs[MANDOCERR_MAX] = {
"generic style suggestion",
+ "Mdocdate found",
+ "Mdocdate missing",
+ "legacy man(7) date format",
"useless macro",
"consider using OS macro",
"errnos out of order",
diff --git a/regress/char/space/esct-mdoc.out_lint b/regress/char/space/esct-mdoc.out_lint
index 85b9799f..43ea2b9f 100644
--- a/regress/char/space/esct-mdoc.out_lint
+++ b/regress/char/space/esct-mdoc.out_lint
@@ -1,3 +1,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
diff --git a/regress/char/space/tab.out_lint b/regress/char/space/tab.out_lint
index 6495de7f..c2f91ffa 100644
--- a/regress/char/space/tab.out_lint
+++ b/regress/char/space/tab.out_lint
@@ -1,3 +1,4 @@
+mandoc: tab.in:1:5: STYLE: Mdocdate missing: Dd April
mandoc: tab.in:10:2: WARNING: tab in filled text
mandoc: tab.in:12:3: WARNING: tab in filled text
mandoc: tab.in:14:4: WARNING: tab in filled text
diff --git a/regress/char/space/trailing-mdoc.out_lint b/regress/char/space/trailing-mdoc.out_lint
index a64141ea..364d3ad4 100644
--- a/regress/char/space/trailing-mdoc.out_lint
+++ b/regress/char/space/trailing-mdoc.out_lint
@@ -1,3 +1,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
diff --git a/regress/char/unicode/invalid.out_lint b/regress/char/unicode/invalid.out_lint
index c200a620..3fd9e4bc 100644
--- a/regress/char/unicode/invalid.out_lint
+++ b/regress/char/unicode/invalid.out_lint
@@ -7,3 +7,4 @@ mandoc: invalid.in:13:35: WARNING: invalid escape sequence: \[u1000000]
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
diff --git a/regress/eqn/define/infinite.out_lint b/regress/eqn/define/infinite.out_lint
index 8843358a..1a0ca671 100644
--- a/regress/eqn/define/infinite.out_lint
+++ b/regress/eqn/define/infinite.out_lint
@@ -2,3 +2,4 @@ mandoc: infinite.in:9:2: ERROR: input stack limit exceeded, infinite loop?
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
diff --git a/regress/eqn/define/invalid.out_lint b/regress/eqn/define/invalid.out_lint
index b8b9858d..27420ca8 100644
--- a/regress/eqn/define/invalid.out_lint
+++ b/regress/eqn/define/invalid.out_lint
@@ -3,3 +3,4 @@ mandoc: invalid.in:15:2: WARNING: skipping empty request: define bruch
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
diff --git a/regress/eqn/over/noarg.out_lint b/regress/eqn/over/noarg.out_lint
index 34cc2490..c180e2e8 100644
--- a/regress/eqn/over/noarg.out_lint
+++ b/regress/eqn/over/noarg.out_lint
@@ -1 +1,2 @@
mandoc: noarg.in:9:2: WARNING: missing eqn box, using "": over
+mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd January
diff --git a/regress/mdoc/Ad/noarg.out_lint b/regress/mdoc/Ad/noarg.out_lint
index 01d37fa1..2ca0c2e2 100644
--- a/regress/mdoc/Ad/noarg.out_lint
+++ b/regress/mdoc/Ad/noarg.out_lint
@@ -1,2 +1,3 @@
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.
diff --git a/regress/mdoc/An/break.out_lint b/regress/mdoc/An/break.out_lint
index 7c88ccea..165a2267 100644
--- a/regress/mdoc/An/break.out_lint
+++ b/regress/mdoc/An/break.out_lint
@@ -1,3 +1,4 @@
+mandoc: break.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: break.in:14:2: WARNING: skipping empty macro: An
mandoc: break.in:16:2: WARNING: skipping empty macro: An
mandoc: break.in:18:12: WARNING: skipping duplicate argument: An -nosplit
diff --git a/regress/mdoc/Aq/empty.out_lint b/regress/mdoc/Aq/empty.out_lint
index 78d88141..7e74ce97 100644
--- a/regress/mdoc/Aq/empty.out_lint
+++ b/regress/mdoc/Aq/empty.out_lint
@@ -1,2 +1,3 @@
+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:
diff --git a/regress/mdoc/Ar/punct.out_lint b/regress/mdoc/Ar/punct.out_lint
index 73e9ca6e..bf820be7 100644
--- a/regress/mdoc/Ar/punct.out_lint
+++ b/regress/mdoc/Ar/punct.out_lint
@@ -1 +1,2 @@
+mandoc: punct.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: punct.in:45:8: STYLE: no blank before trailing delimiter: Ar arg.
diff --git a/regress/mdoc/At/invalid.out_lint b/regress/mdoc/At/invalid.out_lint
index 00744a14..ab40693b 100644
--- a/regress/mdoc/At/invalid.out_lint
+++ b/regress/mdoc/At/invalid.out_lint
@@ -1 +1,2 @@
+mandoc: invalid.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: invalid.in:15:5: WARNING: unknown AT&T UNIX version: At murks
diff --git a/regress/mdoc/Bd/badargs.out_lint b/regress/mdoc/Bd/badargs.out_lint
index 10c9cb02..44745f66 100644
--- a/regress/mdoc/Bd/badargs.out_lint
+++ b/regress/mdoc/Bd/badargs.out_lint
@@ -1,5 +1,6 @@
mandoc: badargs.in:12:2: ERROR: skipping all arguments: Ed tail argument
mandoc: badargs.in:19:16: ERROR: skipping excess arguments: Bd ... -bogus
+mandoc: badargs.in:1:5: STYLE: Mdocdate missing: Dd October
mandoc: badargs.in:9:13: WARNING: empty argument, using 0n: Bd -offset
mandoc: badargs.in:14:34: WARNING: duplicate argument: Bd -compact
mandoc: badargs.in:14:43: WARNING: duplicate argument: Bd -offset 6n
diff --git a/regress/mdoc/Bd/beforeNAME.out_lint b/regress/mdoc/Bd/beforeNAME.out_lint
index a5659948..cd7d5e8f 100644
--- a/regress/mdoc/Bd/beforeNAME.out_lint
+++ b/regress/mdoc/Bd/beforeNAME.out_lint
@@ -1 +1,2 @@
+mandoc: beforeNAME.in:1:5: STYLE: Mdocdate missing: Dd July
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 fde72ad0..88d0fa85 100644
--- a/regress/mdoc/Bd/blank.out_lint
+++ b/regress/mdoc/Bd/blank.out_lint
@@ -5,4 +5,5 @@ mandoc: blank.in:21:36: WARNING: whitespace at end of input line
mandoc: blank.in:22:37: WARNING: whitespace at end of input line
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
diff --git a/regress/mdoc/Bd/break.out_lint b/regress/mdoc/Bd/break.out_lint
index aede3c30..c97d00e1 100644
--- a/regress/mdoc/Bd/break.out_lint
+++ b/regress/mdoc/Bd/break.out_lint
@@ -1 +1,2 @@
mandoc: break.in:12:2: WARNING: blocks badly nested: Bd breaks Bo
+mandoc: break.in:1:5: STYLE: Mdocdate missing: Dd November
diff --git a/regress/mdoc/Bd/broken.out_lint b/regress/mdoc/Bd/broken.out_lint
index 44688afa..41df6784 100644
--- a/regress/mdoc/Bd/broken.out_lint
+++ b/regress/mdoc/Bd/broken.out_lint
@@ -1 +1,2 @@
mandoc: broken.in:12:2: WARNING: blocks badly nested: Bo breaks Bd
+mandoc: broken.in:1:5: STYLE: Mdocdate missing: Dd November
diff --git a/regress/mdoc/Bd/nested.out_lint b/regress/mdoc/Bd/nested.out_lint
index 5476f7d7..3616ae1f 100644
--- a/regress/mdoc/Bd/nested.out_lint
+++ b/regress/mdoc/Bd/nested.out_lint
@@ -1,2 +1,3 @@
+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
diff --git a/regress/mdoc/Bd/unclosed.out_lint b/regress/mdoc/Bd/unclosed.out_lint
index 8741513e..c379ecd5 100644
--- a/regress/mdoc/Bd/unclosed.out_lint
+++ b/regress/mdoc/Bd/unclosed.out_lint
@@ -1 +1,2 @@
mandoc: unclosed.in:9:2: ERROR: appending missing end of block: Bd
+mandoc: unclosed.in:1:5: STYLE: Mdocdate missing: Dd July
diff --git a/regress/mdoc/Bf/badargs.out_lint b/regress/mdoc/Bf/badargs.out_lint
index cdca9c02..688ee4ba 100644
--- a/regress/mdoc/Bf/badargs.out_lint
+++ b/regress/mdoc/Bf/badargs.out_lint
@@ -1,3 +1,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
diff --git a/regress/mdoc/Bf/break.out_lint b/regress/mdoc/Bf/break.out_lint
index b704d12c..49ee2144 100644
--- a/regress/mdoc/Bf/break.out_lint
+++ b/regress/mdoc/Bf/break.out_lint
@@ -1 +1,2 @@
mandoc: break.in:13:2: WARNING: blocks badly nested: Bf breaks Bo
+mandoc: break.in:1:5: STYLE: Mdocdate missing: Dd November
diff --git a/regress/mdoc/Bf/broken.out_lint b/regress/mdoc/Bf/broken.out_lint
index e4f53d53..e977b06f 100644
--- a/regress/mdoc/Bf/broken.out_lint
+++ b/regress/mdoc/Bf/broken.out_lint
@@ -1 +1,2 @@
mandoc: broken.in:12:2: WARNING: blocks badly nested: Bo breaks Bf
+mandoc: broken.in:1:5: STYLE: Mdocdate missing: Dd November
diff --git a/regress/mdoc/Bf/multiargs.out_lint b/regress/mdoc/Bf/multiargs.out_lint
index 031b1e01..6a140622 100644
--- a/regress/mdoc/Bf/multiargs.out_lint
+++ b/regress/mdoc/Bf/multiargs.out_lint
@@ -1,3 +1,4 @@
+mandoc: multiargs.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: multiargs.in:13:15: ERROR: skipping excess arguments: Bf ... Em
mandoc: multiargs.in:17:15: ERROR: skipping excess arguments: Bf ... badarg
mandoc: multiargs.in:21:8: ERROR: skipping excess arguments: Bf ... -emphasis
diff --git a/regress/mdoc/Bk/badarg.out_lint b/regress/mdoc/Bk/badarg.out_lint
index 16918ae5..b56bddee 100644
--- a/regress/mdoc/Bk/badarg.out_lint
+++ b/regress/mdoc/Bk/badarg.out_lint
@@ -3,4 +3,5 @@ mandoc: badarg.in:22:5: ERROR: skipping excess arguments: Bk ... -lines
mandoc: badarg.in:24:2: ERROR: skipping all arguments: Ek tail argument
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
diff --git a/regress/mdoc/Bk/broken.out_lint b/regress/mdoc/Bk/broken.out_lint
index a6596506..4383d677 100644
--- a/regress/mdoc/Bk/broken.out_lint
+++ b/regress/mdoc/Bk/broken.out_lint
@@ -1,2 +1,3 @@
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
diff --git a/regress/mdoc/Bl/badargs.out_lint b/regress/mdoc/Bl/badargs.out_lint
index ac9ee13b..f4247a4a 100644
--- a/regress/mdoc/Bl/badargs.out_lint
+++ b/regress/mdoc/Bl/badargs.out_lint
@@ -1,4 +1,5 @@
mandoc: badargs.in:78:2: ERROR: skipping all arguments: El tail argument
+mandoc: badargs.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: badargs.in:9:13: WARNING: empty argument, using 0n: Bl -offset
mandoc: badargs.in:14:13: WARNING: empty argument, using 0n: Bl -width
mandoc: badargs.in:18:11: WARNING: empty argument, using 0n: Bl -width
diff --git a/regress/mdoc/Bl/bareIt.out_lint b/regress/mdoc/Bl/bareIt.out_lint
index 8e06273b..db7d0dcc 100644
--- a/regress/mdoc/Bl/bareIt.out_lint
+++ b/regress/mdoc/Bl/bareIt.out_lint
@@ -1,3 +1,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
diff --git a/regress/mdoc/Bl/bareTa.out_lint b/regress/mdoc/Bl/bareTa.out_lint
index 19cb4ebb..789daba7 100644
--- a/regress/mdoc/Bl/bareTa.out_lint
+++ b/regress/mdoc/Bl/bareTa.out_lint
@@ -2,4 +2,5 @@ mandoc: bareTa.in:9:2: ERROR: skipping column outside column list: Ta
mandoc: bareTa.in:13:2: ERROR: skipping column outside column list: Ta
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
diff --git a/regress/mdoc/Bl/break.out_lint b/regress/mdoc/Bl/break.out_lint
index fe099a47..4530b0ce 100644
--- a/regress/mdoc/Bl/break.out_lint
+++ b/regress/mdoc/Bl/break.out_lint
@@ -14,5 +14,6 @@ mandoc: break.in:73:2: ERROR: inserting missing end of block: Sh breaks Bo
mandoc: break.in:76:2: WARNING: blocks badly nested: Bl breaks Bo
mandoc: break.in:75:25: ERROR: appending missing end of block: Bo
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
diff --git a/regress/mdoc/Bl/breakingIt.out_lint b/regress/mdoc/Bl/breakingIt.out_lint
index 16a0db6e..c0744ad5 100644
--- a/regress/mdoc/Bl/breakingIt.out_lint
+++ b/regress/mdoc/Bl/breakingIt.out_lint
@@ -6,6 +6,7 @@ mandoc: breakingIt.in:44:2: ERROR: inserting missing end of block: It breaks Bd
mandoc: breakingIt.in:51:2: ERROR: inserting missing end of block: It breaks Bd
mandoc: breakingIt.in:59:2: ERROR: inserting missing end of block: It breaks Bd
mandoc: breakingIt.in:67:2: ERROR: inserting missing end of block: It breaks Bd
+mandoc: breakingIt.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: breakingIt.in:10:1: WARNING: moving content out of list: text
mandoc: breakingIt.in:11:2: WARNING: moving content out of list: Ao
mandoc: breakingIt.in:17:1: WARNING: moving content out of list: text
diff --git a/regress/mdoc/Bl/broken.out_lint b/regress/mdoc/Bl/broken.out_lint
index 477b7fbc..044cb1df 100644
--- a/regress/mdoc/Bl/broken.out_lint
+++ b/regress/mdoc/Bl/broken.out_lint
@@ -1,3 +1,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
diff --git a/regress/mdoc/Bl/column.out_lint b/regress/mdoc/Bl/column.out_lint
index eed080bd..3652fba1 100644
--- a/regress/mdoc/Bl/column.out_lint
+++ b/regress/mdoc/Bl/column.out_lint
@@ -1,3 +1,4 @@
+mandoc: column.in:1:5: STYLE: Mdocdate missing: Dd October
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
diff --git a/regress/mdoc/Bl/empty.out_lint b/regress/mdoc/Bl/empty.out_lint
index 3df60e6d..e415f2e0 100644
--- a/regress/mdoc/Bl/empty.out_lint
+++ b/regress/mdoc/Bl/empty.out_lint
@@ -1,3 +1,4 @@
+mandoc: empty.in:1:5: STYLE: Mdocdate missing: Dd January
mandoc: empty.in:9:2: WARNING: empty block: Bl
mandoc: empty.in:12:2: WARNING: empty block: Bl
mandoc: empty.in:15:2: WARNING: empty block: Bl
diff --git a/regress/mdoc/Bl/emptyhead.out_lint b/regress/mdoc/Bl/emptyhead.out_lint
index 2d158b72..6b431c1e 100644
--- a/regress/mdoc/Bl/emptyhead.out_lint
+++ b/regress/mdoc/Bl/emptyhead.out_lint
@@ -1,3 +1,4 @@
+mandoc: emptyhead.in:1:5: STYLE: Mdocdate missing: Dd July
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
diff --git a/regress/mdoc/Bl/emptyitem.out_lint b/regress/mdoc/Bl/emptyitem.out_lint
index 1dd9dfea..fd43fac5 100644
--- a/regress/mdoc/Bl/emptyitem.out_lint
+++ b/regress/mdoc/Bl/emptyitem.out_lint
@@ -1,3 +1,4 @@
+mandoc: emptyitem.in:1:5: STYLE: Mdocdate missing: Dd August
mandoc: emptyitem.in:10:2: ERROR: skipping all arguments: It head argument
mandoc: emptyitem.in:12:2: WARNING: empty list item: Bl -bullet It
mandoc: emptyitem.in:20:2: WARNING: empty list item: Bl -dash It
diff --git a/regress/mdoc/Bl/emptytag.out_lint b/regress/mdoc/Bl/emptytag.out_lint
index 72d9d287..f45d01a2 100644
--- a/regress/mdoc/Bl/emptytag.out_lint
+++ b/regress/mdoc/Bl/emptytag.out_lint
@@ -1 +1,2 @@
+mandoc: emptytag.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: emptytag.in:12:2: WARNING: empty head in list item: Bl -tag It
diff --git a/regress/mdoc/Bl/noIt.out_lint b/regress/mdoc/Bl/noIt.out_lint
index efe0eeea..fed447e7 100644
--- a/regress/mdoc/Bl/noIt.out_lint
+++ b/regress/mdoc/Bl/noIt.out_lint
@@ -1,3 +1,4 @@
+mandoc: noIt.in:1:5: STYLE: Mdocdate missing: Dd October
mandoc: noIt.in:9:1: WARNING: moving content out of list: text
mandoc: noIt.in:10:2: WARNING: moving content out of list: Em
mandoc: noIt.in:15:1: WARNING: moving content out of list: text
diff --git a/regress/mdoc/Bl/notype.out_lint b/regress/mdoc/Bl/notype.out_lint
index cf6fb63a..1664a34e 100644
--- a/regress/mdoc/Bl/notype.out_lint
+++ b/regress/mdoc/Bl/notype.out_lint
@@ -1,4 +1,5 @@
mandoc: notype.in:12:2: ERROR: skipping all arguments: El tail argument
+mandoc: notype.in:1:5: STYLE: Mdocdate missing: Dd August
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
diff --git a/regress/mdoc/Bl/tag.out_lint b/regress/mdoc/Bl/tag.out_lint
index 01a4a492..284629f4 100644
--- a/regress/mdoc/Bl/tag.out_lint
+++ b/regress/mdoc/Bl/tag.out_lint
@@ -1 +1,2 @@
+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
diff --git a/regress/mdoc/Brq/empty.out_lint b/regress/mdoc/Brq/empty.out_lint
index 15ca12f6..fc63637b 100644
--- a/regress/mdoc/Brq/empty.out_lint
+++ b/regress/mdoc/Brq/empty.out_lint
@@ -1,2 +1,3 @@
+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)
diff --git a/regress/mdoc/Bx/args.out_lint b/regress/mdoc/Bx/args.out_lint
index 4f5dbcd9..9ccc9a88 100644
--- a/regress/mdoc/Bx/args.out_lint
+++ b/regress/mdoc/Bx/args.out_lint
@@ -1 +1,2 @@
+mandoc: args.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: args.in:15:9: STYLE: no blank before trailing delimiter: Bx nett.
diff --git a/regress/mdoc/Cd/noarg.out_lint b/regress/mdoc/Cd/noarg.out_lint
index 41599d9b..1ec1484c 100644
--- a/regress/mdoc/Cd/noarg.out_lint
+++ b/regress/mdoc/Cd/noarg.out_lint
@@ -1 +1,2 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Cd
+mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd January
diff --git a/regress/mdoc/Cm/noarg.out_lint b/regress/mdoc/Cm/noarg.out_lint
index 6568e687..e7dc2932 100644
--- a/regress/mdoc/Cm/noarg.out_lint
+++ b/regress/mdoc/Cm/noarg.out_lint
@@ -1,3 +1,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.
diff --git a/regress/mdoc/D1/spacing.out_lint b/regress/mdoc/D1/spacing.out_lint
index 08177734..cc3e4376 100644
--- a/regress/mdoc/D1/spacing.out_lint
+++ b/regress/mdoc/D1/spacing.out_lint
@@ -1 +1,2 @@
+mandoc: spacing.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: spacing.in:11:2: WARNING: empty block: D1
diff --git a/regress/mdoc/Db/args.out_lint b/regress/mdoc/Db/args.out_lint
index e0eb44ae..b91a8ee3 100644
--- a/regress/mdoc/Db/args.out_lint
+++ b/regress/mdoc/Db/args.out_lint
@@ -1,3 +1,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
diff --git a/regress/mdoc/Dd/badarg.out_lint b/regress/mdoc/Dd/badarg.out_lint
index 0ce4632e..3ad546cf 100644
--- a/regress/mdoc/Dd/badarg.out_lint
+++ b/regress/mdoc/Dd/badarg.out_lint
@@ -1 +1,2 @@
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
diff --git a/regress/mdoc/Dd/dupe.out_lint b/regress/mdoc/Dd/dupe.out_lint
index 8107e867..3b9a9751 100644
--- a/regress/mdoc/Dd/dupe.out_lint
+++ b/regress/mdoc/Dd/dupe.out_lint
@@ -1,2 +1,3 @@
+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
diff --git a/regress/mdoc/Dd/long.out_lint b/regress/mdoc/Dd/long.out_lint
index d74ed9e2..ec549143 100644
--- a/regress/mdoc/Dd/long.out_lint
+++ b/regress/mdoc/Dd/long.out_lint
@@ -1 +1,2 @@
mandoc: long.in:1:2: WARNING: cannot parse date, using it verbatim: 1234567890123456789012345678901234567890123456789012345678901234567890123456789
+mandoc: long.in:1:5: STYLE: Mdocdate missing: Dd 1234567890123456789012345678901234567890123456789012345678901234567890123456789
diff --git a/regress/mdoc/Dd/manarg.out_lint b/regress/mdoc/Dd/manarg.out_lint
index e69de29b..3f3ecf71 100644
--- a/regress/mdoc/Dd/manarg.out_lint
+++ b/regress/mdoc/Dd/manarg.out_lint
@@ -0,0 +1,2 @@
+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
diff --git a/regress/mdoc/Dd/order.out_lint b/regress/mdoc/Dd/order.out_lint
index 92554a18..3f0cb911 100644
--- a/regress/mdoc/Dd/order.out_lint
+++ b/regress/mdoc/Dd/order.out_lint
@@ -1 +1,2 @@
mandoc: order.in:2:2: WARNING: prologue macros out of order: Dd after Dt
+mandoc: order.in:2:5: STYLE: Mdocdate missing: Dd August
diff --git a/regress/mdoc/Dl/spacing.out_lint b/regress/mdoc/Dl/spacing.out_lint
index 7ee4919d..7d87c4ff 100644
--- a/regress/mdoc/Dl/spacing.out_lint
+++ b/regress/mdoc/Dl/spacing.out_lint
@@ -1 +1,2 @@
+mandoc: spacing.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: spacing.in:11:2: WARNING: empty block: Dl
diff --git a/regress/mdoc/Dq/empty.out_lint b/regress/mdoc/Dq/empty.out_lint
index e69de29b..5abe9323 100644
--- a/regress/mdoc/Dq/empty.out_lint
+++ b/regress/mdoc/Dq/empty.out_lint
@@ -0,0 +1 @@
+mandoc: empty.in:1:5: STYLE: Mdocdate missing: Dd June
diff --git a/regress/mdoc/Dt/badsec.out_lint b/regress/mdoc/Dt/badsec.out_lint
index b78a0333..3d469dee 100644
--- a/regress/mdoc/Dt/badsec.out_lint
+++ b/regress/mdoc/Dt/badsec.out_lint
@@ -1 +1,2 @@
mandoc: badsec.in:2:15: WARNING: unknown manual section: Dt ... foo
+mandoc: badsec.in:1:5: STYLE: Mdocdate missing: Dd June
diff --git a/regress/mdoc/Dt/case.out_lint b/regress/mdoc/Dt/case.out_lint
index cf85b606..921f8613 100644
--- a/regress/mdoc/Dt/case.out_lint
+++ b/regress/mdoc/Dt/case.out_lint
@@ -1 +1,2 @@
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
diff --git a/regress/mdoc/Dt/dupe.out_lint b/regress/mdoc/Dt/dupe.out_lint
index b355bed0..e3e7d2e0 100644
--- a/regress/mdoc/Dt/dupe.out_lint
+++ b/regress/mdoc/Dt/dupe.out_lint
@@ -1,2 +1,3 @@
+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
diff --git a/regress/mdoc/Dt/fourargs.out_lint b/regress/mdoc/Dt/fourargs.out_lint
index 0d4d1494..4534bb2d 100644
--- a/regress/mdoc/Dt/fourargs.out_lint
+++ b/regress/mdoc/Dt/fourargs.out_lint
@@ -1 +1,2 @@
mandoc: fourargs.in:2:25: ERROR: skipping excess arguments: Dt ... bogus
+mandoc: fourargs.in:1:5: STYLE: Mdocdate missing: Dd February
diff --git a/regress/mdoc/Dt/late.out_lint b/regress/mdoc/Dt/late.out_lint
index 4228c6ae..2901bd51 100644
--- a/regress/mdoc/Dt/late.out_lint
+++ b/regress/mdoc/Dt/late.out_lint
@@ -1,2 +1,3 @@
+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
diff --git a/regress/mdoc/Dt/missing.out_lint b/regress/mdoc/Dt/missing.out_lint
index 283a60d5..a7a3a5e3 100644
--- a/regress/mdoc/Dt/missing.out_lint
+++ b/regress/mdoc/Dt/missing.out_lint
@@ -1 +1,2 @@
+mandoc: missing.in:1:5: STYLE: Mdocdate missing: Dd August
mandoc: missing.in: WARNING: missing manual title, using UNTITLED: EOF
diff --git a/regress/mdoc/Dt/noarg.out_lint b/regress/mdoc/Dt/noarg.out_lint
index b1fafbe4..2f060904 100644
--- a/regress/mdoc/Dt/noarg.out_lint
+++ b/regress/mdoc/Dt/noarg.out_lint
@@ -1,2 +1,3 @@
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
diff --git a/regress/mdoc/Dt/nobody.out_lint b/regress/mdoc/Dt/nobody.out_lint
index f5439fcd..3986d728 100644
--- a/regress/mdoc/Dt/nobody.out_lint
+++ b/regress/mdoc/Dt/nobody.out_lint
@@ -1 +1,2 @@
+mandoc: nobody.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: nobody.in: WARNING: no document body
diff --git a/regress/mdoc/Dt/nosec.out_lint b/regress/mdoc/Dt/nosec.out_lint
index bddda2d7..8cfbae81 100644
--- a/regress/mdoc/Dt/nosec.out_lint
+++ b/regress/mdoc/Dt/nosec.out_lint
@@ -1 +1,2 @@
mandoc: nosec.in:2:2: WARNING: missing manual section, using "": Dt DT-NOSEC
+mandoc: nosec.in:1:5: STYLE: Mdocdate missing: Dd August
diff --git a/regress/mdoc/Dt/order.out_lint b/regress/mdoc/Dt/order.out_lint
index 5700ef89..60519940 100644
--- a/regress/mdoc/Dt/order.out_lint
+++ b/regress/mdoc/Dt/order.out_lint
@@ -1 +1,2 @@
+mandoc: order.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: order.in:3:2: WARNING: prologue macros out of order: Dt after Os
diff --git a/regress/mdoc/Dv/noarg.out_lint b/regress/mdoc/Dv/noarg.out_lint
index 6e6ad765..bb59aad2 100644
--- a/regress/mdoc/Dv/noarg.out_lint
+++ b/regress/mdoc/Dv/noarg.out_lint
@@ -1,2 +1,3 @@
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.
diff --git a/regress/mdoc/Em/noarg.out_lint b/regress/mdoc/Em/noarg.out_lint
index dfc13809..64aec8d4 100644
--- a/regress/mdoc/Em/noarg.out_lint
+++ b/regress/mdoc/Em/noarg.out_lint
@@ -1 +1,2 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Em
+mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd January
diff --git a/regress/mdoc/Em/punct.out_lint b/regress/mdoc/Em/punct.out_lint
index 6408d240..5209a7f3 100644
--- a/regress/mdoc/Em/punct.out_lint
+++ b/regress/mdoc/Em/punct.out_lint
@@ -23,4 +23,5 @@ mandoc: punct.in:71:7: WARNING: skipping empty macro: Em
mandoc: punct.in:74:7: WARNING: skipping empty macro: Em
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.
diff --git a/regress/mdoc/Eo/break.out_lint b/regress/mdoc/Eo/break.out_lint
index e3608386..9df1a640 100644
--- a/regress/mdoc/Eo/break.out_lint
+++ b/regress/mdoc/Eo/break.out_lint
@@ -6,3 +6,4 @@ mandoc: break.in:44:2: WARNING: blocks badly nested: Bo breaks Eo
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
diff --git a/regress/mdoc/Eo/obsolete.out_lint b/regress/mdoc/Eo/obsolete.out_lint
index d9577b9c..406a4b27 100644
--- a/regress/mdoc/Eo/obsolete.out_lint
+++ b/regress/mdoc/Eo/obsolete.out_lint
@@ -1,3 +1,4 @@
+mandoc: obsolete.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: obsolete.in:8:2: WARNING: obsolete macro: En
mandoc: obsolete.in:10:2: WARNING: obsolete macro: Es
mandoc: obsolete.in:12:2: WARNING: obsolete macro: En
diff --git a/regress/mdoc/Eo/unclosed.out_lint b/regress/mdoc/Eo/unclosed.out_lint
index 49dae22e..aea85636 100644
--- a/regress/mdoc/Eo/unclosed.out_lint
+++ b/regress/mdoc/Eo/unclosed.out_lint
@@ -1 +1,2 @@
mandoc: unclosed.in:9:2: ERROR: appending missing end of block: Eo
+mandoc: unclosed.in:1:5: STYLE: Mdocdate missing: Dd February
diff --git a/regress/mdoc/Er/noarg.out_lint b/regress/mdoc/Er/noarg.out_lint
index 46b31363..7f454a5d 100644
--- a/regress/mdoc/Er/noarg.out_lint
+++ b/regress/mdoc/Er/noarg.out_lint
@@ -1,2 +1,3 @@
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.
diff --git a/regress/mdoc/Ev/noarg.out_lint b/regress/mdoc/Ev/noarg.out_lint
index c08c135b..7377133d 100644
--- a/regress/mdoc/Ev/noarg.out_lint
+++ b/regress/mdoc/Ev/noarg.out_lint
@@ -1,2 +1,3 @@
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.
diff --git a/regress/mdoc/Ex/noname.out_lint b/regress/mdoc/Ex/noname.out_lint
index c844104e..c9cf240b 100644
--- a/regress/mdoc/Ex/noname.out_lint
+++ b/regress/mdoc/Ex/noname.out_lint
@@ -1,2 +1,3 @@
+mandoc: noname.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: noname.in:5:2: ERROR: missing manual name, using "": Nm
mandoc: noname.in:9:2: WARNING: missing utility name, using "": Ex
diff --git a/regress/mdoc/Ex/nostd.out_lint b/regress/mdoc/Ex/nostd.out_lint
index 0aaaa123..a19cce8f 100644
--- a/regress/mdoc/Ex/nostd.out_lint
+++ b/regress/mdoc/Ex/nostd.out_lint
@@ -1,3 +1,4 @@
+mandoc: nostd.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: nostd.in:9:2: WARNING: missing -std argument, adding it: Ex
mandoc: nostd.in:12:2: WARNING: missing -std argument, adding it: Ex
mandoc: nostd.in:15:2: WARNING: missing -std argument, adding it: Ex
diff --git a/regress/mdoc/Fd/empty.out_lint b/regress/mdoc/Fd/empty.out_lint
index 15f76270..c0ffefcd 100644
--- a/regress/mdoc/Fd/empty.out_lint
+++ b/regress/mdoc/Fd/empty.out_lint
@@ -1,2 +1,3 @@
mandoc: empty.in:9:2: WARNING: skipping empty macro: Fd
mandoc: empty.in:13:2: WARNING: skipping empty macro: Fd
+mandoc: empty.in:1:5: STYLE: Mdocdate missing: Dd February
diff --git a/regress/mdoc/Fl/punct.out_lint b/regress/mdoc/Fl/punct.out_lint
index a792bbf7..6da8a24a 100644
--- a/regress/mdoc/Fl/punct.out_lint
+++ b/regress/mdoc/Fl/punct.out_lint
@@ -1 +1,2 @@
+mandoc: punct.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: punct.in:45:6: STYLE: no blank before trailing delimiter: Fl a.
diff --git a/regress/mdoc/Fo/noarg.out_lint b/regress/mdoc/Fo/noarg.out_lint
index 4c72b01d..d8317c9e 100644
--- a/regress/mdoc/Fo/noarg.out_lint
+++ b/regress/mdoc/Fo/noarg.out_lint
@@ -7,4 +7,5 @@ mandoc: noarg.in:37:2: WARNING: skipping empty macro: Ft
mandoc: noarg.in:39:2: WARNING: skipping empty macro: Fa
mandoc: noarg.in:42:2: WARNING: skipping empty macro: Ft
mandoc: noarg.in:43:2: WARNING: skipping empty macro: Fn
+mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: noarg.in:12:10: ERROR: skipping excess arguments: Fo ... bogus
diff --git a/regress/mdoc/Fo/nohead.out_lint b/regress/mdoc/Fo/nohead.out_lint
index aa0d5242..363e75b3 100644
--- a/regress/mdoc/Fo/nohead.out_lint
+++ b/regress/mdoc/Fo/nohead.out_lint
@@ -1 +1,2 @@
+mandoc: nohead.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: nohead.in:10:2: WARNING: missing function name, using "": Fo
diff --git a/regress/mdoc/Fo/obsolete.out_lint b/regress/mdoc/Fo/obsolete.out_lint
index c1ad3d85..20428eac 100644
--- a/regress/mdoc/Fo/obsolete.out_lint
+++ b/regress/mdoc/Fo/obsolete.out_lint
@@ -1,2 +1,3 @@
+mandoc: obsolete.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: obsolete.in:9:2: WARNING: obsolete macro: Ot
mandoc: obsolete.in:12:2: WARNING: obsolete macro: Fr
diff --git a/regress/mdoc/Fo/punct.out_lint b/regress/mdoc/Fo/punct.out_lint
index a39cf959..1188d6c2 100644
--- a/regress/mdoc/Fo/punct.out_lint
+++ b/regress/mdoc/Fo/punct.out_lint
@@ -1,3 +1,4 @@
+mandoc: punct.in:1:5: STYLE: Mdocdate missing: Dd May
mandoc: punct.in:9:8: STYLE: no blank before trailing delimiter: Fn sin.
mandoc: punct.in:11:12: STYLE: no blank before trailing delimiter: Fa y:
mandoc: punct.in:13:18: STYLE: no blank before trailing delimiter: Ft float:
diff --git a/regress/mdoc/Fo/warn.out_lint b/regress/mdoc/Fo/warn.out_lint
index 09fc534f..e72e3390 100644
--- a/regress/mdoc/Fo/warn.out_lint
+++ b/regress/mdoc/Fo/warn.out_lint
@@ -1,2 +1,3 @@
+mandoc: warn.in:1:5: STYLE: Mdocdate missing: Dd October
mandoc: warn.in:9:8: WARNING: parenthesis in function name: sin()
mandoc: warn.in:13:19: WARNING: comma in function argument: double y, double x
diff --git a/regress/mdoc/Ic/noarg.out_lint b/regress/mdoc/Ic/noarg.out_lint
index 9520793e..99960de4 100644
--- a/regress/mdoc/Ic/noarg.out_lint
+++ b/regress/mdoc/Ic/noarg.out_lint
@@ -1,2 +1,3 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Ic
+mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: noarg.in:9:7: STYLE: no blank before trailing delimiter: Ic ls.
diff --git a/regress/mdoc/In/noarg.out_lint b/regress/mdoc/In/noarg.out_lint
index 17f80404..1782d643 100644
--- a/regress/mdoc/In/noarg.out_lint
+++ b/regress/mdoc/In/noarg.out_lint
@@ -1,3 +1,4 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: In
mandoc: noarg.in:18:2: WARNING: skipping empty macro: In
+mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: noarg.in:15:11: STYLE: no blank before trailing delimiter: In math.h:
diff --git a/regress/mdoc/Lb/badargs.out_lint b/regress/mdoc/Lb/badargs.out_lint
index fa99725a..543fc3d2 100644
--- a/regress/mdoc/Lb/badargs.out_lint
+++ b/regress/mdoc/Lb/badargs.out_lint
@@ -1,4 +1,5 @@
mandoc: badargs.in:9:2: WARNING: skipping empty macro: Lb
+mandoc: badargs.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: badargs.in:8:10: STYLE: no blank before trailing delimiter: Lb murks.
mandoc: badargs.in:8:5: WARNING: unknown library name: Lb murks.
mandoc: badargs.in:10:18: STYLE: no blank before trailing delimiter: Lb ... another.
diff --git a/regress/mdoc/Li/punct.out_lint b/regress/mdoc/Li/punct.out_lint
index fc2a2110..333b25b6 100644
--- a/regress/mdoc/Li/punct.out_lint
+++ b/regress/mdoc/Li/punct.out_lint
@@ -23,4 +23,5 @@ mandoc: punct.in:71:7: WARNING: skipping empty macro: Li
mandoc: punct.in:74:7: WARNING: skipping empty macro: Li
mandoc: punct.in:75:7: WARNING: skipping empty macro: Li
mandoc: punct.in:83:2: WARNING: skipping empty macro: Li
+mandoc: punct.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: punct.in:86:6: STYLE: no blank before trailing delimiter: Li a.
diff --git a/regress/mdoc/Lk/noarg.out_lint b/regress/mdoc/Lk/noarg.out_lint
index 47c5b9ca..355a79e0 100644
--- a/regress/mdoc/Lk/noarg.out_lint
+++ b/regress/mdoc/Lk/noarg.out_lint
@@ -1,3 +1,4 @@
mandoc: noarg.in:16:2: WARNING: skipping empty macro: Lk
+mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: noarg.in:12:33: STYLE: no blank before trailing delimiter: Lk ... mandoc,
mandoc: noarg.in:14:28: STYLE: no blank before trailing delimiter: Lk http://www.openbsd.org/,
diff --git a/regress/mdoc/Ms/noarg.out_lint b/regress/mdoc/Ms/noarg.out_lint
index 8535ec9c..286f4f00 100644
--- a/regress/mdoc/Ms/noarg.out_lint
+++ b/regress/mdoc/Ms/noarg.out_lint
@@ -1,2 +1,3 @@
mandoc: noarg.in:11:2: WARNING: skipping empty macro: Ms
+mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: noarg.in:9:10: STYLE: no blank before trailing delimiter: Ms alpha.
diff --git a/regress/mdoc/Mt/simple.out_lint b/regress/mdoc/Mt/simple.out_lint
index d8e4a1e3..95edebdd 100644
--- a/regress/mdoc/Mt/simple.out_lint
+++ b/regress/mdoc/Mt/simple.out_lint
@@ -1 +1,2 @@
+mandoc: simple.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: simple.in:12:26: STYLE: no blank before trailing delimiter: Mt punctuation@localhost.
diff --git a/regress/mdoc/Nd/broken.out_lint b/regress/mdoc/Nd/broken.out_lint
index d187e8c3..c2a841a9 100644
--- a/regress/mdoc/Nd/broken.out_lint
+++ b/regress/mdoc/Nd/broken.out_lint
@@ -1,4 +1,5 @@
mandoc: broken.in:28:11: WARNING: blocks badly nested: Bo breaks Pq
+mandoc: broken.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: broken.in:5:2: WARNING: bad NAME section content: Oo
mandoc: broken.in:9:1: WARNING: bad NAME section content: text
mandoc: broken.in:4:2: WARNING: NAME section without Nm before Nd
diff --git a/regress/mdoc/Nd/noarg.out_lint b/regress/mdoc/Nd/noarg.out_lint
index 04e1d91f..97f1c759 100644
--- a/regress/mdoc/Nd/noarg.out_lint
+++ b/regress/mdoc/Nd/noarg.out_lint
@@ -1 +1,2 @@
+mandoc: noarg.in:1:5: STYLE: Mdocdate missing: Dd January
mandoc: noarg.in:6:2: WARNING: missing description line, using "": Nd
diff --git a/regress/mdoc/Nm/badNAME.out_lint b/regress/mdoc/Nm/badNAME.out_lint
index 8a5963d7..a8a6c51b 100644
--- a/regress/mdoc/Nm/badNAME.out_lint
+++ b/regress/mdoc/Nm/badNAME.out_lint
@@ -1,2 +1,3 @@
+mandoc: badNAME.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: badNAME.in:5:2: ERROR: missing manual name, using "": Nm
mandoc: badNAME.in:5:5: WARNING: bad NAME section content: Bx
diff --git a/regress/mdoc/Nm/badNAMEuse.out_lint b/regress/mdoc/Nm/badNAMEuse.out_lint
index 7b1c802f..ec925e82 100644
--- a/regress/mdoc/Nm/badNAMEuse.out_lint
+++ b/regress/mdoc/Nm/badNAMEuse.out_lint
@@ -1,2 +1,3 @@
+mandoc: badNAMEuse.in:1:5: STYLE: Mdocdate missing: Dd July
mandoc: badNAMEuse.in:5:2: ERROR: missing manual name, using "": Nm
mandoc: badNAMEuse.in:5:5: WARNING: bad NAME section content: Bx
diff --git a/regress/mdoc/Nm/break.out_lint b/regress/mdoc/Nm/break.out_lint
index 409b5812..79698c84 100644
--- a/regress/mdoc/Nm/break.out_lint
+++ b/regress/mdoc/Nm/break.out_lint
@@ -1 +1,2 @@
mandoc: break.in:9:2: ERROR: inserting missing end of block: Sh breaks Bo
+mandoc: break.in:1:5: STYLE: Mdocdate missing: Dd August
diff --git a/regress/mdoc/Nm/broken.out_lint b/regress/mdoc/Nm/broken.out_lint
index 4a5eb2ae..828bcbc8 100644
--- a/regress/mdoc/Nm/broken.out_lint
+++ b/regress/mdoc/Nm/broken.out_lint
@@ -1,2 +1,3 @@
mandoc: broken.in:17:2: WARNING: blocks badly nested: Oo breaks Bk
+mandoc: broken.in:1:5: STYLE: Mdocdate missing: Dd February
mandoc: broken.in:13:2: WARNING: moving content out of list: Oo
diff --git a/regress/mdoc/Nm/punct.out_lint b/regress/mdoc/Nm/punct.out_lint
index 45f906b3..da4ba2d6 100644
--- a/regress/mdoc/Nm/punct.out_lint
+++ b/regress/mdoc/Nm/punct.out_lint
@@ -1 +1,2 @@
+mandoc: punct.in:1:5: STYLE: Mdocdate missing: Dd June
mandoc: punct.in:42:13: STYLE: no blank before trailing delimiter: Nm Nm-punct.
diff --git a/regress/mdoc/No/punct.out_lint b/regress/mdoc/No/punct.out_lint
index e46cd67f..e5afc385 100644
--- a/regress/mdoc/No/punct.out_lint
+++ b/regress/mdoc/No/punct.out_lint
@@ -23,3 +23,4 @@ mandoc: punct.in:71:7: WARNING: skipping empty macro: No
mandoc: punct.in:74:7: WARNING: skipping empty macro: No
mandoc: punct.in:75:7: WARNING: skipping empty macro: No
mandoc: punct.in:83:2: WARNING: skipping empty macro: No
+mandoc: punct.in:1:5: STYLE: Mdocdate missing: Dd June
diff --git a/regress/mdoc/Ns/position.out_lint b/regress/mdoc/Ns/position.out_lint
index d21bfe12..fd306e26 100644
--- a/regress/mdoc/Ns/position.out_lint
+++ b/regress/mdoc/Ns/position.out_lint
@@ -1 +1,2 @@
+mandoc: position.in:1:5: STYLE: Mdocdate missing: Dd September
mandoc: position.in:10:2: WARNING: skipping no-space macro