aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tree.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-01-01 13:54:58 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-01-01 13:54:58 +0000
commitc9ad1d11e5aa5eac8d9f7a70cfd538337bbbbcec (patch)
tree8b9bb0550e3941b7b6f02cfd08ef978f1be21a40 /tree.c
parent2b66c5c132641d27e718a7a8d4b01c9dce9e1ac8 (diff)
downloadmandoc-c9ad1d11e5aa5eac8d9f7a70cfd538337bbbbcec.tar.gz
mandoc-c9ad1d11e5aa5eac8d9f7a70cfd538337bbbbcec.tar.zst
mandoc-c9ad1d11e5aa5eac8d9f7a70cfd538337bbbbcec.zip
Make -Ttree spit out table columns.
Add forgotten assignment of span to -man's TBL nodes.
Diffstat (limited to 'tree.c')
-rw-r--r--tree.c68
1 files changed, 48 insertions, 20 deletions
diff --git a/tree.c b/tree.c
index 6793dd22..ee0f1576 100644
--- a/tree.c
+++ b/tree.c
@@ -1,4 +1,4 @@
-/* $Id: tree.c,v 1.25 2011/01/01 12:56:12 kristaps Exp $ */
+/* $Id: tree.c,v 1.26 2011/01/01 13:54:58 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -58,6 +58,7 @@ print_mdoc(const struct mdoc_node *n, int indent)
size_t argc, sz;
char **params;
struct mdoc_argv *argv;
+ const struct tbl_dat *dp;
argv = NULL;
argc = sz = 0;
@@ -96,6 +97,8 @@ print_mdoc(const struct mdoc_node *n, int indent)
/* NOTREACHED */
}
+ p = NULL;
+
switch (n->type) {
case (MDOC_TEXT):
p = n->string;
@@ -124,7 +127,6 @@ print_mdoc(const struct mdoc_node *n, int indent)
}
break;
case (MDOC_TBL):
- p = "tbl";
break;
case (MDOC_ROOT):
p = "root";
@@ -135,23 +137,36 @@ print_mdoc(const struct mdoc_node *n, int indent)
}
for (i = 0; i < indent; i++)
- (void)printf(" ");
- (void)printf("%s (%s)", p, t);
-
- for (i = 0; i < (int)argc; i++) {
- (void)printf(" -%s", mdoc_argnames[argv[i].arg]);
- if (argv[i].sz > 0)
- (void)printf(" [");
- for (j = 0; j < (int)argv[i].sz; j++)
- (void)printf(" [%s]", argv[i].value[j]);
- if (argv[i].sz > 0)
- (void)printf(" ]");
- }
+ putchar('\t');
+
+ if (n->span) {
+ assert(NULL == p);
+ printf("tbl: ");
+ for (dp = n->span->first; dp; dp = dp->next) {
+ printf("[%s]", dp->string);
+ if (dp->next)
+ putchar(' ');
+ }
+ } else {
+ printf("%s (%s)", p, t);
- for (i = 0; i < (int)sz; i++)
- (void)printf(" [%s]", params[i]);
+ for (i = 0; i < (int)argc; i++) {
+ printf(" -%s", mdoc_argnames[argv[i].arg]);
+ if (argv[i].sz > 0)
+ printf(" [");
+ for (j = 0; j < (int)argv[i].sz; j++)
+ printf(" [%s]", argv[i].value[j]);
+ if (argv[i].sz > 0)
+ printf(" ]");
+ }
+
+ for (i = 0; i < (int)sz; i++)
+ printf(" [%s]", params[i]);
- (void)printf(" %d:%d\n", n->line, n->pos);
+ printf(" %d:%d", n->line, n->pos);
+ }
+
+ putchar('\n');
if (n->child)
print_mdoc(n->child, indent + 1);
@@ -165,6 +180,7 @@ print_man(const struct man_node *n, int indent)
{
const char *p, *t;
int i;
+ const struct tbl_dat *dp;
switch (n->type) {
case (MAN_ROOT):
@@ -193,6 +209,8 @@ print_man(const struct man_node *n, int indent)
/* NOTREACHED */
}
+ p = NULL;
+
switch (n->type) {
case (MAN_TEXT):
p = n->string;
@@ -210,7 +228,6 @@ print_man(const struct man_node *n, int indent)
p = "root";
break;
case (MAN_TBL):
- p = "tbl";
break;
default:
abort();
@@ -218,8 +235,19 @@ print_man(const struct man_node *n, int indent)
}
for (i = 0; i < indent; i++)
- (void)printf(" ");
- (void)printf("%s (%s) %d:%d\n", p, t, n->line, n->pos);
+ putchar('\t');
+
+ if (n->span) {
+ assert(NULL == p);
+ for (dp = n->span->first; dp; dp = dp->next) {
+ printf("tbl: [%s]", dp->string);
+ if (dp->next)
+ putchar(' ');
+ }
+ } else
+ printf("%s (%s) %d:%d", p, t, n->line, n->pos);
+
+ putchar('\n');
if (n->child)
print_man(n->child, indent + 1);