|
|
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.