=================================================================== RCS file: /cvs/mandoc/mdoc_term.c,v retrieving revision 1.285 retrieving revision 1.288 diff -u -p -r1.285 -r1.288 --- mandoc/mdoc_term.c 2014/10/20 02:47:09 1.285 +++ mandoc/mdoc_term.c 2014/10/30 20:10:02 1.288 @@ -1,4 +1,4 @@ -/* $Id: mdoc_term.c,v 1.285 2014/10/20 02:47:09 schwarze Exp $ */ +/* $Id: mdoc_term.c,v 1.288 2014/10/30 20:10:02 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze @@ -51,7 +51,6 @@ struct termact { static size_t a2width(const struct termp *, const char *); static size_t a2height(const struct termp *, const char *); -static size_t a2offs(const struct termp *, const char *); static void print_bvspace(struct termp *, const struct mdoc_node *, @@ -261,9 +260,6 @@ terminal_mdoc(void *arg, const struct mdoc *mdoc) p->rmargin = p->maxrmargin = p->defrmargin; p->tabwidth = term_len(p, 5); - if (NULL == p->symtab) - p->symtab = mchars_alloc(); - n = mdoc_node(mdoc)->child; meta = mdoc_meta(mdoc); @@ -347,7 +343,7 @@ print_mdoc_node(DECL_ARGS) if ( ! (n->flags & MDOC_LINE)) p->flags |= TERMP_NOSPACE; term_eqn(p, n->eqn); - if ( ! (n->flags & MDOC_LINE)) + if (n->next != NULL && ! (n->next->flags & MDOC_LINE)) p->flags |= TERMP_NOSPACE; break; case MDOC_TBL: @@ -553,27 +549,6 @@ a2width(const struct termp *p, const char *v) return(term_hspan(p, &su)); } -static size_t -a2offs(const struct termp *p, const char *v) -{ - struct roffsu su; - - if ('\0' == *v) - return(0); - else if (0 == strcmp(v, "left")) - return(0); - else if (0 == strcmp(v, "indent")) - return(term_len(p, p->defindent + 1)); - else if (0 == strcmp(v, "indent-two")) - return(term_len(p, (p->defindent + 1) * 2)); - else if ( ! a2roffsu(v, &su, SCALE_MAX)) { - SCALE_HS_INIT(&su, term_strlen(p, v)); - su.scale /= term_strlen(p, "0"); - } - - return(term_hspan(p, &su)); -} - /* * Determine how much space to print out before block elements of `It' * (and thus `Bl') and `Bd'. And then go ahead and print that space, @@ -662,7 +637,7 @@ termp_it_pre(DECL_ARGS) width = offset = 0; if (bl->norm->Bl.offs) - offset = a2offs(p, bl->norm->Bl.offs); + offset = a2width(p, bl->norm->Bl.offs); switch (type) { case LIST_column: @@ -1584,8 +1559,17 @@ termp_bd_pre(DECL_ARGS) } else if (MDOC_HEAD == n->type) return(0); - if (n->norm->Bd.offs) - p->offset += a2offs(p, n->norm->Bd.offs); + /* Handle the -offset argument. */ + + if (n->norm->Bd.offs == NULL || + ! strcmp(n->norm->Bd.offs, "left")) + /* nothing */; + else if ( ! strcmp(n->norm->Bd.offs, "indent")) + p->offset += term_len(p, p->defindent + 1); + else if ( ! strcmp(n->norm->Bd.offs, "indent-two")) + p->offset += term_len(p, (p->defindent + 1) * 2); + else + p->offset += a2width(p, n->norm->Bd.offs); /* * If -ragged or -filled are specified, the block does nothing