summaryrefslogtreecommitdiffstats
path: root/term_ps.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-03-27 21:33:20 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-03-27 21:33:20 +0000
commitda7b34abc5bd5ab75be7d8fe2946140d523aebba (patch)
tree863ad72a29ed67e2330f5edcbf44992776cdf2d8 /term_ps.c
parentaeaacb622a48de841df3d2733d63ed99db74ffbc (diff)
downloadmandoc-da7b34abc5bd5ab75be7d8fe2946140d523aebba.tar.gz
Actually use the new man.conf(5) "output" directive.
Additional functionality, yet minus 45 lines of code.
Diffstat (limited to 'term_ps.c')
-rw-r--r--term_ps.c31
1 files changed, 9 insertions, 22 deletions
diff --git a/term_ps.c b/term_ps.c
index 0d5dda51..c819b55f 100644
--- a/term_ps.c
+++ b/term_ps.c
@@ -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;