From 9695ea005d4af93dcd60f74f10fd3c54499a182f Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Thu, 11 Nov 2021 16:31:58 -0800 Subject: chore: split up base library into individual files for smaller binaries --- sys/base/bufio/read.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 sys/base/bufio/read.c (limited to 'sys/base/bufio/read.c') diff --git a/sys/base/bufio/read.c b/sys/base/bufio/read.c new file mode 100644 index 0000000..09a9f83 --- /dev/null +++ b/sys/base/bufio/read.c @@ -0,0 +1,36 @@ +#include "internal.h" +#include "refill.h" + +int +bufio·read(io·Buffer *buf, int sz, int n, void *out) +{ + byte *wtr; + int nr, rem, diff; + + if(n == 0 || buf->state & bufio·end) + return bufio·err; + + assert(buf->state & bufio·rdr); + + wtr = out; + rem = n*sz; + + while(rem > 0){ + diff = buf->end - buf->pos; + nr = MIN(diff, rem); + if(!nr){ + if(buf->state & bufio·end) + break; + if(refill(buf) <= 0) + break; + + continue; + } + memmove(wtr, buf->pos, nr); + wtr += nr; + buf->pos += nr; + rem -= nr; + } + + return n - rem/sz; +} -- cgit v1.2.1