aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_validate.c
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 /mdoc_validate.c
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).
Diffstat (limited to 'mdoc_validate.c')
-rw-r--r--mdoc_validate.c34
1 files changed, 28 insertions, 6 deletions
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