vgamga4xx: updates from Philippe Anel devcons: fix doubled character when typing devsd: used and not set bug [rsc] --rw-rw-r-- M 22963 glenda sys 9489 Mar 29 11:02 sys/src/9/pc/vgamga4xx.c [diffs elided - too long] [diff -c /n/sourcesdump/2006/0329/plan9/sys/src/9/pc/vgamga4xx.c /n/sourcesdump/2006/0330/plan9/sys/src/9/pc/vgamga4xx.c] [rsc] --rw-rw-r-- M 22963 glenda sys 23071 Mar 29 11:01 sys/src/9/port/devcons.c /n/sourcesdump/2006/0329/plan9/sys/src/9/port/devcons.c:393,399 - /n/sourcesdump/2006/0330/plan9/sys/src/9/port/devcons.c:393,399 qiwrite(serialoq, ebuf, p - ebuf); } - void + static void echo(char *buf, int n) { static int ctrlt, pid; /n/sourcesdump/2006/0329/plan9/sys/src/9/port/devcons.c:400,405 - /n/sourcesdump/2006/0330/plan9/sys/src/9/port/devcons.c:400,408 int x; char *e, *p; + if(n == 0) + return; + e = buf+n; for(p = buf; p < e; p++){ switch(*p){ /n/sourcesdump/2006/0329/plan9/sys/src/9/port/devcons.c:548,555 - /n/sourcesdump/2006/0330/plan9/sys/src/9/port/devcons.c:551,560 echo(kbd.ir, kbd.ie-kbd.ir); kbd.ir = kbd.istage; } - echo(kbd.ir, iw-kbd.ir); - kbd.ir = iw; + if(kbd.ir != iw){ + echo(kbd.ir, iw-kbd.ir); + kbd.ir = iw; + } } } /n/sourcesdump/2006/0329/plan9/sys/src/9/port/devcons.c:745,751 - /n/sourcesdump/2006/0330/plan9/sys/src/9/port/devcons.c:750,757 nexterror(); } while(!qcanread(lineq)){ - qread(kbdq, &ch, 1); + if(qread(kbdq, &ch, 1) == 0) + continue; send = 0; if(ch == 0){ /* flush output on rawoff -> rawon */ [rsc] --rw-rw-r-- M 22963 glenda sys 30871 Mar 29 11:02 sys/src/9/port/devsd.c /n/sourcesdump/2006/0329/plan9/sys/src/9/port/devsd.c:506,512 - /n/sourcesdump/2006/0330/plan9/sys/src/9/port/devsd.c:506,512 } if((sdev = sdgetdev(DEV(c->qid))) == nil){ - devdir(c, q, "unavailable", 0, eve, 0, dp); + devdir(c, c->qid, "unavailable", 0, eve, 0, dp); return 1; }