From 3a566c6001cb69c071c16b210bbb84009ab1b662 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Fri, 27 Mar 2015 21:33:20 +0000 Subject: Actually use the new man.conf(5) "output" directive. Additional functionality, yet minus 45 lines of code. --- term_ps.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) (limited to 'term_ps.c') diff --git a/term_ps.c b/term_ps.c index 12ca7d67..961de1b0 100644 --- a/term_ps.c +++ b/term_ps.c @@ -1,4 +1,4 @@ -/* $Id: term_ps.c,v 1.72 2015/01/21 19:40:54 schwarze Exp $ */ +/* $Id: term_ps.c,v 1.73 2015/03/27 21:33:20 schwarze Exp $ */ /* * Copyright (c) 2010, 2011 Kristaps Dzonsons * Copyright (c) 2014, 2015 Ingo Schwarze @@ -7,9 +7,9 @@ * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF @@ -30,6 +30,7 @@ #include "mandoc_aux.h" #include "out.h" #include "term.h" +#include "manconf.h" #include "main.h" /* These work the buffer used by the header and footer. */ @@ -106,7 +107,8 @@ static void ps_printf(struct termp *, const char *, ...); static void ps_putchar(struct termp *, char); static void ps_setfont(struct termp *, enum termfont); static void ps_setwidth(struct termp *, int, size_t); -static struct termp *pspdf_alloc(const struct mchars *, char *); +static struct termp *pspdf_alloc(const struct mchars *, + const struct manoutput *); static void pdf_obj(struct termp *, size_t); /* @@ -507,7 +509,7 @@ static const struct font fonts[TERMFONT__MAX] = { }; void * -pdf_alloc(const struct mchars *mchars, char *outopts) +pdf_alloc(const struct mchars *mchars, const struct manoutput *outopts) { struct termp *p; @@ -518,7 +520,7 @@ pdf_alloc(const struct mchars *mchars, char *outopts) } void * -ps_alloc(const struct mchars *mchars, char *outopts) +ps_alloc(const struct mchars *mchars, const struct manoutput *outopts) { struct termp *p; @@ -529,14 +531,12 @@ ps_alloc(const struct mchars *mchars, char *outopts) } static struct termp * -pspdf_alloc(const struct mchars *mchars, char *outopts) +pspdf_alloc(const struct mchars *mchars, const struct manoutput *outopts) { struct termp *p; unsigned int pagex, pagey; size_t marginx, marginy, lineheight; - const char *toks[2]; const char *pp; - char *v; p = mandoc_calloc(1, sizeof(struct termp)); p->symtab = mchars; @@ -555,20 +555,6 @@ pspdf_alloc(const struct mchars *mchars, char *outopts) p->setwidth = ps_setwidth; p->width = ps_width; - toks[0] = "paper"; - toks[1] = NULL; - - pp = NULL; - - while (outopts && *outopts) - switch (getsubopt(&outopts, UNCONST(toks), &v)) { - case 0: - pp = v; - break; - default: - break; - } - /* Default to US letter (millimetres). */ pagex = 216; @@ -581,6 +567,7 @@ pspdf_alloc(const struct mchars *mchars, char *outopts) * only happens once, I'm not terribly concerned. */ + pp = outopts->paper; if (pp && strcasecmp(pp, "letter")) { if (0 == strcasecmp(pp, "a3")) { pagex = 297; -- cgit v1.2.3-56-ge451