=================================================================== RCS file: /cvs/mandoc/mdoc_html.c,v retrieving revision 1.140 retrieving revision 1.146 diff -u -p -r1.140 -r1.146 --- mandoc/mdoc_html.c 2011/01/01 12:18:37 1.140 +++ mandoc/mdoc_html.c 2011/01/25 15:28:56 1.146 @@ -1,4 +1,4 @@ -/* $Id: mdoc_html.c,v 1.140 2011/01/01 12:18:37 kristaps Exp $ */ +/* $Id: mdoc_html.c,v 1.146 2011/01/25 15:28:56 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons * @@ -420,11 +420,32 @@ print_mdoc_node(MDOC_ARGS) child = mdoc_root_pre(m, n, h); break; case (MDOC_TEXT): + /* No tables in this mode... */ + assert(NULL == h->tblt); + if (' ' == *n->string && MDOC_LINE & n->flags) + print_otag(h, TAG_BR, 0, NULL); print_text(h, n->string); return; case (MDOC_TBL): + /* + * This will take care of initialising all of the table + * state data for the first table, then tearing it down + * for the last one. + */ + print_tbl(h, n->span); return; default: + /* + * Close out the current table, if it's open, and unset + * the "meta" table state. This will be reopened on the + * next table element. + */ + if (h->tblt) { + print_tblclose(h); + t = h->tags.head; + } + + assert(NULL == h->tblt); if (mdocs[n->tok].pre && ENDBODY_NOT == n->end) child = (*mdocs[n->tok].pre)(m, n, h); break; @@ -811,22 +832,36 @@ mdoc_xx_pre(MDOC_ARGS) static int mdoc_bx_pre(MDOC_ARGS) { - const struct mdoc_node *nn; - struct htmlpair tag; + struct htmlpair tag; + char buf[3]; PAIR_CLASS_INIT(&tag, "unix"); print_otag(h, TAG_SPAN, 1, &tag); - for (nn = n->child; nn; nn = nn->next) - print_mdoc_node(m, nn, h); + if (NULL != (n = n->child)) { + print_text(h, n->string); + h->flags |= HTML_NOSPACE; + print_text(h, "BSD"); + } else { + print_text(h, "BSD"); + return(0); + } - if (n->child) + if (NULL != (n = n->next)) { + buf[0] = '-'; + buf[1] = toupper((unsigned char)*n->string); + buf[2] = '\0'; + h->flags |= HTML_NOSPACE; + print_text(h, buf); + h->flags |= HTML_NOSPACE; + print_text(h, n->string + 1); + } - print_text(h, "BSD"); return(0); } +/* ARGSUSED */ static int mdoc_it_pre(MDOC_ARGS) { @@ -941,7 +976,7 @@ mdoc_it_pre(MDOC_ARGS) static int mdoc_bl_pre(MDOC_ARGS) { - size_t i; + int i; struct htmlpair tag[3]; struct roffsu su; char buf[BUFSIZ]; @@ -963,10 +998,10 @@ mdoc_bl_pre(MDOC_ARGS) * screen and we want to preserve that behaviour. */ - for (i = 0; i < n->norm->Bl.ncols; i++) { + for (i = 0; i < (int)n->norm->Bl.ncols; i++) { a2width(n->norm->Bl.cols[i], &su); bufinit(h); - if (i < n->norm->Bl.ncols - 1) + if (i < (int)n->norm->Bl.ncols - 1) bufcat_su(h, "width", &su); else bufcat_su(h, "min-width", &su);