=================================================================== RCS file: /cvs/mandoc/mdoc_validate.c,v retrieving revision 1.349 retrieving revision 1.351 diff -u -p -r1.349 -r1.351 --- mandoc/mdoc_validate.c 2017/07/15 16:40:29 1.349 +++ mandoc/mdoc_validate.c 2017/07/31 15:19:06 1.351 @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.349 2017/07/15 16:40:29 schwarze Exp $ */ +/* $Id: mdoc_validate.c,v 1.351 2017/07/31 15:19:06 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2017 Ingo Schwarze @@ -1423,6 +1423,7 @@ post_xx(POST_ARGS) { struct roff_node *n; const char *os; + char *v; post_delim_nb(mdoc); @@ -1439,6 +1440,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"; @@ -1916,7 +1931,7 @@ post_root(POST_ARGS) /* Check that we begin with a proper `Sh'. */ n = mdoc->first->child; - while (n != NULL && n->tok != TOKEN_NONE && + while (n != NULL && n->tok >= MDOC_Dd && mdoc_macros[n->tok].flags & MDOC_PROLOGUE) n = n->next;