In trying to set man up to use my current terminal width $(($COLUMNS-2)) I
discovered that COLUMNS isn't exported to subshells. mandoc itself seems to go
crazy when run with -O width=-2.
Clamp width and indent settings to sensible values. I wasn't sure how to
handle errors, so they're just ignored for now.
Index: term_ascii.c
===================================================================
RCS file: /cvs/src/usr.bin/mandoc/term_ascii.c,v
retrieving revision 1.29
diff -u -p -r1.29 term_ascii.c
--- term_ascii.c 31 Dec 2014 16:50:54 -0000 1.29
+++ term_ascii.c 15 Feb 2015 11:48:23 -0000
@@ -55,6 +55,8 @@ ascii_init(enum termenc enc, const struc
const char *toks[5];
char *v;
struct termp *p;
+ const char *errstr;
+ int num;
p = mandoc_calloc(1, sizeof(struct termp));
@@ -99,10 +101,14 @@ ascii_init(enum termenc enc, const struc
while (outopts && *outopts)
switch (getsubopt(&outopts, UNCONST(toks), &v)) {
case 0:
- p->defindent = (size_t)atoi(v);
+ num = strtonum(v, 0, 1000, &errstr);
+ if (!errstr)
+ p->defindent = num;
break;
case 1:
- p->defrmargin = (size_t)atoi(v);
+ num = strtonum(v, 0, 1000, &errstr);
+ if (!errstr)
+ p->defrmargin = num;
break;
case 2:
/*