-/* $Id: out.c,v 1.79 2019/12/31 22:58:41 schwarze Exp $ */
+/* $Id: out.c,v 1.83 2021/09/28 17:06:59 schwarze Exp $ */
/*
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2011,2014,2015,2017,2018 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2011, 2014, 2015, 2017, 2018, 2019, 2021
+ * 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
#include <assert.h>
#include <ctype.h>
#include <stdint.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "mandoc_aux.h"
+#include "mandoc.h"
#include "tbl.h"
#include "out.h"
min1 = min2 = SIZE_MAX;
for (icol = 0; icol <= maxcol; icol++) {
- if (min1 > colwidth[icol]) {
+ width = colwidth[icol];
+ if (min1 > width) {
min2 = min1;
- min1 = colwidth[icol];
- } else if (min1 < colwidth[icol] &&
- min2 > colwidth[icol])
- min2 = colwidth[icol];
+ min1 = width;
+ } else if (min1 < width && min2 > width)
+ min2 = width;
}
/*
for (g = first_group; g != NULL; g = g->next) {
necol = 0;
for (icol = g->startcol; icol <= g->endcol; icol++)
- if (tbl->cols[icol].width == min1)
+ if (colwidth[icol] == min1)
necol++;
if (necol == 0)
continue;
width = min2;
if (wanted > width)
wanted = width;
- for (icol = g->startcol; icol <= g->endcol; icol++)
- if (colwidth[icol] == min1 ||
- (colwidth[icol] < min2 &&
- colwidth[icol] > width))
- colwidth[icol] = width;
}
- /* Record the effect of the widening on the group list. */
+ /* Record the effect of the widening. */
gp = &first_group;
while ((g = *gp) != NULL) {
done = 0;
for (icol = g->startcol; icol <= g->endcol; icol++) {
- if (colwidth[icol] != wanted ||
- tbl->cols[icol].width == wanted)
+ if (colwidth[icol] != min1)
continue;
if (g->wanted <= wanted - min1) {
+ tbl->cols[icol].width += g->wanted;
done = 1;
break;
}
+ tbl->cols[icol].width = wanted;
g->wanted -= wanted - min1;
}
if (done) {
} else
gp = &(*gp)->next;
}
-
- /* Record the effect of the widening on the columns. */
-
- for (icol = 0; icol <= maxcol; icol++)
- if (colwidth[icol] == wanted)
- tbl->cols[icol].width = wanted;
}
free(colwidth);
col = tbl->cols + icol;
if (col->width > col->nwidth)
col->decimal += (col->width - col->nwidth) / 2;
- else
- col->width = col->nwidth;
if (col->flags & TBL_CELL_EQUAL) {
necol++;
if (ewidth < col->width)
if (totsz > col->nwidth)
col->nwidth = totsz;
+ if (col->nwidth > col->width)
+ col->width = col->nwidth;
return totsz;
}