|
|
1.1 root 1: #define FIO_IMP
2: #include "fio.h"
3: #include <libc.h>
4:
5: char *
6: Frdline(fd)
7: {
8: register unsigned char *p;
9: register Fbuffer *f;
10: register n;
11: register char *nextnl;
12:
13: FIOSET(f, fd);
14: while((nextnl = memchr(f->next, '\n', (COUNT)(f->end-f->next))) == 0){
15: if(f->next == f->buf){
16: if(f->end >= &f->buf[FIOBSIZE])
17: f->end = &f->buf[FIOBSIZE-64]; /* full buffer, no newline */
18: } else {
19: n = f->next-f->buf;
20: memcpy(f->buf, f->next, (COUNT)(FIOBSIZE-n));
21: f->next -= n;
22: f->end -= n;
23: }
24: if(Ffillbuf(fd) <= 0)
25: return((char *)0);
26: }
27: f->lnext = f->next;
28: f->next = (unsigned char *)(nextnl+1);
29: *nextnl = 0;
30: f->flags = (f->flags|FIO_RDLAST)&~FIO_WRITING;
31: return((char *)f->lnext);
32: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.