1 #include "u.h" 2 #include "lib.h" 3 #include "mem.h" 4 #include "dat.h" 5 #include "fns.h" 6 #include "io.h" 7 8 int 9 qgetc(IOQ *q) 10 { 11 int c; 12 13 if(q->in == q->out) 14 return -1; 15 c = *q->out; 16 if(q->out == q->buf+sizeof(q->buf)-1) 17 q->out = q->buf; 18 else 19 q->out++; 20 return c; 21 } 22 23 static int 24 qputc(IOQ *q, int c) 25 { 26 uchar *nextin; 27 if(q->in >= &q->buf[sizeof(q->buf)-1]) 28 nextin = q->buf; 29 else 30 nextin = q->in+1; 31 if(nextin == q->out) 32 return -1; 33 *q->in = c; 34 q->in = nextin; 35 return 0; 36 } 37 38 void 39 qinit(IOQ *q) 40 { 41 q->in = q->out = q->buf; 42 q->getc = qgetc; 43 q->putc = qputc; 44 } 45