summaryrefslogtreecommitdiff
path: root/usr.bin/mandoc/mdoc_validate.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2017-07-20 12:53:56 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2017-07-20 12:53:56 +0000
commit603e375bc39faf70e6eaee517fa7cec0e03b5ea6 (patch)
treec264292d31b8f82d18578eb7fbfe5d65bf815de3 /usr.bin/mandoc/mdoc_validate.c
parenta56cb6e42be2dc6da7151923a5e2406ac47b6430 (diff)
correctly handle letters in .Nx arguments; improves for example
getpgid(2), ac(8), ldconfig(8), mount_ffs(8), sa(8), ttyflags(8), ...
Diffstat (limited to 'usr.bin/mandoc/mdoc_validate.c')
-rw-r--r--usr.bin/mandoc/mdoc_validate.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/usr.bin/mandoc/mdoc_validate.c b/usr.bin/mandoc/mdoc_validate.c
index 9d92c970341..e0de8b6e8f2 100644
--- a/usr.bin/mandoc/mdoc_validate.c
+++ b/usr.bin/mandoc/mdoc_validate.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mdoc_validate.c,v 1.264 2017/07/15 16:40:23 schwarze Exp $ */
+/* $OpenBSD: mdoc_validate.c,v 1.265 2017/07/20 12:53:55 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -1408,6 +1408,7 @@ post_xx(POST_ARGS)
{
struct roff_node *n;
const char *os;
+ char *v;
post_delim_nb(mdoc);
@@ -1424,6 +1425,20 @@ post_xx(POST_ARGS)
break;
case MDOC_Nx:
os = "NetBSD";
+ if (n->child == NULL)
+ break;
+ v = n->child->string;
+ if ((v[0] != '0' && v[0] != '1') || v[1] != '.' ||
+ v[2] < '0' || v[2] > '9' ||
+ v[3] < 'a' || v[3] > 'z' || v[4] != '\0')
+ break;
+ n->child->flags |= NODE_NOPRT;
+ mdoc->next = ROFF_NEXT_CHILD;
+ roff_word_alloc(mdoc, n->child->line, n->child->pos, v);
+ v = mdoc->last->string;
+ v[3] = toupper((unsigned char)v[3]);
+ mdoc->last->flags |= NODE_NOSRC;
+ mdoc->last = n;
break;
case MDOC_Ox:
os = "OpenBSD";