/* * Copyright (c) 1987, 1989 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. */ /* * File I/O subroutines for getting bytes, words, 3bytes, and longwords. * N.B.: these believe they are working on a DVI file. */ #include #include "types.h" #include "error.h" #include "fio.h" static char eofmsg[] = "unexpected EOF, help"; /* for symmetry: */ #define fGetByte(fp, r) ((r) = getc(fp)) #define Sign32(i) (i) #define make(name, func, signextend) \ i32 \ name(FILE *fp) \ { \ register i32 n; \ \ func(fp, n); \ if (feof(fp)) \ error(1, 0, eofmsg); \ return (signextend(n)); \ } make(GetByte, fGetByte, Sign8) make(GetWord, fGetWord, Sign16) make(Get3Byte, fGet3Byte, Sign24) make(GetLong, fGetLong, Sign32)