diff options
Diffstat (limited to 'emu/port/devtab.c')
| -rw-r--r-- | emu/port/devtab.c | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/emu/port/devtab.c b/emu/port/devtab.c index cc77a035..6f244e62 100644 --- a/emu/port/devtab.c +++ b/emu/port/devtab.c @@ -1,5 +1,35 @@ -void -placeholderonly(void) +#include "dat.h" +#include "fns.h" +#include "error.h" + +extern Dev* devtab[]; + +long +devtabread(Chan *c, void* buf, long n, vlong off) { - /* just in case some host compiler hates empty files */ + int i; + Dev *dev; + char *alloc, *e, *p; + + USED(c); + alloc = malloc(READSTR); + if(alloc == nil) + error(Enomem); + + p = alloc; + e = p + READSTR; + for(i = 0; devtab[i] != nil; i++){ + dev = devtab[i]; + p = seprint(p, e, "#%C %s\n", dev->dc, dev->name); + } + + if(waserror()){ + free(alloc); + nexterror(); + } + n = readstr(off, buf, n, alloc); + free(alloc); + poperror(); + + return n; } |
