|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 2123 (0x84b)
Types: TextFile
Names: »scanpost.c«
└─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89
└─⟦this⟧ »./DVIware/laser-setters/umd-dvi/lib/scanpost.c«
/*
* Copyright (c) 1987 University of Maryland Department of Computer Science.
* All rights reserved. Permission to copy for any purpose is hereby granted
* so long as this copyright notice remains intact.
*/
#ifndef lint
static char rcsid[] = "$Header: scanpost.c,v 2.3 87/06/16 18:28:54 chris Exp $";
#endif
/*
* ScanPostAmble - read a DVI postamble.
*/
#include <stdio.h>
#include "types.h"
#include "dvicodes.h"
#include "fio.h"
#include "postamble.h"
ScanPostAmble(f, headerfunc, fontfunc)
register FILE *f;
int (*headerfunc)();
register int (*fontfunc)();
{
register int n;
register char *s;
char name[512];
if (FindPostAmble(f))
GripeCannotFindPostamble();
if (GetByte(f) != Sign8(DVI_POST))
GripeMissingOp("POST");
/* Read the postamble info stuff. */
{
struct PostAmbleInfo pai;
register struct PostAmbleInfo *p = &pai;
p->pai_PrevPagePointer = GetLong(f);
p->pai_Numerator = GetLong(f);
p->pai_Denominator = GetLong(f);
p->pai_DVIMag = GetLong(f);
p->pai_TallestPageHeight = GetLong(f);
p->pai_WidestPageWidth = GetLong(f);
p->pai_DVIStackSize = GetWord(f);
p->pai_NumberOfPages = GetWord(f);
(*headerfunc)(p);
}
/* Now read all the font definitions. */
{
struct PostAmbleFont paf;
register struct PostAmbleFont *p = &paf;
for (;;) {
switch (UnSign8(getc(f))) {
case DVI_FNTDEF1:
p->paf_DVIFontIndex = UnSign8(getc(f));
break;
case DVI_FNTDEF2:
p->paf_DVIFontIndex = UnSign16(GetWord(f));
break;
case DVI_FNTDEF3:
p->paf_DVIFontIndex = UnSign24(Get3Byte(f));
break;
case DVI_FNTDEF4:
p->paf_DVIFontIndex = GetLong(f);
break;
case DVI_POSTPOST:
return;
default:
GripeMissingOp("POSTPOST");
/*NOTREACHED*/
}
p->paf_DVIChecksum = GetLong(f);
p->paf_DVIMag = GetLong(f);
p->paf_DVIDesignSize = GetLong(f);
p->paf_n1 = UnSign8(getc(f));
p->paf_n2 = UnSign8(getc(f));
p->paf_name = name; /* never trust people not to
clobber it */
n = p->paf_n1 + p->paf_n2;
s = name;
while (--n >= 0)
*s++ = GetByte(f);
*s = 0;
(*fontfunc)(p);
}
}
}