summaryrefslogtreecommitdiffstats
path: root/usr.bin/mandoc/mdoc_macro.c
diff options
context:
space:
mode:
authorschwarze <schwarze@openbsd.org>2014-08-08 15:26:28 +0000
committerschwarze <schwarze@openbsd.org>2014-08-08 15:26:28 +0000
commit8d5916b51305657eb92b61f1716bda0cbaa0fb45 (patch)
tree59ee6a0d04b436fa6cf4351ff6b52fc02f641abc /usr.bin/mandoc/mdoc_macro.c
parentRemove two useless FATAL errors. (diff)
downloadwireguard-openbsd-8d5916b51305657eb92b61f1716bda0cbaa0fb45.tar.xz
wireguard-openbsd-8d5916b51305657eb92b61f1716bda0cbaa0fb45.zip
Get rid of the useless FATAL error "child violates parent syntax".
When finding items outside lists, simply skip them and throw an ERROR. Handle subsections before the first section instead of bailing out.
Diffstat (limited to 'usr.bin/mandoc/mdoc_macro.c')
-rw-r--r--usr.bin/mandoc/mdoc_macro.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/usr.bin/mandoc/mdoc_macro.c b/usr.bin/mandoc/mdoc_macro.c
index 40fdba9ba02..5767a50029a 100644
--- a/usr.bin/mandoc/mdoc_macro.c
+++ b/usr.bin/mandoc/mdoc_macro.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_macro.c,v 1.94 2014/07/07 21:35:42 schwarze Exp $ */
+/* $Id: mdoc_macro.c,v 1.95 2014/08/08 15:26:28 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
@@ -420,6 +420,8 @@ rew_dohalt(enum mdoct tok, enum mdoc_type type,
return(REWIND_NONE);
/* FALLTHROUGH */
case MDOC_Sh:
+ if (MDOC_ROOT == p->parent->type)
+ return(REWIND_THIS);
if (MDOC_Nd == p->tok || MDOC_Ss == p->tok ||
MDOC_Sh == p->tok)
return(REWIND_MORE);
@@ -1031,6 +1033,22 @@ blk_full(MACRO_PROT_ARGS)
nl = MDOC_NEWLINE & mdoc->flags;
+ /* Skip items outside lists. */
+
+ if (tok == MDOC_It) {
+ for (n = mdoc->last; n; n = n->parent)
+ if (n->tok == MDOC_Bl)
+ break;
+ if (n == NULL) {
+ mandoc_vmsg(MANDOCERR_IT_STRAY, mdoc->parse,
+ line, ppos, "It %s", buf + *pos);
+ if ( ! mdoc_elem_alloc(mdoc, line, ppos,
+ MDOC_br, NULL))
+ return(0);
+ return(rew_elem(mdoc, MDOC_br));
+ }
+ }
+
/* Close out prior implicit scope. */
if ( ! (MDOC_EXPLICIT & mdoc_macros[tok].flags)) {