DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T b

⟦15e9b805e⟧ TextFile

    Length: 3303 (0xce7)
    Types: TextFile
    Names: »b_input.BSD4_n.c«

Derivation

└─⟦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« 

TextFile

#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);
}