summaryrefslogtreecommitdiffstats
path: root/mdoc_term.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-07-24 11:54:54 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-07-24 11:54:54 +0000
commit370e251bed6f08c17e4e30f9cc762098f2a3ee46 (patch)
treedbc5e2683ec0e85bfae1b1ccd312538ea7b09821 /mdoc_term.c
parentf567494c37b88cb10f77f60250f709af51cb57e7 (diff)
downloadmandoc-370e251bed6f08c17e4e30f9cc762098f2a3ee46.tar.gz
`Bd' printing simplified (now that literal text is preserved).
Diffstat (limited to 'mdoc_term.c')
-rw-r--r--mdoc_term.c37
1 files changed, 10 insertions, 27 deletions
diff --git a/mdoc_term.c b/mdoc_term.c
index 26e9f70d..1b43e877 100644
--- a/mdoc_term.c
+++ b/mdoc_term.c
@@ -1582,7 +1582,7 @@ termp_va_pre(DECL_ARGS)
static int
termp_bd_pre(DECL_ARGS)
{
- int i, type, ln;
+ int i, type;
/*
* This is fairly tricky due primarily to crappy documentation.
@@ -1601,12 +1601,9 @@ termp_bd_pre(DECL_ARGS)
} else if (MDOC_BODY != node->type)
return(1);
- /* FIXME: display type should be mandated by parser. */
+ assert(node->parent->args);
- if (NULL == node->parent->args)
- errx(1, "missing display type");
-
- for (type = -1, i = 0;
+ for (type = -1, i = 0; -1 == type &&
i < (int)node->parent->args->argc; i++) {
switch (node->parent->args->argv[i].arg) {
case (MDOC_Ragged):
@@ -1617,22 +1614,17 @@ termp_bd_pre(DECL_ARGS)
/* FALLTHROUGH */
case (MDOC_Literal):
type = node->parent->args->argv[i].arg;
- i = (int)node->parent->args->argc;
break;
default:
break;
}
}
-
- if (NULL == node->parent->args)
- errx(1, "missing display type");
+
+ assert(type > -1);
i = arg_getattr(MDOC_Offset, node->parent);
- if (-1 != i) {
- if (1 != node->parent->args->argv[i].sz)
- errx(1, "expected single value");
+ if (-1 != i)
p->offset += arg_offset(&node->parent->args->argv[i]);
- }
switch (type) {
case (MDOC_Literal):
@@ -1643,21 +1635,11 @@ termp_bd_pre(DECL_ARGS)
return(1);
}
- /*
- * Tricky. Iterate through all children. If we're on a
- * different parse line, append a newline and then the contents.
- * Ew.
- */
-
- ln = node->child ? node->child->line : 0;
-
for (node = node->child; node; node = node->next) {
- if (ln < node->line) {
- term_flushln(p);
- p->flags |= TERMP_NOSPACE;
- }
- ln = node->line;
+ p->flags |= TERMP_NOSPACE;
print_node(p, pair, meta, node);
+ if (node->next)
+ term_flushln(p);
}
return(0);
@@ -1671,6 +1653,7 @@ termp_bd_post(DECL_ARGS)
if (MDOC_BODY != node->type)
return;
+ p->flags |= TERMP_NOSPACE;
term_flushln(p);
}