aboutsummaryrefslogtreecommitdiff
path: root/src/base/bufio/readuntil.c
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2021-12-02 09:18:24 -0800
committerNicholas Noll <nbnoll@eml.cc>2021-12-02 09:18:24 -0800
commitf7a916f7620c749d440cb6a76010641675217689 (patch)
treea77f29c25f6143645f11cefa6f30c22daa1c6549 /src/base/bufio/readuntil.c
parentabd5a5b67e5b87a1de73761172ff51cf2f8e1213 (diff)
many small updates
Diffstat (limited to 'src/base/bufio/readuntil.c')
-rw-r--r--src/base/bufio/readuntil.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/base/bufio/readuntil.c b/src/base/bufio/readuntil.c
index 8084cca..1a0faaf 100644
--- a/src/base/bufio/readuntil.c
+++ b/src/base/bufio/readuntil.c
@@ -11,7 +11,7 @@ bio·readuntil(io·Header *io, int delim)
if(io->state != io·BufRdr){
if(io->state == io·BufEnd)
io->state = io·BufRdr;
- io->line = 0;
+ io->nread = 0;
io->g = io->e;
return nil;
}
@@ -21,7 +21,7 @@ bio·readuntil(io·Header *io, int delim)
b = (char*)io->e - i;
if((e = mem·findc(b, i, delim)) != nil){
j = (e - b)+1;
- io->line = j;
+ io->nread = j;
io->ilen += j;
return b;
}
@@ -29,12 +29,13 @@ bio·readuntil(io·Header *io, int delim)
if(i < io->cap)
mem·move(io->b, b, i);
io->g = io->b;
+
/* write to the buffer while we search for delim */
b = (char *)io->b + i;
while(i < io->cap){
- if(sys·read(io->fd, io->cap-i, b, &j)){
+ if(sys·read(io->fd, io->cap-i, b, &j) || j == 0){
mem·move(io->e-i, io->b, i);
- io->line = +i;
+ io->nread = +i;
io->ilen = -i;
io->g = io->e - i;
return 0;
@@ -50,15 +51,15 @@ bio·readuntil(io·Header *io, int delim)
io->g = (uchar *)b;
}
j = (e - (char*)io->b) + 1;
- io->line = j;
+ io->nread = j;
io->ilen = j - i;
return b;
}
b += j;
}
- io->line = +io->cap;
+ io->nread = +io->cap;
io->ilen = -io->cap;
io->g = io->b;
- return 0;
+ return nil;
}