aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_man.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-03-30 23:34:32 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-03-30 23:34:32 +0000
commit910342c02ed6728e8edd08d68a1f3d32ded25b7c (patch)
treede3052fd291af256c19267347b4995c7aa5399a1 /mdoc_man.c
parentc31137f0b3c862a7b47029782c4f334e2bead29f (diff)
downloadmandoc-910342c02ed6728e8edd08d68a1f3d32ded25b7c.tar.gz
mandoc-910342c02ed6728e8edd08d68a1f3d32ded25b7c.tar.zst
mandoc-910342c02ed6728e8edd08d68a1f3d32ded25b7c.zip
Improve formatting of broken blocks in -Tman,
somewhat similar to what mdoc_term.c already does for -Tascii. OpenBSD rev. 1.58.
Diffstat (limited to 'mdoc_man.c')
-rw-r--r--mdoc_man.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/mdoc_man.c b/mdoc_man.c
index a953e755..3830e558 100644
--- a/mdoc_man.c
+++ b/mdoc_man.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_man.c,v 1.60 2014/03/30 19:47:48 schwarze Exp $ */
+/* $Id: mdoc_man.c,v 1.61 2014/03/30 23:34:32 schwarze Exp $ */
/*
* Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -601,7 +601,7 @@ print_node(DECL_ARGS)
*/
act = manacts + n->tok;
cond = NULL == act->cond || (*act->cond)(meta, n);
- if (cond && act->pre)
+ if (cond && act->pre && ENDBODY_NOT == n->end)
do_sub = (*act->pre)(meta, n);
}
@@ -617,8 +617,17 @@ print_node(DECL_ARGS)
/*
* Lastly, conditionally run the post-node handler.
*/
+ if (MDOC_ENDED & n->flags)
+ return;
+
if (cond && act->post)
(*act->post)(meta, n);
+
+ if (ENDBODY_NOT != n->end)
+ n->pending->flags |= MDOC_ENDED;
+
+ if (ENDBODY_NOSPACE == n->end)
+ outflags &= ~(MMAN_spc | MMAN_nl);
}
static int
@@ -656,7 +665,7 @@ post_enc(DECL_ARGS)
suffix = manacts[n->tok].suffix;
if (NULL == suffix)
return;
- outflags &= ~MMAN_spc;
+ outflags &= ~(MMAN_spc | MMAN_nl);
print_word(suffix);
}