|
|
1.1 ! root 1: /*- ! 2: * Copyright (c) 1979 The Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that: (1) source distributions retain this entire copyright ! 7: * notice and comment, and (2) distributions including binaries display ! 8: * the following acknowledgement: ``This product includes software ! 9: * developed by the University of California, Berkeley and its contributors'' ! 10: * in the documentation or other materials provided with the distribution ! 11: * and in all advertising materials mentioning features or use of this ! 12: * software. Neither the name of the University nor the names of its ! 13: * contributors may be used to endorse or promote products derived ! 14: * from this software without specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: static char sccsid[] = "@(#)IOSYNC.c 1.6 (Berkeley) 4/9/90"; ! 22: #endif /* not lint */ ! 23: ! 24: #include "h00vars.h" ! 25: ! 26: /* ! 27: * insure that a usable image is in the buffer window ! 28: */ ! 29: IOSYNC(curfile) ! 30: ! 31: register struct iorec *curfile; ! 32: { ! 33: char *limit, *ptr; ! 34: ! 35: if (curfile->funit & FWRITE) { ! 36: ERROR("%s: Attempt to read, but open for writing\n", ! 37: curfile->pfname); ! 38: return; ! 39: } ! 40: if ((curfile->funit & SYNC) == 0) { ! 41: return; ! 42: } ! 43: if (curfile->funit & EOFF) { ! 44: ERROR("%s: Tried to read past end of file\n", curfile->pfname); ! 45: return; ! 46: } ! 47: curfile->funit &= ~SYNC; ! 48: if (curfile->funit & SPEOLN) { ! 49: curfile->funit &= ~(SPEOLN|EOLN); ! 50: curfile->funit |= EOFF; ! 51: return; ! 52: } ! 53: fread(curfile->fileptr, (int)curfile->fsize, 1, curfile->fbuf); ! 54: if (ferror(curfile->fbuf)) { ! 55: ERROR("%s: Tried to read past end of file\n", curfile->pfname); ! 56: return; ! 57: } ! 58: if (feof(curfile->fbuf)) { ! 59: if (curfile->funit & FTEXT) { ! 60: *curfile->fileptr = ' '; ! 61: if (curfile->funit & EOLN) { ! 62: curfile->funit &= ~EOLN; ! 63: curfile->funit |= EOFF; ! 64: return; ! 65: } ! 66: curfile->funit |= (SPEOLN|EOLN); ! 67: return; ! 68: } ! 69: curfile->funit |= EOFF; ! 70: limit = &curfile->fileptr[curfile->fsize]; ! 71: for (ptr = curfile->fileptr; ptr < limit; ) ! 72: *ptr++ = 0; ! 73: return; ! 74: } ! 75: if (curfile->funit & FTEXT) { ! 76: if (*curfile->fileptr == '\n') { ! 77: curfile->funit |= EOLN; ! 78: *curfile->fileptr = ' '; ! 79: return; ! 80: } ! 81: curfile->funit &= ~EOLN; ! 82: } ! 83: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.