summaryrefslogtreecommitdiffstats
path: root/usr.bin/mandoc/man_html.c
diff options
context:
space:
mode:
authorschwarze <schwarze@openbsd.org>2011-01-04 01:15:39 +0000
committerschwarze <schwarze@openbsd.org>2011-01-04 01:15:39 +0000
commit6bd6754c35add9b7ef8f56c6fe6bef2080c5ceac (patch)
treeda8c5e66a707fd23d14f5bbb4812fb044a093948 /usr.bin/mandoc/man_html.c
parentClean up and simplify tmux command argument parsing. (diff)
downloadwireguard-openbsd-6bd6754c35add9b7ef8f56c6fe6bef2080c5ceac.tar.xz
wireguard-openbsd-6bd6754c35add9b7ef8f56c6fe6bef2080c5ceac.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 'usr.bin/mandoc/man_html.c')
-rw-r--r--usr.bin/mandoc/man_html.c32
1 files changed, 10 insertions, 22 deletions
diff --git a/usr.bin/mandoc/man_html.c b/usr.bin/mandoc/man_html.c
index 345217649e2..919bda0d2a4 100644
--- a/usr.bin/mandoc/man_html.c
+++ b/usr.bin/mandoc/man_html.c
@@ -1,4 +1,4 @@
-/* $Id: man_html.c,v 1.27 2010/12/25 13:23:03 schwarze Exp $ */
+/* $Id: man_html.c,v 1.28 2011/01/04 01:15:39 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -522,14 +522,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. */
@@ -555,26 +552,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);
}