#include "defs.h" /* * input library * * S. R. Bourne * Bell Telephone Laboratories * */ FILE _infile; FILEPTR standin = &_infile; readc() { REG INT c; REG INT len; REG FILEPTR f; retry: IF f=standin, f->fnxt!=f->fend THEN c = *f->fnxt++; IF c==NL THEN f->flin++; FI ELIF (f->fstatus&F_EOF) ORF f->fdes<0 THEN c=EOF; f->fstatus |= F_EOF; ELIF (len=read(f->fdes,f->fbuf,f->fsiz))==0 THEN close(f->fdes); f->fdes = -1; c=EOF; f->fstatus |= F_EOF; ELSE f->fend = (f->fnxt = f->fbuf)+len; IF len<0 THEN return(c=NL); ELSE goto retry; FI FI return(c); } backspace(f) FILEPTR f; { IF (f->fend <= f->fbuf) ORF (f->fnxt <= f->fbuf) THEN abend("backspace"); ELIF (*--f->fnxt)==NL THEN f->flin--; FI }