/* Read a line of text from the file, null terminate it. Function returns zero if EOF. Deletes all CRs and Control-Zs from the stream. Lines are terminated by LFs. */ short rline(file,buf,len) int file; char *buf; int len; { int i; char notempty,c; i= 0; notempty= 0; --len; /* compensate for added NUL */ while (i < len) { if (! read(file,&c,1)) break; /* stop if empty */ if (c == 0x1a) continue; /* totally ignore ^Z, */ notempty= 1; /* not empty */ if (c == '\r') continue; /* skip CR, */ if (c == '\r' + 128) continue; /* skip soft CR, */ if (c == '\n') break; /* stop if LF */ buf[i++]= c; } buf[i]= '\0'; return(notempty); }