|
|
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 b
Length: 3303 (0xce7)
Types: TextFile
Names: »b_input.BSD4_n.c«
└─⟦060c9c824⟧ Bits:30007080 DKUUG TeX 2/12/89
└─⟦this⟧ »./tex82/Unsupported/MFpxl/mflib/b_input.BSD4_n.c«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
└─⟦beba6c409⟧ »unix3.0/Unsupported.tar.Z«
└─⟦25c524ae4⟧
└─⟦this⟧ »Unsupported/MFpxl/mflib/b_input.BSD4_n.c«
#ifndef lint
static char RCSid[] = "$Header: b_input.c,v 1.0 86/01/31 14:58:03 richards Released $";
#endif
/*
* Byte Input routines: a compiler independent set of routines for
* reading byte files for the MF utilities
*
*
* function breadunsigned(var bf: bytefile): integer;
* { return next byte of byte file as unsigned int }
*
* function breadsigned(var bf: bytefile): integer;
* { return next byte of byte file as signed value }
*
* function bread2unsigned(var bf: bytefile): integer;
* function bread2signed(var bf: bytefile): integer;
* function bread3unsigned(var bf: bytefile): integer;
* function bread3signed(var bf: bytefile): integer;
* function bread4signed(var bf: bytefile): integer;
* { similar to breadsigned/unsigned; but return }
* { 2, 3, or 4 bytes, either as signed or }
* { unsigned value }
*
*/
#include <stdio.h>
#include "mftypes.h"
/*
* function breadsigned(var f: bytefile): integer;
*
* read next byte (signed) from bytefile "f".
* if EOF is true or file isn't open, return 0
*/
integer breadsigned(bf)
bytefile *bf;
{
register FILE *fp = bf->b_fp;
register int c;
if (fp == NULL || (c = getc(fp)) == EOF)
return(0);
if (bf->b_locptr)
*bf->b_locptr += 1;
return((char)c);
}
/*
* function breadunsigned(var bf: bytefile): integer;
*
* read next byte (unsigned) from bytefile bf.
* if EOF is true or file isn't open, return 0
*/
integer breadunsigned(bf)
bytefile *bf;
{
register FILE *fp = bf->b_fp;
register int c;
if (fp == NULL || (c = getc(fp)) == EOF)
return(0);
if (bf->b_locptr)
*bf->b_locptr += 1;
return((unsigned char)c);
}
/*
* and the remaining breadbyte functions:
*/
integer bread2signed(bf)
bytefile *bf;
{
register FILE *fp = bf->b_fp;
register int w;
if (fp == NULL || (w = getc(fp)) == EOF)
return(0);
w = ((char)w << 8) | ((unsigned char)getc(fp));
if (bf->b_locptr)
*bf->b_locptr += 2;
return(w);
}
integer bread2unsigned(bf)
bytefile *bf;
{
register FILE *fp = bf->b_fp;
register int w;
if (fp == NULL || (w = getc(fp)) == EOF)
return(0);
w = ((unsigned char)w << 8) | ((unsigned char)getc(fp));
if (bf->b_locptr)
*bf->b_locptr += 2;
return(w);
}
integer bread3signed(bf)
bytefile *bf;
{
register FILE *fp = bf->b_fp;
register int w;
if (fp == NULL || (w = getc(fp)) == EOF)
return(0);
w = ( char)w << 16;
w |= ((unsigned char)getc(fp)) << 8;
w |= ((unsigned char)getc(fp));
if (bf->b_locptr)
*bf->b_locptr += 3;
return(w);
}
integer bread3unsigned(bf)
bytefile *bf;
{
register FILE *fp = bf->b_fp;
register int w;
if (fp == NULL || (w = getc(fp)) == EOF)
return(0);
w = (unsigned char)w << 16;
w |= ((unsigned char)getc(fp)) << 8;
w |= ((unsigned char)getc(fp));
if (bf->b_locptr)
*bf->b_locptr += 3;
return(w);
}
integer bread4signed(bf)
bytefile *bf;
{
register FILE *fp = bf->b_fp;
register int w;
if (fp == NULL || (w = getc(fp)) == EOF)
return(0);
w = w << 24;
w |= ((unsigned char)getc(fp)) << 16;
w |= ((unsigned char)getc(fp)) << 8;
w |= ((unsigned char)getc(fp));
if (bf->b_locptr)
*bf->b_locptr += 4;
return(w);
}