Commit | Line | Data |
---|---|---|
ffbbb01b KM |
1 | /* Copyright (c) 1979 Regents of the University of California */ |
2 | ||
e804469b | 3 | static char sccsid[] = "@(#)READ4.c 1.6 4/9/82"; |
ffbbb01b KM |
4 | |
5 | #include "h00vars.h" | |
049a9cea KM |
6 | #include <errno.h> |
7 | extern int errno; | |
ffbbb01b | 8 | |
492cc5d3 | 9 | long |
ffbbb01b KM |
10 | READ4(curfile) |
11 | ||
12 | register struct iorec *curfile; | |
13 | { | |
492cc5d3 KM |
14 | long data; |
15 | int retval; | |
ffbbb01b KM |
16 | |
17 | if (curfile->funit & FWRITE) { | |
86997b19 KM |
18 | ERROR("%s: Attempt to read, but open for writing\n", |
19 | curfile->pfname); | |
ffbbb01b KM |
20 | return; |
21 | } | |
22 | UNSYNC(curfile); | |
049a9cea | 23 | errno = 0; |
53909d1e KM |
24 | retval = fscanf(curfile->fbuf, "%ld", &data); |
25 | if (retval == EOF) { | |
86997b19 | 26 | ERROR("%s: Tried to read past end of file\n", curfile->pfname); |
53909d1e KM |
27 | return; |
28 | } | |
29 | if (retval == 0) { | |
86997b19 | 30 | ERROR("%s: Bad data found on integer read\n", curfile->pfname); |
ffbbb01b KM |
31 | return; |
32 | } | |
049a9cea KM |
33 | if (errno == ERANGE) { |
34 | ERROR("%s: Overflow on integer read\n", curfile->pfname); | |
35 | return; | |
36 | } | |
37 | if (errno != 0) { | |
38 | PERROR(curfile->pfname); | |
39 | return; | |
40 | } | |
e5053b93 | 41 | curfile->funit &= ~EOLN; |
ffbbb01b KM |
42 | curfile->funit |= SYNC; |
43 | return data; | |
44 | } |