summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipsk/dosection.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipsk/dosection.c')
-rw-r--r--Build/source/texk/dvipsk/dosection.c293
1 files changed, 0 insertions, 293 deletions
diff --git a/Build/source/texk/dvipsk/dosection.c b/Build/source/texk/dvipsk/dosection.c
deleted file mode 100644
index f93fde5eafe..00000000000
--- a/Build/source/texk/dvipsk/dosection.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Code to output PostScript commands for one section of the document.
- */
-#include "dvips.h" /* The copyright notice in that file is included too! */
-/*
- * The external declarations:
- */
-#include "protos.h"
-
-static int psfont;
-#ifdef HPS
-int pagecounter;
-#endif
-
-/*
- * Now we have the main procedure.
- */
-void
-dosection(sectiontype *s, int c)
-{
- charusetype *cu;
- integer prevptr;
- int np;
- int k;
- integer thispage = 0;
- char buf[300]; /* really 253 */
-
- bmenc_startsection() ;
- dopsfont(s);
-#ifdef HPS
- if (HPS_FLAG) pagecounter = 0;
-#endif
-
- if (multiplesects) {
- setup();
- }
- cmdout("TeXDict");
- cmdout("begin");
- numout(hpapersize);
- numout(vpapersize);
- doubleout(mag);
- numout((integer)DPI);
- numout((integer)VDPI);
- /* possibly lines in eps files are supposed to be <= 255;
- not worth testing the limits merely to output a long file name. */
- snprintf(buf, sizeof(buf), "(%.250s)", fulliname);
- cmdout(buf);
- newline();
- cmdout("@start");
- if (multiplesects)
- cmdout("bos");
-/*
- * We insure raster is even-word aligned, because download might want that.
- */
- if (bytesleft & 1) {
- bytesleft--;
- raster++;
- }
- cleanres();
- cu = (charusetype *) (s + 1);
- psfont = 1;
- while (cu->fd) {
- if (cu->psfused)
- cu->fd->psflag = EXISTS;
- download(cu++, psfont++);
- }
- fonttableout();
- if (! multiplesects) {
- cmdout("end");
- setup();
- }
- for (cu=(charusetype *)(s+1); cu->fd; cu++)
- cu->fd->psflag = 0;
- while (c > 0) {
- c--;
- prevptr = s->bos;
- if (! reverse)
- fseek(dvifile, (long)prevptr, 0);
- np = s->numpages;
- while (np-- != 0) {
- if (reverse)
- fseek(dvifile, (long)prevptr, 0);
- pagenum = signedquad();
- if ((evenpages && (pagenum & 1)) || (oddpages && (pagenum & 1)==0) ||
- (pagelist && !InPageList(pagenum))) {
- if (reverse) {
- skipover(36);
- prevptr = signedquad()+1;
- } else {
- skipover(40);
- skippage();
- skipnop();
- }
- ++np; /* this page wasn't counted for s->numpages */
- continue;
- }
-/*
- * We want to take the base 10 log of the number. It's probably
- * small, so we do it quick.
- */
- if (! quiet) {
- int t = pagenum, i = 0;
- if (t < 0) {
- t = -t;
- i++;
- }
- do {
- i++;
- t /= 10;
- } while (t > 0);
- if (pagecopies < 20)
- i += pagecopies - 1;
- if (i + prettycolumn > STDOUTSIZE) {
- fprintf(stderr, "\n");
- prettycolumn = 0;
- }
- prettycolumn += i + 1;
-#ifdef SHORTINT
- fprintf(stderr, "[%ld", pagenum);
-#else /* ~SHORTINT */
- fprintf(stderr, "[%d", pagenum);
-#endif /* ~SHORTINT */
- fflush(stderr);
- }
- skipover(36);
- prevptr = signedquad()+1;
- for (k=0; k<pagecopies; k++) {
- if (k == 0) {
- if (pagecopies > 1)
- thispage = ftell(dvifile);
- } else {
- fseek(dvifile, (long)thispage, 0);
- if (prettycolumn + 1 > STDOUTSIZE) {
- fprintf(stderr, "\n");
- prettycolumn = 0;
- }
- fprintf(stderr, ".");
- fflush(stderr);
- prettycolumn++;
- }
- dopage();
- }
- if (! quiet) {
- fprintf(stderr, "] ");
- fflush(stderr);
- prettycolumn += 2;
- }
- if (! reverse)
- skipnop();
- }
- }
- if (! multiplesects && ! disablecomments) {
- newline();
- fprintf(bitfile, "%%%%Trailer\n");
- }
- if (multiplesects) {
- if (! disablecomments) {
- newline();
- fprintf(bitfile, "%%DVIPSSectionTrailer\n");
- }
- cmdout("eos");
- cmdout("end");
- }
-#ifdef HPS
- if (HPS_FLAG) cmdout("\nend"); /* close off HPSDict */
-#endif
- if (multiplesects && ! disablecomments) {
- newline();
- fprintf(bitfile, "%%DVIPSEndSection\n");
- linepos = 0;
- }
-}
-/*
- * Handle a list of pages for dvips. Code based on dvi2ps 2.49,
- * maintained by Piet van Oostrum, piet@cs.ruu.nl. Collected and
- * modularized for inclusion in dvips by metcalf@lcs.mit.edu.
- */
-
-#include <ctype.h>
-#define MAXPAGE (1000000000) /* assume no pages out of this range */
-struct p_list_str {
- struct p_list_str *next; /* next in a series of alternates */
- integer ps_low, ps_high; /* allowed range */
-} *ppages = 0; /* the list of allowed pages */
-
-/*-->InPageList*/
-/**********************************************************************/
-/****************************** InPageList **************************/
-/**********************************************************************/
-/* Return true iff i is one of the desired output pages */
-
-int
-InPageList(integer i)
-{
- register struct p_list_str *pl = ppages;
-
- while (pl) {
- if ( i >= pl -> ps_low && i <= pl -> ps_high)
- return 1; /* success */
- pl = pl -> next;
- }
- return 0;
-}
-
-static void
-InstallPL(integer pslow, integer pshigh)
-{
- register struct p_list_str *pl;
-
- pl = (struct p_list_str *)mymalloc((integer)(sizeof *pl));
- pl -> next = ppages;
- pl -> ps_low = pslow;
- pl -> ps_high = pshigh;
- ppages = pl;
-}
-
-/* Parse a string representing a list of pages. Return 0 iff ok. As a
- side effect, the page selection(s) is (are) prepended to ppages. */
-
-int
-ParsePages(register char *s)
-{
- register int c; /* current character */
- register integer n = 0, /* current numeric value */
- innumber; /* true => gathering a number */
- integer ps_low = 0, ps_high = 0;
- int range, /* true => saw a range indicator */
- negative = 0; /* true => number being built is negative */
-
-#define white(x) ((x) == ' ' || (x) == '\t' || (x) == ',')
-
- range = 0;
- innumber = 0;
- for (;;) {
- c = *s++;
- if ( !innumber && !range) {/* nothing special going on */
- if (c == 0)
- return 0;
- if (white (c))
- continue;
- }
- if (c == '-' && !innumber) {
- innumber++;
- negative++;
- n = 0;
- continue;
- }
- if ('0' <= c && c <= '9') { /* accumulate numeric value */
- if (!innumber) {
- innumber++;
- negative = 0;
- n = c - '0';
- continue;
- }
- n *= 10;
- n += negative ? '0' - c : c - '0';
- continue;
- }
- if (c == '-' || c == ':') {/* here's a range */
- if (range)
- return (-1);
- if (innumber) { /* have a lower bound */
- ps_low = n;
- }
- else
- ps_low = -MAXPAGE;
- range++;
- innumber = 0;
- continue;
- }
- if (c == 0 || white (c)) {/* end of this range */
- if (!innumber) { /* no upper bound */
- ps_high = MAXPAGE;
- if (!range) /* no lower bound either */
- ps_low = -MAXPAGE;
- }
- else { /* have an upper bound */
- ps_high = n;
- if (!range) { /* no range => lower bound == upper */
- ps_low = ps_high;
- }
- }
- InstallPL (ps_low, ps_high);
- if (c == 0)
- return 0;
- range = 0;
- innumber = 0;
- continue;
- }
- return (-1);
- }
-#undef white
-}