aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/man_html.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2011-01-04 01:23:18 +0000
committerIngo Schwarze <schwarze@openbsd.org>2011-01-04 01:23:18 +0000
commit338031ae4701478d0057ccc08643c74da3a9eab2 (patch)
tree7e7f29329f5aee50b1c44466482e275faa9a2e75 /man_html.c
parentfc974a57cd34bcbd149a89e1e5927d795492b4aa (diff)
downloadmandoc-338031ae4701478d0057ccc08643c74da3a9eab2.tar.gz
mandoc-338031ae4701478d0057ccc08643c74da3a9eab2.tar.zst
mandoc-338031ae4701478d0057ccc08643c74da3a9eab2.zip
Multiple man(7) .IP and .TP fixes started during p2k10:
Affecting both -Tascii and -Thtml: * The .IP HEAD uses the second argument as the width, not the last one. * Only print the first .IP HEAD argument, not all but the last. Affecting only -Tascii: * The .IP and .TP HEADs must be printed without literal mode, but literal mode must be restored afterwards. * After the .IP and .TP bodies, we only want term_newln(), not term_flushln(), or we would get two blank lines in literal mode. * The .TP HEAD does not use TWOSPACE, just like .IP doesn't either. * In literal mode, clear NOLPAD after each line, or subsequent lines would get no indentation whatsoever. Affecting only -Thtml: * Only print next-line .TP children, instead of all but the first. OK kristaps@ on the -Tascii part; and: "Can you work this into man_html.c, too?"
Diffstat (limited to 'man_html.c')
-rw-r--r--man_html.c32
1 files changed, 10 insertions, 22 deletions
diff --git a/man_html.c b/man_html.c
index 31015adb..54feada9 100644
--- a/man_html.c
+++ b/man_html.c
@@ -1,4 +1,4 @@
-/* $Id: man_html.c,v 1.58 2011/01/01 12:59:17 kristaps Exp $ */
+/* $Id: man_html.c,v 1.59 2011/01/04 01:23:18 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -517,14 +517,11 @@ man_IP_pre(MAN_ARGS)
SCALE_HS_INIT(&su, INDENT);
width = 0;
- /* Width is the last token. */
+ /* Width is the second token. */
if (MAN_IP == n->tok && NULL != nn)
- if (NULL != (nn = nn->next)) {
- for ( ; nn->next; nn = nn->next)
- /* Do nothing. */ ;
+ if (NULL != (nn = nn->next))
width = a2width(nn, &su);
- }
/* Width is the first token. */
@@ -550,26 +547,17 @@ man_IP_pre(MAN_ARGS)
print_otag(h, TAG_TD, 0, NULL);
- /*
- * Without a length string, we can print all of our children.
- */
+ /* For IP, only print the first header element. */
- if ( ! width)
- return(1);
+ if (MAN_IP == n->tok && n->child)
+ print_man_node(m, n->child, mh, h);
- /*
- * When a length has been specified, we need to carefully print
- * our child context: IP gets all children printed but the last
- * (the width), while TP gets all children printed but the first
- * (the width).
- */
+ /* For TP, only print next-line header elements. */
- if (MAN_IP == n->tok)
- for (nn = n->child; nn->next; nn = nn->next)
- print_man_node(m, nn, mh, h);
if (MAN_TP == n->tok)
- for (nn = n->child->next; nn; nn = nn->next)
- print_man_node(m, nn, mh, h);
+ for (nn = n->child; nn; nn = nn->next)
+ if (nn->line > n->line)
+ print_man_node(m, nn, mh, h);
return(0);
}