From f7a916f7620c749d440cb6a76010641675217689 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Thu, 2 Dec 2021 09:18:24 -0800 Subject: many small updates --- src/base/bufio/readuntil.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/base/bufio/readuntil.c') 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; } -- cgit v1.2.1