summaryrefslogtreecommitdiff
path: root/usr.bin/mandoc/mdoc_man.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/mandoc/mdoc_man.c')
-rw-r--r--usr.bin/mandoc/mdoc_man.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/usr.bin/mandoc/mdoc_man.c b/usr.bin/mandoc/mdoc_man.c
index 25505ee32da..ab3be7aece8 100644
--- a/usr.bin/mandoc/mdoc_man.c
+++ b/usr.bin/mandoc/mdoc_man.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mdoc_man.c,v 1.117 2017/06/08 12:54:40 schwarze Exp $ */
+/* $OpenBSD: mdoc_man.c,v 1.118 2017/06/10 01:27:44 schwarze Exp $ */
/*
* Copyright (c) 2011-2017 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -194,8 +194,8 @@ static const struct manact __manacts[MDOC_MAX - MDOC_Dd] = {
{ NULL, pre_bf, post_bf, NULL, NULL }, /* Bf */
{ cond_body, pre_enc, post_enc, "[", "]" }, /* Bo */
{ cond_body, pre_enc, post_enc, "[", "]" }, /* Bq */
- { NULL, NULL, NULL, NULL, NULL }, /* Bsx */
- { NULL, NULL, NULL, NULL, NULL }, /* Bx */
+ { NULL, pre_bk, post_bk, NULL, NULL }, /* Bsx */
+ { NULL, pre_bk, post_bk, NULL, NULL }, /* Bx */
{ NULL, pre_skip, NULL, NULL, NULL }, /* Db */
{ NULL, NULL, NULL, NULL, NULL }, /* Dc */
{ cond_body, pre_enc, post_enc, "\\(Lq", "\\(Rq" }, /* Do */
@@ -204,12 +204,12 @@ static const struct manact __manacts[MDOC_MAX - MDOC_Dd] = {
{ NULL, NULL, NULL, NULL, NULL }, /* Ef */
{ NULL, pre_em, post_font, NULL, NULL }, /* Em */
{ cond_body, pre_eo, post_eo, NULL, NULL }, /* Eo */
- { NULL, NULL, NULL, NULL, NULL }, /* Fx */
+ { NULL, pre_bk, post_bk, NULL, NULL }, /* Fx */
{ NULL, pre_sy, post_font, NULL, NULL }, /* Ms */
{ NULL, pre_no, NULL, NULL, NULL }, /* No */
{ NULL, pre_ns, NULL, NULL, NULL }, /* Ns */
- { NULL, NULL, NULL, NULL, NULL }, /* Nx */
- { NULL, NULL, NULL, NULL, NULL }, /* Ox */
+ { NULL, pre_bk, post_bk, NULL, NULL }, /* Nx */
+ { NULL, pre_bk, post_bk, NULL, NULL }, /* Ox */
{ NULL, NULL, NULL, NULL, NULL }, /* Pc */
{ NULL, NULL, post_pf, NULL, NULL }, /* Pf */
{ cond_body, pre_enc, post_enc, "(", ")" }, /* Po */
@@ -250,7 +250,7 @@ static const struct manact __manacts[MDOC_MAX - MDOC_Dd] = {
{ NULL, NULL, post_percent, NULL, NULL }, /* %C */
{ NULL, pre_skip, NULL, NULL, NULL }, /* Es */
{ cond_body, pre_en, post_en, NULL, NULL }, /* En */
- { NULL, NULL, NULL, NULL, NULL }, /* Dx */
+ { NULL, pre_bk, post_bk, NULL, NULL }, /* Dx */
{ NULL, NULL, post_percent, NULL, NULL }, /* %Q */
{ NULL, NULL, post_percent, NULL, NULL }, /* %U */
{ NULL, NULL, NULL, NULL, NULL }, /* Ta */
@@ -988,11 +988,11 @@ post_bf(DECL_ARGS)
static int
pre_bk(DECL_ARGS)
{
-
switch (n->type) {
case ROFFT_BLOCK:
return 1;
case ROFFT_BODY:
+ case ROFFT_ELEM:
outflags |= MMAN_Bk;
return 1;
default:
@@ -1003,9 +1003,18 @@ pre_bk(DECL_ARGS)
static void
post_bk(DECL_ARGS)
{
-
- if (n->type == ROFFT_BODY)
+ switch (n->type) {
+ case ROFFT_ELEM:
+ while ((n = n->parent) != NULL)
+ if (n->tok == MDOC_Bk)
+ return;
+ /* FALLTHROUGH */
+ case ROFFT_BODY:
outflags &= ~MMAN_Bk;
+ break;
+ default:
+ break;
+ }
}
static int