aboutsummaryrefslogtreecommitdiff
path: root/src/base/bufio/getc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/bufio/getc.c')
-rw-r--r--src/base/bufio/getc.c45
1 files changed, 0 insertions, 45 deletions
diff --git a/src/base/bufio/getc.c b/src/base/bufio/getc.c
deleted file mode 100644
index 264e01d..0000000
--- a/src/base/bufio/getc.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "internal.h"
-
-int
-bio·getc(io·Header *io)
-{
- int i;
- intptr nr;
-
-loop:
- i = io->ilen;
- if(i != 0){
- io->ilen = i+1;
- return io->e[i];
- }
-
- if(io->state != io·BufRdr){
- if(io->state == io·BufEnd)
- io->state = io·BufRdr;
- return io·BufEof;
- }
-
- /*
- * get next buffer, try to keep io·BufUngets bytes
- * pre-catenated from the previous read to allow for ungets
- */
- mem·move(io->b-io·BufUngets, io->e-io·BufUngets, io·BufUngets);
- if(sys·read(io->fd, io->cap, io->b, &nr)){
- io->state = io·BufNil;
- return io·BufEof;
- }
- if(nr == 0){
- io->state = io·BufEnd;
- return io·BufEof;
- }
-
- if(nr < io->cap){
- mem·move(io->e-i-io·BufUngets, io->b-io·BufUngets, i+io·BufUngets);
- io->g = io->e-i;
- }
-
- io->ilen = -i;
- io->pos += +i;
-
- goto loop;
-}