|
|
1.1 ! root 1: /* Copyright AT&T Bell Laboratories, 1993 */ ! 2: #include <stdio.h> ! 3: ! 4: char * ! 5: fgets(char *ptr, int n, FILE *iop) ! 6: { ! 7: int l = 0; ! 8: char *s = ptr; ! 9: unsigned char *t; ! 10: while(--n > 0) { ! 11: l = iop->_cnt; ! 12: if(l > 0) { ! 13: if(l > n) l = n; ! 14: t = iop->_ptr; ! 15: while(--l >= 0 && (*s++ = *t++) != '\n') ! 16: continue; ! 17: l = t - iop->_ptr; ! 18: iop->_ptr = t; ! 19: iop->_cnt -= l; ! 20: if(t[-1] == '\n' || (n -= l) <= 0) ! 21: break; ! 22: } ! 23: l = getc(iop); ! 24: if(l == EOF) ! 25: break; ! 26: *s++ = l; ! 27: if(l == '\n') ! 28: break; ! 29: } ! 30: *s = 0; ! 31: return l<0 && s==ptr? 0: ptr; ! 32: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.