From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from www.sonnenberger.org (www.sonnenberger.org [92.79.50.50]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id o5TGbDiE014639 for ; Tue, 29 Jun 2010 12:37:14 -0400 (EDT) Received: from britannica.bec.de (www.sonnenberger.org [192.168.1.10]) by www.sonnenberger.org (Postfix) with ESMTP id 2F84F66665 for ; Tue, 29 Jun 2010 18:36:58 +0200 (CEST) Received: by britannica.bec.de (Postfix, from userid 1000) id ABF031507E; Tue, 29 Jun 2010 18:34:45 +0200 (CEST) Date: Tue, 29 Jun 2010 18:34:45 +0200 From: Joerg Sonnenberger To: source@mdocml.bsd.lv Subject: Re: mdocml: Add in -Opaper=xxx support for -Tps postscript. Message-ID: <20100629163445.GA265@britannica.bec.de> Mail-Followup-To: source@mdocml.bsd.lv References: <201006291453.o5TErEHu003917@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201006291453.o5TErEHu003917@krisdoz.my.domain> User-Agent: Mutt/1.5.20 (2009-06-14) I would suggest reordering the option parsing slightly: Just set the keep a variable with the default paper size as string. After parsing all options, set the paper size accordingly (single point of reference value). Maybe additionally accept input of the format 100x100 to get a paper size of 100mm times 100mm. Default margins might be useful to derive from the paper size as well. Joerg On Tue, Jun 29, 2010 at 10:53:14AM -0400, kristaps@mdocml.bsd.lv wrote: > Log Message: > ----------- > Add in -Opaper=xxx support for -Tps postscript. This doesn't have any > functional changes beyond the getsubopt() parse in term_ps.c. If you > want to test this (it only does -Opaper=a4 and -Opaper=letter; adding > more is trivial), make sure you specify (e.g.) -sPAPERSIZE=a4 to gs(1). > > Modified Files: > -------------- > mdocml: > main.c > main.h > term_ps.c > > Revision Data > ------------- > Index: term_ps.c > =================================================================== > RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/term_ps.c,v > retrieving revision 1.16 > retrieving revision 1.17 > diff -Lterm_ps.c -Lterm_ps.c -u -p -r1.16 -r1.17 > --- term_ps.c > +++ term_ps.c > @@ -22,6 +22,7 @@ > > #include > #include > +#include > #include > #include > #include > @@ -373,14 +374,17 @@ static void ps_setfont(struct termp * > > > 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); > Index: main.h > =================================================================== > RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/main.h,v > retrieving revision 1.7 > retrieving revision 1.8 > diff -Lmain.h -Lmain.h -u -p -r1.7 -r1.8 > --- main.h > +++ main.h > @@ -44,7 +44,7 @@ void tree_man(void *, const struct ma > void *ascii_alloc(char *); > void ascii_free(void *); > > -void *ps_alloc(void); > +void *ps_alloc(char *); > void ps_free(void *); > > void terminal_mdoc(void *, const struct mdoc *); > Index: main.c > =================================================================== > RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/main.c,v > retrieving revision 1.92 > retrieving revision 1.93 > diff -Lmain.c -Lmain.c -u -p -r1.92 -r1.93 > --- main.c > +++ main.c > @@ -599,7 +599,7 @@ fdesc(struct curparse *curp) > curp->outfree = ascii_free; > break; > case (OUTT_PS): > - curp->outdata = ps_alloc(); > + curp->outdata = ps_alloc(curp->outopts); > curp->outfree = ps_free; > break; > default: > -- > To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv