=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/tree.c,v retrieving revision 1.15 retrieving revision 1.16 diff -c -r1.15 -r1.16 *** src/usr.bin/mandoc/tree.c 2011/04/24 16:22:02 1.15 --- src/usr.bin/mandoc/tree.c 2011/09/18 10:25:28 1.16 *************** *** 1,4 **** ! /* $Id: tree.c,v 1.15 2011/04/24 16:22:02 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2011 Kristaps Dzonsons * --- 1,4 ---- ! /* $Id: tree.c,v 1.16 2011/09/18 10:25:28 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2011 Kristaps Dzonsons * *************** *** 15,20 **** --- 15,21 ---- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include + #include #include #include #include *************** *** 24,31 **** #include "man.h" #include "main.h" ! static void print_mdoc(const struct mdoc_node *, int); static void print_man(const struct man_node *, int); static void print_span(const struct tbl_span *, int); --- 25,33 ---- #include "man.h" #include "main.h" ! static void print_box(const struct eqn_box *, int); static void print_man(const struct man_node *, int); + static void print_mdoc(const struct mdoc_node *, int); static void print_span(const struct tbl_span *, int); *************** *** 59,64 **** --- 61,67 ---- argv = NULL; argc = sz = 0; params = NULL; + t = p = NULL; switch (n->type) { case (MDOC_ROOT): *************** *** 86,103 **** t = "text"; break; case (MDOC_TBL): ! t = "tbl"; ! break; case (MDOC_EQN): - t = "eqn"; break; default: abort(); /* NOTREACHED */ } - p = NULL; - switch (n->type) { case (MDOC_TEXT): p = n->string; --- 89,102 ---- t = "text"; break; case (MDOC_TBL): ! /* FALLTHROUGH */ case (MDOC_EQN): break; default: abort(); /* NOTREACHED */ } switch (n->type) { case (MDOC_TEXT): p = n->string; *************** *** 126,134 **** } break; case (MDOC_TBL): ! break; case (MDOC_EQN): - p = n->eqn->data; break; case (MDOC_ROOT): p = "root"; --- 125,132 ---- } break; case (MDOC_TBL): ! /* FALLTHROUGH */ case (MDOC_EQN): break; case (MDOC_ROOT): p = "root"; *************** *** 139,146 **** } if (n->span) { ! assert(NULL == p); print_span(n->span, indent); } else { for (i = 0; i < indent; i++) putchar('\t'); --- 137,147 ---- } if (n->span) { ! assert(NULL == p && NULL == t); print_span(n->span, indent); + } else if (n->eqn) { + assert(NULL == p && NULL == t); + print_box(n->eqn->root, indent); } else { for (i = 0; i < indent; i++) putchar('\t'); *************** *** 160,170 **** for (i = 0; i < (int)sz; i++) printf(" [%s]", params[i]); ! printf(" %d:%d", n->line, n->pos); } - putchar('\n'); - if (n->child) print_mdoc(n->child, indent + 1); if (n->next) --- 161,169 ---- for (i = 0; i < (int)sz; i++) printf(" [%s]", params[i]); ! printf(" %d:%d\n", n->line, n->pos); } if (n->child) print_mdoc(n->child, indent + 1); if (n->next) *************** *** 178,183 **** --- 177,184 ---- const char *p, *t; int i; + t = p = NULL; + switch (n->type) { case (MAN_ROOT): t = "root"; *************** *** 201,218 **** t = "block-tail"; break; case (MAN_TBL): ! t = "tbl"; ! break; case (MAN_EQN): - t = "eqn"; break; default: abort(); /* NOTREACHED */ } - p = NULL; - switch (n->type) { case (MAN_TEXT): p = n->string; --- 202,215 ---- t = "block-tail"; break; case (MAN_TBL): ! /* FALLTHROUGH */ case (MAN_EQN): break; default: abort(); /* NOTREACHED */ } switch (n->type) { case (MAN_TEXT): p = n->string; *************** *** 232,240 **** p = "root"; break; case (MAN_TBL): ! break; case (MAN_EQN): - p = n->eqn->data; break; default: abort(); --- 229,236 ---- p = "root"; break; case (MAN_TBL): ! /* FALLTHROUGH */ case (MAN_EQN): break; default: abort(); *************** *** 242,257 **** } if (n->span) { ! assert(NULL == p); print_span(n->span, indent); } else { for (i = 0; i < indent; i++) putchar('\t'); ! printf("%s (%s) %d:%d", p, t, n->line, n->pos); } - putchar('\n'); - if (n->child) print_man(n->child, indent + 1); if (n->next) --- 238,254 ---- } if (n->span) { ! assert(NULL == p && NULL == t); print_span(n->span, indent); + } else if (n->eqn) { + assert(NULL == p && NULL == t); + print_box(n->eqn->root, indent); } else { for (i = 0; i < indent; i++) putchar('\t'); ! printf("%s (%s) %d:%d\n", p, t, n->line, n->pos); } if (n->child) print_man(n->child, indent + 1); if (n->next) *************** *** 259,264 **** --- 256,303 ---- } static void + print_box(const struct eqn_box *ep, int indent) + { + int i; + const char *t; + + if (NULL == ep) + return; + for (i = 0; i < indent; i++) + putchar('\t'); + + t = NULL; + switch (ep->type) { + case (EQN_ROOT): + t = "eqn-root"; + break; + case (EQN_LIST): + t = "eqn-list"; + break; + case (EQN_SUBEXPR): + t = "eqn-expr"; + break; + case (EQN_TEXT): + t = "eqn-text"; + break; + case (EQN_MATRIX): + t = "eqn-matrix"; + break; + } + + assert(t); + printf("%s(%d, %d, %d, %d, %d, \"%s\", \"%s\") %s\n", + t, EQN_DEFSIZE == ep->size ? 0 : ep->size, + ep->pos, ep->font, ep->mark, ep->pile, + ep->left ? ep->left : "", + ep->right ? ep->right : "", + ep->text ? ep->text : ""); + + print_box(ep->first, indent + 1); + print_box(ep->next, indent); + } + + static void print_span(const struct tbl_span *sp, int indent) { const struct tbl_dat *dp; *************** *** 302,306 **** putchar(' '); } ! printf("(tbl) %d:1", sp->line); } --- 341,345 ---- putchar(' '); } ! printf("(tbl) %d:1\n", sp->line); }