summaryrefslogtreecommitdiff
path: root/emu/port/devtab.c
diff options
context:
space:
mode:
Diffstat (limited to 'emu/port/devtab.c')
-rw-r--r--emu/port/devtab.c36
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;
}