summaryrefslogtreecommitdiffstatshomepage
path: root/tree.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-01-17 14:04:25 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-01-17 14:04:25 +0000
commit3ef2ed38138f74f57e8bac7be877cd7f644c6fa5 (patch)
tree41a91c061344080a3c65e68a0c7679e5c511b4d8 /tree.c
parent9b91d2941b32c93371d933a186b43a00cb02c3c0 (diff)
downloadmandoc-3ef2ed38138f74f57e8bac7be877cd7f644c6fa5.tar.gz
mandoc-3ef2ed38138f74f57e8bac7be877cd7f644c6fa5.tar.zst
mandoc-3ef2ed38138f74f57e8bac7be877cd7f644c6fa5.zip
Separating output filters.
Diffstat (limited to 'tree.c')
-rw-r--r--tree.c48
1 files changed, 39 insertions, 9 deletions
diff --git a/tree.c b/tree.c
index 484b9bf2..5403fc41 100644
--- a/tree.c
+++ b/tree.c
@@ -1,4 +1,4 @@
-/* $Id: tree.c,v 1.1 2009/01/16 15:58:50 kristaps Exp $ */
+/* $Id: tree.c,v 1.2 2009/01/17 14:04:25 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -17,14 +17,16 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
#include <stdlib.h>
+#include <stdio.h>
#include "mdoc.h"
+#define xprintf (void)printf
+
+static void treeprint_r(const struct mdoc_node *, int);
-#if 0
-/* TODO: remove this to a print-tree output filter. */
static void
-print_node(const struct mdoc_node *n, int indent)
+treeprint_r(const struct mdoc_node *n, int indent)
{
const char *p, *t;
int i, j;
@@ -36,7 +38,32 @@ print_node(const struct mdoc_node *n, int indent)
argc = sz = 0;
params = NULL;
- t = mdoc_type2a(n->type);
+ switch (n->type) {
+ case (MDOC_ROOT):
+ t = "root";
+ break;
+ case (MDOC_BLOCK):
+ t = "block";
+ break;
+ case (MDOC_HEAD):
+ t = "block-head";
+ break;
+ case (MDOC_BODY):
+ t = "block-body";
+ break;
+ case (MDOC_TAIL):
+ t = "block-tail";
+ break;
+ case (MDOC_ELEM):
+ t = "elem";
+ break;
+ case (MDOC_TEXT):
+ t = "text";
+ break;
+ default:
+ abort();
+ /* NOTREACHED */
+ }
switch (n->type) {
case (MDOC_TEXT):
@@ -89,13 +116,16 @@ print_node(const struct mdoc_node *n, int indent)
xprintf(" %d:%d\n", n->line, n->pos);
if (n->child)
- print_node(n->child, indent + 1);
+ treeprint_r(n->child, indent + 1);
if (n->next)
- print_node(n->next, indent);
+ treeprint_r(n->next, indent);
}
-#endif
+
int
-treeprint(const struct mdoc_node *node, const char *out)
+treeprint(const struct mdoc_node *node)
{
+
+ treeprint_r(node, 0);
+ return(1);
}