summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipsk/skippage.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipsk/skippage.c')
-rw-r--r--Build/source/texk/dvipsk/skippage.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/Build/source/texk/dvipsk/skippage.c b/Build/source/texk/dvipsk/skippage.c
new file mode 100644
index 00000000000..70fca7645b4
--- /dev/null
+++ b/Build/source/texk/dvipsk/skippage.c
@@ -0,0 +1,80 @@
+/*
+ * Skips over a page, collecting possible font definitions. A very simple
+ * case statement insures we maintain sync with the dvi file by collecting
+ * the necessary parameters; but font definitions must be processed normally.
+ */
+#include "dvips.h" /* The copyright notice in that file is included too! */
+
+/*
+ * The external declarations:
+ */
+#include "protos.h"
+
+/*
+ * And now the big routine.
+ */
+void
+skippage(void)
+{
+ register shalfword cmd;
+ register integer i;
+
+#ifdef DEBUG
+ if (dd(D_PAGE))
+#ifdef SHORTINT
+ fprintf(stderr,"Skipping page %ld\n", pagenum);
+#else /* ~SHORTINT */
+ fprintf(stderr,"Skipping page %d\n", pagenum);
+#endif /* ~SHORTINT */
+#endif /* DEBUG */
+/* skipover(40); skip rest of bop command? how did this get in here? */
+ bopcolor(0);
+ while ((cmd=dvibyte())!=140) {
+ switch (cmd) {
+case 255: /* pTeX's dir or undefined */
+ if (!noptex) {
+ cmd = dvibyte();
+ break;
+ }
+/* illegal commands */
+case 139: case 247: case 248: case 249: /* bop, pre, post, post_post */
+case 250: case 251: case 252: case 253: case 254: /* undefined */
+ sprintf(errbuf,
+ "! DVI file contains unexpected command (%d)",cmd);
+ error(errbuf);
+/* eight byte commands */
+case 132: case 137:
+ cmd = dvibyte();
+ cmd = dvibyte();
+ cmd = dvibyte();
+ cmd = dvibyte();
+/* four byte commands */
+case 131: case 136:
+case 146: case 151: case 156: case 160: case 165: case 170: case 238:
+ cmd = dvibyte();
+/* three byte commands */
+case 130: case 135:
+case 145: case 150: case 155: case 159: case 164: case 169: case 237:
+ cmd = dvibyte();
+/* two byte commands */
+case 129: case 134:
+case 144: case 149: case 154: case 158: case 163: case 168: case 236:
+ cmd = dvibyte();
+/* one byte commands */
+case 128: case 133:
+case 143: case 148: case 153: case 157: case 162: case 167: case 235:
+ cmd = dvibyte();
+ break;
+/* specials */
+case 239: i = dvibyte(); predospecial(i, 0); break;
+case 240: i = twobytes(); predospecial(i, 0); break;
+case 241: i = threebytes(); predospecial(i, 0); break;
+case 242: i = signedquad(); predospecial(i, 0); break;
+/* font definition */
+case 243: case 244: case 245: case 246:
+ fontdef(cmd - 242);
+ break;
+default:;
+ }
+ }
+}