aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-06-24 18:58:33 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-06-24 18:58:33 +0000
commit2c006d32c71368198be005a13eacd7ce88f4ceb8 (patch)
tree6f7f3a2ec29510c1ba69ede8e5aaa7e143461753
parent7c7573d24efe68deff8ef2dd98891de9ab99dc64 (diff)
downloadmandoc-2c006d32c71368198be005a13eacd7ce88f4ceb8.tar.gz
mandoc-2c006d32c71368198be005a13eacd7ce88f4ceb8.tar.zst
mandoc-2c006d32c71368198be005a13eacd7ce88f4ceb8.zip
operating system dependent message about unknown architecture;
inspired by mdoclint
-rw-r--r--mandoc.h3
-rw-r--r--mdoc_validate.c41
-rw-r--r--read.c3
3 files changed, 44 insertions, 3 deletions
diff --git a/mandoc.h b/mandoc.h
index db14dbf6..e6b48f11 100644
--- a/mandoc.h
+++ b/mandoc.h
@@ -1,4 +1,4 @@
-/* $Id: mandoc.h,v 1.234 2017/06/24 15:59:50 schwarze Exp $ */
+/* $Id: mandoc.h,v 1.235 2017/06/24 18:58:33 schwarze Exp $ */
/*
* Copyright (c) 2010, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -48,6 +48,7 @@ enum mandocerr {
MANDOCERR_MDOCDATE, /* Mdocdate found: Dd ... */
MANDOCERR_MDOCDATE_MISSING, /* Mdocdate missing: Dd ... */
+ MANDOCERR_ARCH_BAD, /* unknown architecture: Dt ... arch */
MANDOCERR_OS_ARG, /* operating system explicitly specified: Os ... */
MANDOCERR_RCS_MISSING, /* RCS id missing */
diff --git a/mdoc_validate.c b/mdoc_validate.c
index fd45d763..da9be6d1 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_validate.c,v 1.341 2017/06/24 15:59:50 schwarze Exp $ */
+/* $Id: mdoc_validate.c,v 1.342 2017/06/24 18:58:33 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -1786,7 +1786,29 @@ post_sm(POST_ARGS)
static void
post_root(POST_ARGS)
{
+ const char *openbsd_arch[] = {
+ "alpha", "amd64", "arm64", "armv7", "hppa", "i386",
+ "landisk", "loongson", "luna88k", "macppc", "mips64",
+ "octeon", "sgi", "socppc", "sparc64", NULL
+ };
+ const char *netbsd_arch[] = {
+ "acorn26", "acorn32", "algor", "alpha", "amiga",
+ "arc", "atari",
+ "bebox", "cats", "cesfic", "cobalt", "dreamcast",
+ "emips", "evbarm", "evbmips", "evbppc", "evbsh3", "evbsh5",
+ "hp300", "hpcarm", "hpcmips", "hpcsh", "hppa",
+ "i386", "ibmnws", "luna68k",
+ "mac68k", "macppc", "mipsco", "mmeye", "mvme68k", "mvmeppc",
+ "netwinder", "news68k", "newsmips", "next68k",
+ "pc532", "playstation2", "pmax", "pmppc", "prep",
+ "sandpoint", "sbmips", "sgimips", "shark",
+ "sparc", "sparc64", "sun2", "sun3",
+ "vax", "walnut", "x68k", "x86", "x86_64", "xen", NULL
+ };
+ const char **arches[] = { NULL, netbsd_arch, openbsd_arch };
+
struct roff_node *n;
+ const char **arch;
/* Add missing prologue data. */
@@ -1813,6 +1835,23 @@ post_root(POST_ARGS)
mdoc->meta.os_e == MANDOC_OS_OPENBSD ?
"(OpenBSD)" : "(NetBSD)");
+ if (mdoc->meta.arch != NULL &&
+ (arch = arches[mdoc->meta.os_e]) != NULL) {
+ while (*arch != NULL && strcmp(*arch, mdoc->meta.arch))
+ arch++;
+ if (*arch == NULL) {
+ n = mdoc->first->child;
+ while (n->tok != MDOC_Dt)
+ n = n->next;
+ n = n->child->next->next;
+ mandoc_vmsg(MANDOCERR_ARCH_BAD,
+ mdoc->parse, n->line, n->pos,
+ "Dt ... %s %s", mdoc->meta.arch,
+ mdoc->meta.os_e == MANDOC_OS_OPENBSD ?
+ "(OpenBSD)" : "(NetBSD)");
+ }
+ }
+
/* Check that we begin with a proper `Sh'. */
n = mdoc->first->child;
diff --git a/read.c b/read.c
index 2bc6b844..c1bb13a7 100644
--- a/read.c
+++ b/read.c
@@ -1,4 +1,4 @@
-/* $Id: read.c,v 1.180 2017/06/24 15:59:50 schwarze Exp $ */
+/* $Id: read.c,v 1.181 2017/06/24 18:58:33 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -90,6 +90,7 @@ static const char * const mandocerrs[MANDOCERR_MAX] = {
"Mdocdate found",
"Mdocdate missing",
+ "unknown architecture",
"operating system explicitly specified",
"RCS id missing",