=================================================================== RCS file: /cvs/mandoc/mdoc_term.c,v retrieving revision 1.225 retrieving revision 1.231 diff -u -p -r1.225 -r1.231 --- mandoc/mdoc_term.c 2011/04/04 16:21:51 1.225 +++ mandoc/mdoc_term.c 2011/06/29 15:38:09 1.231 @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.225 2011/04/04 16:21:51 kristaps Exp $ */ +/* $Id: mdoc_term.c,v 1.231 2011/06/29 15:38:09 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010 Ingo Schwarze @@ -264,14 +264,7 @@ terminal_mdoc(void *arg, const struct mdoc *mdoc) p->tabwidth = term_len(p, 5); if (NULL == p->symtab) - switch (p->enc) { - case (TERMENC_ASCII): - p->symtab = chars_init(CHARS_ASCII); - break; - default: - abort(); - /* NOTREACHED */ - } + p->symtab = mchars_alloc(); n = mdoc_node(mdoc); m = mdoc_meta(mdoc); @@ -530,9 +523,10 @@ a2height(const struct termp *p, const char *v) { struct roffsu su; + assert(v); if ( ! a2roffsu(v, &su, SCALE_VS)) - SCALE_VS_INIT(&su, term_len(p, 1)); + SCALE_VS_INIT(&su, atoi(v)); return(term_vspan(p, &su)); } @@ -1536,24 +1530,31 @@ termp_ft_pre(DECL_ARGS) static int termp_fn_pre(DECL_ARGS) { - const struct mdoc_node *nn; + int pretty; + pretty = MDOC_SYNPRETTY & n->flags; + synopsis_pre(p, n); + if (NULL == (n = n->child)) + return(0); + + assert(MDOC_TEXT == n->type); term_fontpush(p, TERMFONT_BOLD); - term_word(p, n->child->string); + term_word(p, n->string); term_fontpop(p); p->flags |= TERMP_NOSPACE; term_word(p, "("); p->flags |= TERMP_NOSPACE; - for (nn = n->child->next; nn; nn = nn->next) { + for (n = n->next; n; n = n->next) { + assert(MDOC_TEXT == n->type); term_fontpush(p, TERMFONT_UNDER); - term_word(p, nn->string); + term_word(p, n->string); term_fontpop(p); - if (nn->next) { + if (n->next) { p->flags |= TERMP_NOSPACE; term_word(p, ","); } @@ -1562,7 +1563,7 @@ termp_fn_pre(DECL_ARGS) p->flags |= TERMP_NOSPACE; term_word(p, ")"); - if (MDOC_SYNPRETTY & n->flags) { + if (pretty) { p->flags |= TERMP_NOSPACE; term_word(p, ";"); }