|
|
1.1 ! root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.