diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-04-03 22:54:22 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-04-03 22:54:22 +0200 |
commit | ce84082205f8367c1a4676c4810d92b30ae87f49 (patch) | |
tree | 1f33dee7fb1674e0c18dcafb5cb56b7ee92aa395 /sys/src/cmd/rio/rio.c | |
parent | cd9cddf3dd64b01e7e54ba3a3371a8d0a5c70748 (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.c | 9 |
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; |