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