=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/term.c,v retrieving revision 1.35 retrieving revision 1.36 diff -c -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 **** ! /* $Id: term.c,v 1.35 2010/05/26 02:39:58 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * --- 1,4 ---- ! /* $Id: term.c,v 1.36 2010/06/08 00:11:47 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * *************** *** 18,23 **** --- 18,24 ---- #include #include + #include #include #include #include *************** *** 31,37 **** #include "mdoc.h" #include "main.h" ! static struct termp *term_alloc(enum termenc, size_t); static void term_free(struct termp *); static void spec(struct termp *, const char *, size_t); static void res(struct termp *, const char *, size_t); --- 32,38 ---- #include "mdoc.h" #include "main.h" ! 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,51 **** void * ! ascii_alloc(size_t width) { ! return(term_alloc(TERMENC_ASCII, width)); } --- 43,52 ---- void * ! ascii_alloc(char *outopts) { ! return(term_alloc(outopts, TERMENC_ASCII)); } *************** *** 71,87 **** static struct termp * ! term_alloc(enum termenc enc, size_t width) { ! struct termp *p; p = calloc(1, sizeof(struct termp)); if (NULL == p) { perror(NULL); exit(EXIT_FAILURE); } p->tabwidth = 5; p->enc = enc; /* Enforce some lower boundary. */ if (width < 60) width = 60; --- 72,106 ---- static struct termp * ! term_alloc(char *outopts, enum termenc enc) { ! 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;