=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/tbl_term.c,v retrieving revision 1.55 retrieving revision 1.56 diff -c -r1.55 -r1.56 *** src/usr.bin/mandoc/tbl_term.c 2019/01/31 16:06:13 1.55 --- src/usr.bin/mandoc/tbl_term.c 2019/02/09 21:01:24 1.56 *************** *** 1,4 **** ! /* $OpenBSD: tbl_term.c,v 1.55 2019/01/31 16:06:13 schwarze Exp $ */ /* * Copyright (c) 2009, 2011 Kristaps Dzonsons * Copyright (c) 2011-2019 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: tbl_term.c,v 1.56 2019/02/09 21:01:24 schwarze Exp $ */ /* * Copyright (c) 2009, 2011 Kristaps Dzonsons * Copyright (c) 2011-2019 Ingo Schwarze *************** *** 164,170 **** size_t save_offset; size_t coloff, tsz; int hspans, ic, more; ! int dvert, fc, horiz, line, uvert; /* Inhibit printing of spaces: we do padding ourselves. */ --- 164,170 ---- size_t save_offset; size_t coloff, tsz; int hspans, ic, more; ! int dvert, fc, horiz, lhori, rhori, uvert; /* Inhibit printing of spaces: we do padding ourselves. */ *************** *** 323,333 **** (horiz || (IS_HORIZ(sp->layout->first) && !IS_HORIZ(sp->prev->layout->first)))) uvert = sp->prev->layout->vert; ! line = sp->pos == TBL_SPAN_DHORIZ || sp->layout->first->pos == TBL_CELL_DHORIZ ? 2 : sp->pos == TBL_SPAN_HORIZ || sp->layout->first->pos == TBL_CELL_HORIZ ? 1 : 0; ! fc = BUP * uvert + BDOWN * dvert + BRIGHT * line; if (uvert > 0 || dvert > 0 || (horiz && sp->opts->lvert)) { (*tp->advance)(tp, tp->tcols->offset); tp->viscol = tp->tcol->offset; --- 323,335 ---- (horiz || (IS_HORIZ(sp->layout->first) && !IS_HORIZ(sp->prev->layout->first)))) uvert = sp->prev->layout->vert; ! rhori = sp->pos == TBL_SPAN_DHORIZ || ! (sp->first != NULL && sp->first->pos == TBL_DATA_DHORIZ) || sp->layout->first->pos == TBL_CELL_DHORIZ ? 2 : sp->pos == TBL_SPAN_HORIZ || + (sp->first != NULL && sp->first->pos == TBL_DATA_HORIZ) || sp->layout->first->pos == TBL_CELL_HORIZ ? 1 : 0; ! fc = BUP * uvert + BDOWN * dvert + BRIGHT * rhori; if (uvert > 0 || dvert > 0 || (horiz && sp->opts->lvert)) { (*tp->advance)(tp, tp->tcols->offset); tp->viscol = tp->tcol->offset; *************** *** 400,405 **** --- 402,416 ---- cpn = cpn->next; } + lhori = (cp != NULL && + cp->pos == TBL_CELL_DHORIZ) || + (dp != NULL && + dp->pos == TBL_DATA_DHORIZ) ? 2 : + (cp != NULL && + cp->pos == TBL_CELL_HORIZ) || + (dp != NULL && + dp->pos == TBL_DATA_HORIZ) ? 1 : 0; + /* * Skip later cells in a span, * figure out whether to start a span, *************** *** 452,508 **** } while (tp->viscol < tp->tcol->rmargin + tp->tbl.cols[ic].spacing / 2) ! tbl_direct_border(tp, fc, 1); if (tp->tcol + 1 == tp->tcols + tp->lasttcol) continue; ! if (cp != NULL) { ! switch (cp->pos) { ! case TBL_CELL_HORIZ: ! fc = BLEFT; ! break; ! case TBL_CELL_DHORIZ: ! fc = BLEFT * 2; ! break; ! default: ! fc = 0; ! break; ! } cp = cp->next; ! } ! if (cp != NULL) { ! switch (cp->pos) { ! case TBL_CELL_HORIZ: ! fc += BRIGHT; ! break; ! case TBL_CELL_DHORIZ: ! fc += BRIGHT * 2; ! break; ! default: ! break; ! } ! } if (tp->tbl.cols[ic].spacing) ! tbl_direct_border(tp, fc + BUP * uvert + BDOWN * dvert, 1); if (tp->enc == TERMENC_UTF8) uvert = dvert = 0; - if (fc != 0) { - if (cp != NULL && - cp->pos == TBL_CELL_HORIZ) - fc = BHORIZ; - else if (cp != NULL && - cp->pos == TBL_CELL_DHORIZ) - fc = BHORIZ * 2; - else - fc = 0; - } if (tp->tbl.cols[ic].spacing > 2 && ! (uvert > 1 || dvert > 1 || fc != 0)) ! tbl_direct_border(tp, fc + BUP * (uvert > 1) + BDOWN * (dvert > 1), 1); } --- 463,498 ---- } while (tp->viscol < tp->tcol->rmargin + tp->tbl.cols[ic].spacing / 2) ! tbl_direct_border(tp, ! BHORIZ * lhori, 1); if (tp->tcol + 1 == tp->tcols + tp->lasttcol) continue; ! if (cp != NULL) cp = cp->next; ! ! rhori = (cp != NULL && ! cp->pos == TBL_CELL_DHORIZ) || ! (dp != NULL && ! dp->pos == TBL_DATA_DHORIZ) ? 2 : ! (cp != NULL && ! cp->pos == TBL_CELL_HORIZ) || ! (dp != NULL && ! dp->pos == TBL_DATA_HORIZ) ? 1 : 0; ! if (tp->tbl.cols[ic].spacing) ! tbl_direct_border(tp, ! BLEFT * lhori + BRIGHT * rhori + BUP * uvert + BDOWN * dvert, 1); if (tp->enc == TERMENC_UTF8) uvert = dvert = 0; if (tp->tbl.cols[ic].spacing > 2 && ! (uvert > 1 || dvert > 1 || rhori)) ! tbl_direct_border(tp, ! BHORIZ * rhori + BUP * (uvert > 1) + BDOWN * (dvert > 1), 1); } *************** *** 526,545 **** (horiz || (IS_HORIZ(sp->layout->last) && !IS_HORIZ(sp->prev->layout->last)))) uvert = sp->prev->layout->last->vert; ! line = sp->pos == TBL_SPAN_DHORIZ || (sp->layout->last->pos == TBL_CELL_DHORIZ && sp->layout->last->col + 1 == sp->opts->cols) ? 2 : sp->pos == TBL_SPAN_HORIZ || (sp->layout->last->pos == TBL_CELL_HORIZ && sp->layout->last->col + 1 == sp->opts->cols) ? 1 : 0; ! fc = BUP * uvert + BDOWN * dvert + BLEFT * line; if (uvert > 0 || dvert > 0 || (horiz && sp->opts->rvert)) { if (horiz == 0 && (IS_HORIZ(sp->layout->last) == 0 || sp->layout->last->col + 1 < sp->opts->cols)) { tp->tcol++; ! (*tp->advance)(tp, ! tp->tcol->offset > tp->viscol ? ! tp->tcol->offset - tp->viscol : 1); } tbl_direct_border(tp, fc, 1); } --- 516,542 ---- (horiz || (IS_HORIZ(sp->layout->last) && !IS_HORIZ(sp->prev->layout->last)))) uvert = sp->prev->layout->last->vert; ! lhori = sp->pos == TBL_SPAN_DHORIZ || ! (sp->last != NULL && ! sp->last->pos == TBL_DATA_DHORIZ && ! sp->last->layout->col + 1 == sp->opts->cols) || (sp->layout->last->pos == TBL_CELL_DHORIZ && sp->layout->last->col + 1 == sp->opts->cols) ? 2 : sp->pos == TBL_SPAN_HORIZ || + (sp->last != NULL && + sp->last->pos == TBL_DATA_HORIZ && + sp->last->layout->col + 1 == sp->opts->cols) || (sp->layout->last->pos == TBL_CELL_HORIZ && sp->layout->last->col + 1 == sp->opts->cols) ? 1 : 0; ! fc = BUP * uvert + BDOWN * dvert + BLEFT * lhori; if (uvert > 0 || dvert > 0 || (horiz && sp->opts->rvert)) { if (horiz == 0 && (IS_HORIZ(sp->layout->last) == 0 || sp->layout->last->col + 1 < sp->opts->cols)) { tp->tcol++; ! do { ! tbl_direct_border(tp, ! BHORIZ * lhori, 1); ! } while (tp->viscol < tp->tcol->offset); } tbl_direct_border(tp, fc, 1); }