Annotation of 40BSD/lib/libpc/IOSYNC.c, revision 1.1.1.1

1.1       root        1: /* Copyright (c) 1979 Regents of the University of California */
                      2: 
                      3: static char sccsid[] = "@(#)IOSYNC.c 1.1 10/29/80";
                      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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.