summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@centraldogma>2011-05-09 10:04:04 +0000
committercinap_lenrek <cinap_lenrek@centraldogma>2011-05-09 10:04:04 +0000
commit489d71b9ba9dc62fa8ada0bcad5d6bbe8cbb375b (patch)
tree19ff2f01fa2516aef0a4cc19c0aad839da5aee03
parent22ec6165bc7ffe68c82e1b14d6d77045c8c3605b (diff)
downloadplan9front-489d71b9ba9dc62fa8ada0bcad5d6bbe8cbb375b.tar.xz
devkbd: fix missing devdrirread
-rw-r--r--sys/src/9/pc/devkbd.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/sys/src/9/pc/devkbd.c b/sys/src/9/pc/devkbd.c
index b7cc494e1..6c418ae6d 100644
--- a/sys/src/9/pc/devkbd.c
+++ b/sys/src/9/pc/devkbd.c
@@ -355,21 +355,24 @@ kbdclose(Chan *c)
}
static Block*
-kbdbread(Chan *c, long n, ulong)
+kbdbread(Chan *c, long n, ulong off)
{
- if(c->qid.path != Qscancode)
- error(Egreg);
-
- return qbread(kbd.q, n);
+ if(c->qid.path == Qscancode)
+ return qbread(kbd.q, n);
+ else
+ return devbread(c, n, off);
}
static long
kbdread(Chan *c, void *a, long n, vlong)
{
- if(c->qid.path != Qscancode)
- error(Egreg);
+ if(c->qid.path == Qscancode)
+ return qread(kbd.q, a, n);
+ if(c->qid.path == Qdir)
+ return devdirread(c, a, n, kbdtab, nelem(kbdtab), devgen);
- return qread(kbd.q, a, n);
+ error(Egreg);
+ return 0;
}
static long