=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/term.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- src/usr.bin/mandoc/term.c 2010/05/26 02:39:58 1.35 +++ src/usr.bin/mandoc/term.c 2010/06/08 00:11:47 1.36 @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.35 2010/05/26 02:39:58 schwarze Exp $ */ +/* $Id: term.c,v 1.36 2010/06/08 00:11:47 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -31,7 +32,7 @@ #include "mdoc.h" #include "main.h" -static struct termp *term_alloc(enum termenc, size_t); +static struct termp *term_alloc(char *, enum termenc); static void term_free(struct termp *); static void spec(struct termp *, const char *, size_t); static void res(struct termp *, const char *, size_t); @@ -42,10 +43,10 @@ void * -ascii_alloc(size_t width) +ascii_alloc(char *outopts) { - return(term_alloc(TERMENC_ASCII, width)); + return(term_alloc(outopts, TERMENC_ASCII)); } @@ -71,17 +72,35 @@ static struct termp * -term_alloc(enum termenc enc, size_t width) +term_alloc(char *outopts, enum termenc enc) { - struct termp *p; + struct termp *p; + const char *toks[2]; + char *v; + size_t width; + toks[0] = "width"; + toks[1] = NULL; + p = calloc(1, sizeof(struct termp)); if (NULL == p) { perror(NULL); exit(EXIT_FAILURE); } + p->tabwidth = 5; p->enc = enc; + width = 80; + + while (outopts && *outopts) + switch (getsubopt(&outopts, UNCONST(toks), &v)) { + case (0): + width = (size_t)atoi(v); + break; + default: + break; + } + /* Enforce some lower boundary. */ if (width < 60) width = 60;