aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/out.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-06-27 18:25:02 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-06-27 18:25:02 +0000
commitcd0313514de5f02c468c13b8125900bef22346b3 (patch)
treedce07518bf91752b0796030d73400941f20a574a /out.c
parentce3e6e6c76cc1cfca6d316eee86a713e5a145ba6 (diff)
downloadmandoc-cd0313514de5f02c468c13b8125900bef22346b3.tar.gz
mandoc-cd0313514de5f02c468c13b8125900bef22346b3.tar.zst
mandoc-cd0313514de5f02c468c13b8125900bef22346b3.zip
Implement spacing of columns as defined in the table layout;
this is for example used by lftp(1) and, ironically, misused by our very own tbl(7) manual...
Diffstat (limited to 'out.c')
-rw-r--r--out.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/out.c b/out.c
index 5fd15343..b2b64378 100644
--- a/out.c
+++ b/out.c
@@ -1,4 +1,4 @@
-/* $Id: out.c,v 1.69 2017/06/15 00:27:52 schwarze Exp $ */
+/* $Id: out.c,v 1.70 2017/06/27 18:25:02 schwarze Exp $ */
/*
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -20,6 +20,7 @@
#include <sys/types.h>
#include <assert.h>
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
@@ -140,8 +141,8 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp,
if (1 < spans)
continue;
icol = dp->layout->col;
- if (maxcol < icol)
- maxcol = icol;
+ while (maxcol < icol)
+ tbl->cols[++maxcol].spacing = SIZE_MAX;
col = tbl->cols + icol;
col->flags |= dp->layout->flags;
if (dp->layout->flags & TBL_CELL_WIGN)
@@ -154,6 +155,10 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp,
(*tbl->sulen)(&su, tbl->arg);
if (col->width < dp->layout->width)
col->width = dp->layout->width;
+ if (dp->layout->spacing != SIZE_MAX &&
+ (col->spacing == SIZE_MAX ||
+ col->spacing < dp->layout->spacing))
+ col->spacing = dp->layout->spacing;
tblcalc_data(tbl, col, opts, dp,
dp->block == 0 ? 0 :
dp->layout->width ? dp->layout->width :
@@ -172,6 +177,8 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp,
ewidth = xwidth = 0;
for (icol = 0; icol <= maxcol; icol++) {
col = tbl->cols + icol;
+ if (col->spacing == SIZE_MAX || icol == maxcol)
+ col->spacing = 3;
if (col->flags & TBL_CELL_EQUAL) {
necol++;
if (ewidth < col->width)