|
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 f
Length: 2156 (0x86c) Types: TextFile Names: »fe_read.c«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦c319c2751⟧ »unix3.0/TeX3.0.tar.Z« └─⟦036c765ac⟧ └─⟦this⟧ »TeX3.0/TeXcontrib/salkind/src/fe_read.c« └─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89 └─⟦this⟧ »./tex82/TeXcontrib/salkind/src/fe_read.c« └─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z« └─⟦c58930e5c⟧ └─⟦this⟧ »TeX3.14/TeXcontrib/salkind/src/fe_read.c«
#include <stdio.h> #include "rst.h" #define in1byt(fp) inbytes(fp, 1) #define in2byt(fp) inbytes(fp, 2) #define in3byt(fp) inbytes(fp, 3) #define in4byt(fp) inbytes(fp, 4) static long inbytes(); read_filemark(s, fp) char *s; FILE *fp; { int i = 8; fseek(fp, 0L, 0); while (i-- > 0) *s++ = in1byt(fp); } read_preamble(rp, fp) struct rst_preamble *rp; FILE *fp; { fseek(fp, 8L, 0); /* past file mark */ rp->rp_bytes = in2byt(fp); rp->rp_version = in1byt(fp); rp->rp_glyphptr = in3byt(fp); rp->rp_firstglyph = in2byt(fp); rp->rp_lastglyph = in2byt(fp); rp->rp_fontmag = in4byt(fp); rp->rp_designsize = in4byt(fp); rp->rp_interline = in4byt(fp); rp->rp_interword = in4byt(fp); rp->rp_rotation = in2byt(fp); rp->rp_charadvance = in1byt(fp); rp->rp_lineadvance = in1byt(fp); rp->rp_checksum = in4byt(fp); rp->rp_fontres = in2byt(fp); indesc(&rp->rp_fontident, fp); indesc(&rp->rp_facetype, fp); indesc(&rp->rp_outdevice, fp); indesc(&rp->rp_creator, fp); } read_glyphdir(rp, gd, fp) struct rst_preamble *rp; struct rst_glyph_entry *gd; FILE *fp; { register int i; fseek(fp, (long)rp->rp_glyphptr, 0); for (i = rp->rp_firstglyph; i <= rp->rp_lastglyph; i++) { gd[i].rg_h = in2byt(fp); gd[i].rg_w = in2byt(fp); gd[i].rg_y = in2byt(fp); gd[i].rg_x = in2byt(fp); gd[i].rg_width = in4byt(fp); gd[i].rg_offset = in3byt(fp); } } /* * Read size bytes from the FILE fp, constructing * them into an integer * * The routine is for reading unsigned numbers, but it will * also work for two and four byte signed numbers when assigning * into a two and four byte field (respectively). This * covers everything that occurs in an RST file. */ static long inbytes(fp, size) FILE *fp; int size; { register int i, c; long x; x = 0; for (i = 0; i < size; i++) { if ((c = getc(fp)) == EOF) { fprintf(stderr, "Unexpected EOF in raster\n"); exit(1); } x <<= 8; x += c & 0377; } return(x); } /* read a string descriptor */ static indesc(dp, fp) struct rst_dsc *dp; FILE *fp; { int i; char *p; dp->s_l = in1byt(fp); i = dp->s_l; p = dp->s_p; while (i-- > 0) *p++ = in1byt(fp); *p = '\0'; }