|
|
1.1 ! root 1: ! 2: /* Copyright Bell Telephone Laboratories Whippany, N.J. ! 3: ! 4: * ///////////////////////////////////// ! 5: * ///////////////////////////////////// ! 6: * /////////////// more //////////////// ! 7: * /// J. P. Hawkins WH X4610 8C-001 /// ! 8: * ///// Sat Feb 21 08:56:12 1981 ////// ! 9: * ///////////////////////////////////// ! 10: * ///////////////////////////////////// ! 11: * @(#) more.c: V1.2 9/9/81 ! 12: ! 13: */ ! 14: #include "bas.h" ! 15: ! 16: int moreflag[8]; ! 17: char morebuf[8][132]; ! 18: extern struct FILTBL filtbl[]; ! 19: ! 20: more(fnum) ! 21: int fnum; /* BASIC file designator (table position) */ ! 22: { ! 23: int fd; ! 24: fd = filtbl[fnum].fildes; /* get real filedes */ ! 25: moreflag[fnum] = 1; /* set data pre-read */ ! 26: return(getmore(fd,&morebuf[fnum][0])); ! 27: } ! 28: ! 29: /* ! 30: * ! 31: * //// GET LINE FROM FILE //// ! 32: */ ! 33: fgetlin(tmpbuf,fnum) ! 34: char tmpbuf[]; ! 35: int fnum; /* file designator for BASIC */ ! 36: { ! 37: int fd; ! 38: ! 39: fd = filtbl[fnum].fildes; /* convert to system file descriptor */ ! 40: if(moreflag[fnum]) /* if buffer was read by "if more" */ ! 41: { ! 42: strcpy(tmpbuf,&morebuf[fnum][0]); /* just copy data already read */ ! 43: moreflag[fnum] = 0; ! 44: } ! 45: else ! 46: { ! 47: getmore(fd,tmpbuf); /* else do the read now */ ! 48: } ! 49: } ! 50: ! 51: getmore(fd,tmpbuf) ! 52: int fd; ! 53: char tmpbuf[]; ! 54: { ! 55: register i; ! 56: ! 57: i = 0; ! 58: while(read(fd,&tmpbuf[i],1) > 0) ! 59: { ! 60: if(tmpbuf[i] == '\n') ! 61: { ! 62: tmpbuf[i] = '\0'; ! 63: return(i); ! 64: } ! 65: i++; ! 66: } ! 67: if(i == 0) /* make sure buffer looks empty if nothing read */ ! 68: tmpbuf[0] = '\0'; ! 69: return(i); ! 70: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.