Blame


1 2277c5d7 2004-03-21 devnull #include "std.h"
2 2277c5d7 2004-03-21 devnull #include "dat.h"
3 2277c5d7 2004-03-21 devnull
4 2277c5d7 2004-03-21 devnull static Ioproc *cache[5];
5 2277c5d7 2004-03-21 devnull static int ncache;
6 2277c5d7 2004-03-21 devnull
7 2277c5d7 2004-03-21 devnull static Ioproc*
8 2277c5d7 2004-03-21 devnull xioproc(void)
9 2277c5d7 2004-03-21 devnull {
10 2277c5d7 2004-03-21 devnull Ioproc *c;
11 2277c5d7 2004-03-21 devnull int i;
12 2277c5d7 2004-03-21 devnull
13 2277c5d7 2004-03-21 devnull for(i=0; i<ncache; i++){
14 2277c5d7 2004-03-21 devnull if(c = cache[i]){
15 2277c5d7 2004-03-21 devnull cache[i] = nil;
16 2277c5d7 2004-03-21 devnull return c;
17 2277c5d7 2004-03-21 devnull }
18 2277c5d7 2004-03-21 devnull }
19 2277c5d7 2004-03-21 devnull
20 2277c5d7 2004-03-21 devnull return ioproc();
21 2277c5d7 2004-03-21 devnull }
22 2277c5d7 2004-03-21 devnull
23 2277c5d7 2004-03-21 devnull static void
24 2277c5d7 2004-03-21 devnull closexioproc(Ioproc *io)
25 2277c5d7 2004-03-21 devnull {
26 2277c5d7 2004-03-21 devnull int i;
27 2277c5d7 2004-03-21 devnull
28 2277c5d7 2004-03-21 devnull for(i=0; i<ncache; i++)
29 2277c5d7 2004-03-21 devnull if(cache[i] == nil){
30 2277c5d7 2004-03-21 devnull cache[i] = io;
31 2277c5d7 2004-03-21 devnull return;
32 2277c5d7 2004-03-21 devnull }
33 2277c5d7 2004-03-21 devnull
34 2277c5d7 2004-03-21 devnull closeioproc(io);
35 2277c5d7 2004-03-21 devnull }
36 2277c5d7 2004-03-21 devnull
37 2277c5d7 2004-03-21 devnull int
38 2277c5d7 2004-03-21 devnull xiodial(char *ds, char *local, char *dir, int *cfdp)
39 2277c5d7 2004-03-21 devnull {
40 2277c5d7 2004-03-21 devnull int fd;
41 2277c5d7 2004-03-21 devnull Ioproc *io;
42 2277c5d7 2004-03-21 devnull
43 2277c5d7 2004-03-21 devnull if((io = xioproc()) == nil)
44 2277c5d7 2004-03-21 devnull return -1;
45 2277c5d7 2004-03-21 devnull fd = iodial(io, ds, local, dir, cfdp);
46 2277c5d7 2004-03-21 devnull closexioproc(io);
47 2277c5d7 2004-03-21 devnull return fd;
48 2277c5d7 2004-03-21 devnull }
49 2277c5d7 2004-03-21 devnull
50 2277c5d7 2004-03-21 devnull void
51 2277c5d7 2004-03-21 devnull xioclose(int fd)
52 2277c5d7 2004-03-21 devnull {
53 2277c5d7 2004-03-21 devnull Ioproc *io;
54 2277c5d7 2004-03-21 devnull
55 2277c5d7 2004-03-21 devnull if((io = xioproc()) == nil){
56 2277c5d7 2004-03-21 devnull close(fd);
57 2277c5d7 2004-03-21 devnull return;
58 2277c5d7 2004-03-21 devnull }
59 2277c5d7 2004-03-21 devnull
60 2277c5d7 2004-03-21 devnull ioclose(io, fd);
61 2277c5d7 2004-03-21 devnull closexioproc(io);
62 2277c5d7 2004-03-21 devnull }
63 2277c5d7 2004-03-21 devnull
64 2277c5d7 2004-03-21 devnull int
65 2277c5d7 2004-03-21 devnull xiowrite(int fd, void *v, int n)
66 2277c5d7 2004-03-21 devnull {
67 2277c5d7 2004-03-21 devnull int m;
68 2277c5d7 2004-03-21 devnull Ioproc *io;
69 2277c5d7 2004-03-21 devnull
70 2277c5d7 2004-03-21 devnull if((io = xioproc()) == nil)
71 2277c5d7 2004-03-21 devnull return -1;
72 2277c5d7 2004-03-21 devnull m = iowrite(io, fd, v, n);
73 2277c5d7 2004-03-21 devnull closexioproc(io);
74 2277c5d7 2004-03-21 devnull if(m != n)
75 2277c5d7 2004-03-21 devnull return -1;
76 2277c5d7 2004-03-21 devnull return n;
77 2277c5d7 2004-03-21 devnull }
78 2277c5d7 2004-03-21 devnull
79 2277c5d7 2004-03-21 devnull static long
80 2277c5d7 2004-03-21 devnull _ioauthdial(va_list *arg)
81 2277c5d7 2004-03-21 devnull {
82 2277c5d7 2004-03-21 devnull char *net;
83 2277c5d7 2004-03-21 devnull char *dom;
84 2277c5d7 2004-03-21 devnull int fd;
85 2277c5d7 2004-03-21 devnull
86 2277c5d7 2004-03-21 devnull net = va_arg(*arg, char*);
87 2277c5d7 2004-03-21 devnull dom = va_arg(*arg, char*);
88 2277c5d7 2004-03-21 devnull fd = _authdial(net, dom);
89 2277c5d7 2004-03-21 devnull if(fd < 0)
90 2277c5d7 2004-03-21 devnull fprint(2, "authdial: %r");
91 2277c5d7 2004-03-21 devnull return fd;
92 2277c5d7 2004-03-21 devnull }
93 2277c5d7 2004-03-21 devnull
94 2277c5d7 2004-03-21 devnull int
95 2277c5d7 2004-03-21 devnull xioauthdial(char *net, char *dom)
96 2277c5d7 2004-03-21 devnull {
97 2277c5d7 2004-03-21 devnull int fd;
98 2277c5d7 2004-03-21 devnull Ioproc *io;
99 2277c5d7 2004-03-21 devnull
100 2277c5d7 2004-03-21 devnull if((io = xioproc()) == nil)
101 2277c5d7 2004-03-21 devnull return -1;
102 2277c5d7 2004-03-21 devnull fd = iocall(io, _ioauthdial, net, dom);
103 2277c5d7 2004-03-21 devnull closexioproc(io);
104 2277c5d7 2004-03-21 devnull return fd;
105 2277c5d7 2004-03-21 devnull }
106 2277c5d7 2004-03-21 devnull
107 2277c5d7 2004-03-21 devnull static long
108 2277c5d7 2004-03-21 devnull _ioasrdresp(va_list *arg)
109 2277c5d7 2004-03-21 devnull {
110 2277c5d7 2004-03-21 devnull int fd;
111 2277c5d7 2004-03-21 devnull void *a;
112 2277c5d7 2004-03-21 devnull int n;
113 2277c5d7 2004-03-21 devnull
114 2277c5d7 2004-03-21 devnull fd = va_arg(*arg, int);
115 2277c5d7 2004-03-21 devnull a = va_arg(*arg, void*);
116 2277c5d7 2004-03-21 devnull n = va_arg(*arg, int);
117 2277c5d7 2004-03-21 devnull
118 2277c5d7 2004-03-21 devnull return _asrdresp(fd, a, n);
119 2277c5d7 2004-03-21 devnull }
120 2277c5d7 2004-03-21 devnull
121 2277c5d7 2004-03-21 devnull int
122 2277c5d7 2004-03-21 devnull xioasrdresp(int fd, void *a, int n)
123 2277c5d7 2004-03-21 devnull {
124 2277c5d7 2004-03-21 devnull Ioproc *io;
125 2277c5d7 2004-03-21 devnull
126 2277c5d7 2004-03-21 devnull if((io = xioproc()) == nil)
127 2277c5d7 2004-03-21 devnull return -1;
128 2277c5d7 2004-03-21 devnull
129 2277c5d7 2004-03-21 devnull n = iocall(io, _ioasrdresp, fd, a, n);
130 2277c5d7 2004-03-21 devnull closexioproc(io);
131 2277c5d7 2004-03-21 devnull return n;
132 2277c5d7 2004-03-21 devnull }
133 2277c5d7 2004-03-21 devnull
134 2277c5d7 2004-03-21 devnull static long
135 2277c5d7 2004-03-21 devnull _ioasgetticket(va_list *arg)
136 2277c5d7 2004-03-21 devnull {
137 2277c5d7 2004-03-21 devnull int asfd;
138 2277c5d7 2004-03-21 devnull char *trbuf;
139 2277c5d7 2004-03-21 devnull char *tbuf;
140 2277c5d7 2004-03-21 devnull
141 2277c5d7 2004-03-21 devnull asfd = va_arg(*arg, int);
142 2277c5d7 2004-03-21 devnull trbuf = va_arg(*arg, char*);
143 2277c5d7 2004-03-21 devnull tbuf = va_arg(*arg, char*);
144 2277c5d7 2004-03-21 devnull
145 2277c5d7 2004-03-21 devnull return _asgetticket(asfd, trbuf, tbuf);
146 2277c5d7 2004-03-21 devnull }
147 2277c5d7 2004-03-21 devnull
148 2277c5d7 2004-03-21 devnull int
149 2277c5d7 2004-03-21 devnull xioasgetticket(int fd, char *trbuf, char *tbuf)
150 2277c5d7 2004-03-21 devnull {
151 2277c5d7 2004-03-21 devnull int n;
152 2277c5d7 2004-03-21 devnull Ioproc *io;
153 2277c5d7 2004-03-21 devnull
154 2277c5d7 2004-03-21 devnull if((io = xioproc()) == nil)
155 2277c5d7 2004-03-21 devnull return -1;
156 2277c5d7 2004-03-21 devnull
157 2277c5d7 2004-03-21 devnull n = iocall(io, _ioasgetticket, fd, trbuf, tbuf);
158 2277c5d7 2004-03-21 devnull closexioproc(io);
159 2277c5d7 2004-03-21 devnull if(n != 2*TICKETLEN)
160 2277c5d7 2004-03-21 devnull n = -1;
161 2277c5d7 2004-03-21 devnull else
162 2277c5d7 2004-03-21 devnull n = 0;
163 2277c5d7 2004-03-21 devnull return n;
164 2277c5d7 2004-03-21 devnull }
165 2277c5d7 2004-03-21 devnull