=================================================================== RCS file: /cvs/mandoc/term_ps.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -p -r1.16 -r1.17 --- mandoc/term_ps.c 2010/06/29 14:18:05 1.16 +++ mandoc/term_ps.c 2010/06/29 14:53:14 1.17 @@ -1,4 +1,4 @@ -/* $Id: term_ps.c,v 1.16 2010/06/29 14:18:05 kristaps Exp $ */ +/* $Id: term_ps.c,v 1.17 2010/06/29 14:53:14 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -373,14 +374,17 @@ static void ps_setfont(struct termp *, enum termfon void * -ps_alloc(void) +ps_alloc(char *outopts) { struct termp *p; size_t pagex, pagey, margin; + const char *toks[2]; + char *v; if (NULL == (p = term_alloc(TERMENC_ASCII))) return(NULL); + /* Default is USA letter. */ pagex = 612; pagey = 792; margin = 72; @@ -392,6 +396,24 @@ ps_alloc(void) p->advance = ps_advance; p->endline = ps_endline; p->width = ps_width; + + toks[0] = "paper"; + toks[1] = NULL; + + while (outopts && *outopts) + switch (getsubopt(&outopts, UNCONST(toks), &v)) { + case (0): + if (0 == strcasecmp(v, "a4")) { + pagex = 595; + pagey = 842; + } else if (0 == strcasecmp(v, "letter")) { + pagex = 612; + pagey = 792; + } + break; + default: + break; + } assert(margin * 2 < pagex); assert(margin * 2 < pagey);