diff options
author | 2015-01-28 02:23:33 +0000 | |
---|---|---|
committer | 2015-01-28 02:23:33 +0000 | |
commit | 99d91ba7731d4073c692d5b7b0476dabafd1d2cc (patch) | |
tree | e154038707dcb20f30240cb345daeaef05756443 | |
parent | when doing a blocking read with a timeout, after the sleep reset (diff) | |
download | wireguard-openbsd-99d91ba7731d4073c692d5b7b0476dabafd1d2cc.tar.xz wireguard-openbsd-99d91ba7731d4073c692d5b7b0476dabafd1d2cc.zip |
adjust formatting for the tbl(7) layout 'x' modifier (maximize column)
to match groff for up to six maximized columns
-rw-r--r-- | regress/usr.bin/mandoc/tbl/Makefile | 4 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/tbl/expand.in | 225 | ||||
-rw-r--r-- | regress/usr.bin/mandoc/tbl/expand.out_ascii | 101 | ||||
-rw-r--r-- | usr.bin/mandoc/out.c | 38 |
4 files changed, 359 insertions, 9 deletions
diff --git a/regress/usr.bin/mandoc/tbl/Makefile b/regress/usr.bin/mandoc/tbl/Makefile index 02d0da2b96d..865c0b65cd7 100644 --- a/regress/usr.bin/mandoc/tbl/Makefile +++ b/regress/usr.bin/mandoc/tbl/Makefile @@ -1,6 +1,6 @@ -# $OpenBSD: Makefile,v 1.9 2015/01/26 18:41:45 schwarze Exp $ +# $OpenBSD: Makefile,v 1.10 2015/01/28 02:23:33 schwarze Exp $ -REGRESS_TARGETS = blankline center fonts layout macro misalign +REGRESS_TARGETS = blankline center expand fonts layout macro misalign REGRESS_TARGETS += nested numbers opt span vert LINT_TARGETS = layout macro nested opt diff --git a/regress/usr.bin/mandoc/tbl/expand.in b/regress/usr.bin/mandoc/tbl/expand.in new file mode 100644 index 00000000000..eb92bd229a4 --- /dev/null +++ b/regress/usr.bin/mandoc/tbl/expand.in @@ -0,0 +1,225 @@ +.TH TBL-EXPAND 1 "January 27, 2015" OpenBSD +.SH NAME +tbl-expand \- expand modifier in table layout +.SH DESCRIPTION +normal text +.TS +tab(:); +lx lx l. +x:x:123456789012345678901234567890123456789012345678901234567890123 +.TE +.TS +tab(:); +lx lx l. +x:x:12345678901234567890123456789012345678901234567890123456789012 +.TE +.TS +tab(:); +lx lx l. +x:x:1234567890123456789012345678901234567890123456789012345678901 +.TE +.TS +tab(:); +lx lx l. +x:x:123456789012345678901234567890123456789012345678901234567890 +.TE +.TS +tab(:); +lx lx lx l. +x:x:x:12345678901234567890123456789012345678901234567890123456789 +.TE +.TS +tab(:); +lx lx lx l. +x:x:x:1234567890123456789012345678901234567890123456789012345678 +.TE +.TS +tab(:); +lx lx lx l. +x:x:x:123456789012345678901234567890123456789012345678901234567 +.TE +.TS +tab(:); +lx lx lx l. +x:x:x:12345678901234567890123456789012345678901234567890123456 +.TE +.TS +tab(:); +lx lx lx lx l. +x:x:x:x:1234567890123456789012345678901234567890123456789012345 +.TE +.TS +tab(:); +lx lx lx lx l. +x:x:x:x:123456789012345678901234567890123456789012345678901234 +.TE +.TS +tab(:); +lx lx lx lx l. +x:x:x:x:12345678901234567890123456789012345678901234567890123 +.TE +.TS +tab(:); +lx lx lx lx l. +x:x:x:x:1234567890123456789012345678901234567890123456789012 +.TE +.TS +tab(:); +lx lx lx lx lx l. +x:x:x:x:x:123456789012345678901234567890123456789012345678901 +.TE +.TS +tab(:); +lx lx lx lx lx l. +x:x:x:x:x:12345678901234567890123456789012345678901234567890 +.TE +.TS +tab(:); +lx lx lx lx lx l. +x:x:x:x:x:1234567890123456789012345678901234567890123456789 +.TE +.TS +tab(:); +lx lx lx lx lx l. +x:x:x:x:x:123456789012345678901234567890123456789012345678 +.TE +.TS +tab(:); +lx lx lx lx lx l. +x:x:x:x:x:12345678901234567890123456789012345678901234567 +.TE +.TS +tab(:); +lx lx lx lx lx lx l. +x:x:x:x:x:x:1234567890123456789012345678901234567890123456 +.TE +.TS +tab(:); +lx lx lx lx lx lx l. +x:x:x:x:x:x:123456789012345678901234567890123456789012345 +.TE +.TS +tab(:); +lx lx lx lx lx lx l. +x:x:x:x:x:x:12345678901234567890123456789012345678901234 +.TE +.TS +tab(:); +lx lx lx lx lx lx l. +x:x:x:x:x:x:1234567890123456789012345678901234567890123 +.TE +.TS +tab(:); +lx lx lx lx lx lx l. +x:x:x:x:x:x:123456789012345678901234567890123456789012 +.TE +.TS +tab(:); +lx l rx. +x:123456789012345678901234567890123456789012345678901234567890123:x +.TE +.TS +tab(:); +lx l rx. +x:12345678901234567890123456789012345678901234567890123456789012:x +.TE +.TS +tab(:); +lx l rx. +x:1234567890123456789012345678901234567890123456789012345678901:x +.TE +.TS +tab(:); +lx l rx. +x:123456789012345678901234567890123456789012345678901234567890:x +.TE +.TS +tab(:); +lx lx l rx. +x:x:12345678901234567890123456789012345678901234567890123456789:x +.TE +.TS +tab(:); +lx lx l rx. +x:x:1234567890123456789012345678901234567890123456789012345678:x +.TE +.TS +tab(:); +lx lx l rx. +x:x:123456789012345678901234567890123456789012345678901234567:x +.TE +.TS +tab(:); +lx lx l rx. +x:x:12345678901234567890123456789012345678901234567890123456:x +.TE +.TS +tab(:); +lx lx lx l rx. +x:x:x:1234567890123456789012345678901234567890123456789012345:x +.TE +.TS +tab(:); +lx lx lx l rx. +x:x:x:123456789012345678901234567890123456789012345678901234:x +.TE +.TS +tab(:); +lx lx lx l rx. +x:x:x:12345678901234567890123456789012345678901234567890123:x +.TE +.TS +tab(:); +lx lx lx l rx. +x:x:x:1234567890123456789012345678901234567890123456789012:x +.TE +.TS +tab(:); +lx lx lx lx l rx. +x:x:x:x:123456789012345678901234567890123456789012345678901:x +.TE +.TS +tab(:); +lx lx lx lx l rx. +x:x:x:x:12345678901234567890123456789012345678901234567890:x +.TE +.TS +tab(:); +lx lx lx lx l rx. +x:x:x:x:1234567890123456789012345678901234567890123456789:x +.TE +.TS +tab(:); +lx lx lx lx l rx. +x:x:x:x:123456789012345678901234567890123456789012345678:x +.TE +.TS +tab(:); +lx lx lx lx l rx. +x:x:x:x:12345678901234567890123456789012345678901234567:x +.TE +.TS +tab(:); +lx lx lx lx lx l rx. +x:x:x:x:x:1234567890123456789012345678901234567890123456:x +.TE +.TS +tab(:); +lx lx lx lx lx l rx. +x:x:x:x:x:123456789012345678901234567890123456789012345:x +.TE +.TS +tab(:); +lx lx lx lx lx l rx. +x:x:x:x:x:12345678901234567890123456789012345678901234:x +.TE +.TS +tab(:); +lx lx lx lx lx l rx. +x:x:x:x:x:1234567890123456789012345678901234567890123:x +.TE +.TS +tab(:); +lx lx lx lx lx l rx. +x:x:x:x:x:123456789012345678901234567890123456789012:x +.TE diff --git a/regress/usr.bin/mandoc/tbl/expand.out_ascii b/regress/usr.bin/mandoc/tbl/expand.out_ascii new file mode 100644 index 00000000000..b1fceec9927 --- /dev/null +++ b/regress/usr.bin/mandoc/tbl/expand.out_ascii @@ -0,0 +1,101 @@ +TBL-EXPAND(1) General Commands Manual TBL-EXPAND(1) + + + +NNAAMMEE + tbl-expand - expand modifier in table layout + +DDEESSCCRRIIPPTTIIOONN + normal text + + x x 123456789012345678901234567890123456789012345678901234567890123 + + x x 12345678901234567890123456789012345678901234567890123456789012 + + x x 1234567890123456789012345678901234567890123456789012345678901 + + x x 123456789012345678901234567890123456789012345678901234567890 + + x x x 12345678901234567890123456789012345678901234567890123456789 + + x x x 1234567890123456789012345678901234567890123456789012345678 + + x x x 123456789012345678901234567890123456789012345678901234567 + + x x x 12345678901234567890123456789012345678901234567890123456 + + x x x x 1234567890123456789012345678901234567890123456789012345 + + x x x x 123456789012345678901234567890123456789012345678901234 + + x x x x 12345678901234567890123456789012345678901234567890123 + + x x x x 1234567890123456789012345678901234567890123456789012 + + x x x x x 123456789012345678901234567890123456789012345678901 + + x x x x x 12345678901234567890123456789012345678901234567890 + + x x x x x 1234567890123456789012345678901234567890123456789 + + x x x x x 123456789012345678901234567890123456789012345678 + + x x x x x 12345678901234567890123456789012345678901234567 + + x x x x x x 1234567890123456789012345678901234567890123456 + + x x x x x x 123456789012345678901234567890123456789012345 + + x x x x x x 12345678901234567890123456789012345678901234 + + x x x x x x 1234567890123456789012345678901234567890123 + + x x x x x x 123456789012345678901234567890123456789012 + + x 123456789012345678901234567890123456789012345678901234567890123 x + + x 12345678901234567890123456789012345678901234567890123456789012 x + + x 1234567890123456789012345678901234567890123456789012345678901 x + + x 123456789012345678901234567890123456789012345678901234567890 x + + x x 12345678901234567890123456789012345678901234567890123456789 x + + x x 1234567890123456789012345678901234567890123456789012345678 x + + x x 123456789012345678901234567890123456789012345678901234567 x + + x x 12345678901234567890123456789012345678901234567890123456 x + + x x x 1234567890123456789012345678901234567890123456789012345 x + + x x x 123456789012345678901234567890123456789012345678901234 x + + x x x 12345678901234567890123456789012345678901234567890123 x + + x x x 1234567890123456789012345678901234567890123456789012 x + + x x x x 123456789012345678901234567890123456789012345678901 x + + x x x x 12345678901234567890123456789012345678901234567890 x + + x x x x 1234567890123456789012345678901234567890123456789 x + + x x x x 123456789012345678901234567890123456789012345678 x + + x x x x 12345678901234567890123456789012345678901234567 x + + x x x x x 1234567890123456789012345678901234567890123456 x + + x x x x x 123456789012345678901234567890123456789012345 x + + x x x x x 12345678901234567890123456789012345678901234 x + + x x x x x 1234567890123456789012345678901234567890123 x + + x x x x x 123456789012345678901234567890123456789012 x + + + +OpenBSD January 27, 2015 TBL-EXPAND(1) diff --git a/usr.bin/mandoc/out.c b/usr.bin/mandoc/out.c index ccffdff2298..d939e88856b 100644 --- a/usr.bin/mandoc/out.c +++ b/usr.bin/mandoc/out.c @@ -1,7 +1,7 @@ -/* $OpenBSD: out.c,v 1.29 2014/12/23 13:48:15 schwarze Exp $ */ +/* $OpenBSD: out.c,v 1.30 2015/01/28 02:23:33 schwarze Exp $ */ /* * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> - * Copyright (c) 2011, 2014 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2011, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -105,11 +105,12 @@ void tblcalc(struct rofftbl *tbl, const struct tbl_span *sp, size_t totalwidth) { + const struct tbl_opts *opts; const struct tbl_dat *dp; struct roffcol *col; size_t ewidth, xwidth; int spans; - int icol, maxcol, necol, nxcol; + int icol, maxcol, necol, nxcol, quirkcol; /* * Allocate the master column specifiers. These will hold the @@ -120,6 +121,7 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp, assert(NULL == tbl->cols); tbl->cols = mandoc_calloc((size_t)sp->opts->cols, sizeof(struct roffcol)); + opts = sp->opts; for (maxcol = -1; sp; sp = sp->next) { if (TBL_SPAN_DATA != sp->pos) @@ -143,7 +145,7 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp, col->flags |= dp->layout->flags; if (dp->layout->flags & TBL_CELL_WIGN) continue; - tblcalc_data(tbl, col, sp->opts, dp); + tblcalc_data(tbl, col, opts, dp); } } @@ -193,13 +195,35 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp, */ if (nxcol && totalwidth) { - xwidth = totalwidth - 3*maxcol - xwidth; + xwidth = totalwidth - xwidth - 3*maxcol - + (opts->opts & (TBL_OPT_BOX | TBL_OPT_DBOX) ? + 2 : !!opts->lvert + !!opts->rvert); + + /* + * Emulate a bug in GNU tbl width calculation that + * manifests itself for large numbers of x-columns. + * Emulating it for 5 x-columns gives identical + * behaviour for up to 6 x-columns. + */ + + if (nxcol == 5) { + quirkcol = xwidth % nxcol + 2; + if (quirkcol != 3 && quirkcol != 4) + quirkcol = -1; + } else + quirkcol = -1; + + necol = 0; + ewidth = 0; for (icol = 0; icol <= maxcol; icol++) { col = tbl->cols + icol; if ( ! (col->flags & TBL_CELL_WMAX)) continue; - col->width = xwidth / nxcol--; - xwidth -= col->width; + col->width = (double)xwidth * ++necol / nxcol + - ewidth + 0.4995; + if (necol == quirkcol) + col->width--; + ewidth += col->width; } } } |