summaryrefslogtreecommitdiff
path: root/sys/src/cmd/rio/rio.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-04-03 22:54:22 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2016-04-03 22:54:22 +0200
commitce84082205f8367c1a4676c4810d92b30ae87f49 (patch)
tree1f33dee7fb1674e0c18dcafb5cb56b7ee92aa395 /sys/src/cmd/rio/rio.c
parentcd9cddf3dd64b01e7e54ba3a3371a8d0a5c70748 (diff)
change /dev/kbd to return multiple messages per read
Diffstat (limited to 'sys/src/cmd/rio/rio.c')
-rw-r--r--sys/src/cmd/rio/rio.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/src/cmd/rio/rio.c b/sys/src/cmd/rio/rio.c
index 0c1564f53..4a887ab20 100644
--- a/sys/src/cmd/rio/rio.c
+++ b/sys/src/cmd/rio/rio.c
@@ -1302,8 +1302,13 @@ kbdproc(void *arg)
servekbd = 1;
/* read kbd state */
- while((n = read(kfd, buf, sizeof(buf))) > 0)
- chanprint(c, "%.*s", n, buf);
+ while((n = read(kfd, buf, sizeof(buf)-1)) > 0){
+ e = buf+n;
+ e[-1] = 0;
+ e[0] = 0;
+ for(p = buf; p < e; p += strlen(p)+1)
+ chanprint(c, "%s", p);
+ }
} else {
/* read single characters */
p = buf;