Commit | Line | Data |
---|---|---|
f2d6dc3b KM |
1 | /* Copyright (c) 1979 Regents of the University of California */ |
2 | ||
3 | static char sccsid[] = "@(#)IOSYNC.c 1.1 %G%"; | |
4 | ||
5 | #include "h00vars.h" | |
6 | #include "h01errs.h" | |
7 | ||
8 | /* | |
9 | * insure that a usable image is in the buffer window | |
10 | */ | |
11 | IOSYNC(curfile) | |
12 | ||
13 | register struct iorec *curfile; | |
14 | { | |
15 | register short unit = curfile->funit; | |
16 | char *limit, *ptr; | |
17 | ||
18 | if (unit & FWRITE) { | |
19 | ERROR(EREADIT, curfile->pfname); | |
20 | return; | |
21 | } | |
22 | if ((unit & SYNC) == 0) { | |
23 | return; | |
24 | } | |
25 | if (unit & EOFF) { | |
26 | ERROR(EPASTEOF, curfile->pfname); | |
27 | return; | |
28 | } | |
29 | unit &= ~SYNC; | |
30 | fread(curfile->fileptr, curfile->fsize, 1, curfile->fbuf); | |
31 | if (ferror(curfile->fbuf)) { | |
32 | ERROR(EPASTEOF, curfile->pfname); | |
33 | return; | |
34 | } | |
35 | if (feof(curfile->fbuf)) { | |
36 | curfile->funit = unit | EOFF; | |
37 | limit = &curfile->fileptr[curfile->fsize]; | |
38 | for (ptr = curfile->fileptr; ptr < limit; ) | |
39 | *ptr++ = 0; | |
40 | return; | |
41 | } | |
42 | if (unit & FTEXT) { | |
43 | if (*curfile->fileptr == '\n') { | |
44 | unit |= EOLN; | |
45 | *curfile->fileptr = ' '; | |
46 | } else { | |
47 | unit &= ~EOLN; | |
48 | } | |
49 | } | |
50 | curfile->funit = unit; | |
51 | } |