diff options
author | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-05-09 10:04:04 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-05-09 10:04:04 +0000 |
commit | 489d71b9ba9dc62fa8ada0bcad5d6bbe8cbb375b (patch) | |
tree | 19ff2f01fa2516aef0a4cc19c0aad839da5aee03 | |
parent | 22ec6165bc7ffe68c82e1b14d6d77045c8c3605b (diff) | |
download | plan9front-489d71b9ba9dc62fa8ada0bcad5d6bbe8cbb375b.tar.xz |
devkbd: fix missing devdrirread
-rw-r--r-- | sys/src/9/pc/devkbd.c | 19 |
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 |