1*cbfacb4eSforsyth #include "dat.h"
2*cbfacb4eSforsyth #include "fns.h"
3*cbfacb4eSforsyth #include "error.h"
4*cbfacb4eSforsyth
5*cbfacb4eSforsyth extern Dev* devtab[];
6*cbfacb4eSforsyth
7*cbfacb4eSforsyth long
devtabread(Chan * c,void * buf,long n,vlong off)8*cbfacb4eSforsyth devtabread(Chan *c, void* buf, long n, vlong off)
9560dc2e2Sforsyth {
10*cbfacb4eSforsyth int i;
11*cbfacb4eSforsyth Dev *dev;
12*cbfacb4eSforsyth char *alloc, *e, *p;
13*cbfacb4eSforsyth
14*cbfacb4eSforsyth USED(c);
15*cbfacb4eSforsyth alloc = malloc(READSTR);
16*cbfacb4eSforsyth if(alloc == nil)
17*cbfacb4eSforsyth error(Enomem);
18*cbfacb4eSforsyth
19*cbfacb4eSforsyth p = alloc;
20*cbfacb4eSforsyth e = p + READSTR;
21*cbfacb4eSforsyth for(i = 0; devtab[i] != nil; i++){
22*cbfacb4eSforsyth dev = devtab[i];
23*cbfacb4eSforsyth p = seprint(p, e, "#%C %s\n", dev->dc, dev->name);
24*cbfacb4eSforsyth }
25*cbfacb4eSforsyth
26*cbfacb4eSforsyth if(waserror()){
27*cbfacb4eSforsyth free(alloc);
28*cbfacb4eSforsyth nexterror();
29*cbfacb4eSforsyth }
30*cbfacb4eSforsyth n = readstr(off, buf, n, alloc);
31*cbfacb4eSforsyth free(alloc);
32*cbfacb4eSforsyth poperror();
33*cbfacb4eSforsyth
34*cbfacb4eSforsyth return n;
35560dc2e2Sforsyth }
36