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