|
@@ -17,24 +17,24 @@
|
|
|
#include "flayer.h"
|
|
|
#include "samterm.h"
|
|
|
|
|
|
-int cursorfd;
|
|
|
-int plumbfd = -1;
|
|
|
-int input;
|
|
|
-int got;
|
|
|
-int block;
|
|
|
-int kbdc;
|
|
|
-int resized;
|
|
|
-uchar *hostp;
|
|
|
-uchar *hoststop;
|
|
|
-uchar *plumbbase;
|
|
|
-uchar *plumbp;
|
|
|
-uchar *plumbstop;
|
|
|
-Channel *plumbc;
|
|
|
-Channel *hostc;
|
|
|
-Mousectl *mousectl;
|
|
|
-Mouse *mousep;
|
|
|
-Keyboardctl *keyboardctl;
|
|
|
-void panic(char*);
|
|
|
+int cursorfd;
|
|
|
+int plumbfd = -1;
|
|
|
+int input;
|
|
|
+int got;
|
|
|
+int block;
|
|
|
+int kbdc;
|
|
|
+int resized;
|
|
|
+uchar* hostp;
|
|
|
+uchar* hoststop;
|
|
|
+uchar* plumbbase;
|
|
|
+uchar* plumbp;
|
|
|
+uchar* plumbstop;
|
|
|
+Channel* plumbc;
|
|
|
+Channel* hostc;
|
|
|
+Mousectl* mousectl;
|
|
|
+Mouse* mousep;
|
|
|
+Keyboardctl* keyboardctl;
|
|
|
+void panic(char*);
|
|
|
|
|
|
void
|
|
|
closeio(void)
|
|
@@ -48,13 +48,13 @@ initio(void)
|
|
|
{
|
|
|
threadsetname("main");
|
|
|
mousectl = initmouse(nil, display->image);
|
|
|
- if(mousectl == nil){
|
|
|
+ if(mousectl == nil) {
|
|
|
fprint(2, "samterm: mouse init failed: %r\n");
|
|
|
threadexitsall("mouse");
|
|
|
}
|
|
|
- mousep = (Mouse *)mousectl;
|
|
|
+ mousep = (Mouse*)mousectl;
|
|
|
keyboardctl = initkeyboard(nil);
|
|
|
- if(keyboardctl == nil){
|
|
|
+ if(keyboardctl == nil) {
|
|
|
fprint(2, "samterm: keyboard init failed: %r\n");
|
|
|
threadexitsall("kbd");
|
|
|
}
|
|
@@ -74,20 +74,20 @@ getmouse(void)
|
|
|
void
|
|
|
mouseunblock(void)
|
|
|
{
|
|
|
- got &= ~(1<<RMouse);
|
|
|
+ got &= ~(1 << RMouse);
|
|
|
}
|
|
|
|
|
|
void
|
|
|
kbdblock(void)
|
|
|
-{ /* ca suffit */
|
|
|
- block = (1<<RKeyboard)|(1<<RPlumb);
|
|
|
+{ /* ca suffit */
|
|
|
+ block = (1 << RKeyboard) | (1 << RPlumb);
|
|
|
}
|
|
|
|
|
|
int
|
|
|
button(int but)
|
|
|
{
|
|
|
getmouse();
|
|
|
- return mousep->buttons&(1<<(but-1));
|
|
|
+ return mousep->buttons & (1 << (but - 1));
|
|
|
}
|
|
|
|
|
|
void
|
|
@@ -99,13 +99,13 @@ externload(int i)
|
|
|
memmove(plumbbase, plumbbuf[i].data, plumbbuf[i].n);
|
|
|
plumbp = plumbbase;
|
|
|
plumbstop = plumbbase + plumbbuf[i].n;
|
|
|
- got |= 1<<RPlumb;
|
|
|
+ got |= 1 << RPlumb;
|
|
|
}
|
|
|
|
|
|
int
|
|
|
waitforio(void)
|
|
|
{
|
|
|
- Alt alts[NRes+1];
|
|
|
+ Alt alts[NRes + 1];
|
|
|
Rune r;
|
|
|
int i;
|
|
|
ulong type;
|
|
@@ -115,31 +115,31 @@ again:
|
|
|
alts[RPlumb].c = plumbc;
|
|
|
alts[RPlumb].v = &i;
|
|
|
alts[RPlumb].op = CHANRCV;
|
|
|
- if((block & (1<<RPlumb)) || plumbc == nil)
|
|
|
+ if((block & (1 << RPlumb)) || plumbc == nil)
|
|
|
alts[RPlumb].op = CHANNOP;
|
|
|
|
|
|
alts[RHost].c = hostc;
|
|
|
alts[RHost].v = &i;
|
|
|
alts[RHost].op = CHANRCV;
|
|
|
- if(block & (1<<RHost))
|
|
|
+ if(block & (1 << RHost))
|
|
|
alts[RHost].op = CHANNOP;
|
|
|
|
|
|
alts[RKeyboard].c = keyboardctl->c;
|
|
|
alts[RKeyboard].v = &r;
|
|
|
alts[RKeyboard].op = CHANRCV;
|
|
|
- if(block & (1<<RKeyboard))
|
|
|
+ if(block & (1 << RKeyboard))
|
|
|
alts[RKeyboard].op = CHANNOP;
|
|
|
|
|
|
alts[RMouse].c = mousectl->c;
|
|
|
- alts[RMouse].v = (Mouse *)&mousectl;
|
|
|
+ alts[RMouse].v = (Mouse*)mousectl;
|
|
|
alts[RMouse].op = CHANRCV;
|
|
|
- if(block & (1<<RMouse))
|
|
|
+ if(block & (1 << RMouse))
|
|
|
alts[RMouse].op = CHANNOP;
|
|
|
|
|
|
alts[RResize].c = mousectl->resizec;
|
|
|
alts[RResize].v = nil;
|
|
|
alts[RResize].op = CHANRCV;
|
|
|
- if(block & (1<<RResize))
|
|
|
+ if(block & (1 << RResize))
|
|
|
alts[RResize].op = CHANNOP;
|
|
|
|
|
|
alts[NRes].op = CHANEND;
|
|
@@ -148,7 +148,13 @@ again:
|
|
|
return got & ~block;
|
|
|
flushimage(display, 1);
|
|
|
type = alt(alts);
|
|
|
- switch(type){
|
|
|
+
|
|
|
+ if(!(type < NRes)) {
|
|
|
+ /* coverity wants to make sure type cant do an INT_MAX shift when we return */
|
|
|
+ fprint(2, "samterm: waited wrong: %lx\n", type);
|
|
|
+ panic("wait");
|
|
|
+ }
|
|
|
+ switch(type) {
|
|
|
case RHost:
|
|
|
hostp = hostbuf[i].data;
|
|
|
hoststop = hostbuf[i].data + hostbuf[i].n;
|
|
@@ -165,12 +171,12 @@ again:
|
|
|
case RResize:
|
|
|
resized = 1;
|
|
|
/* do the resize in line if we've finished initializing and we're not in a blocking state */
|
|
|
- if(hasunlocked && block==0 && RESIZED())
|
|
|
+ if(hasunlocked && block == 0 && RESIZED())
|
|
|
resize();
|
|
|
goto again;
|
|
|
}
|
|
|
- got |= 1<<type;
|
|
|
- return got;
|
|
|
+ got |= 1 << type;
|
|
|
+ return got;
|
|
|
}
|
|
|
|
|
|
int
|
|
@@ -178,11 +184,11 @@ rcvchar(void)
|
|
|
{
|
|
|
int c;
|
|
|
|
|
|
- if(!(got & (1<<RHost)))
|
|
|
+ if(!(got & (1 << RHost)))
|
|
|
return -1;
|
|
|
c = *hostp++;
|
|
|
if(hostp == hoststop)
|
|
|
- got &= ~(1<<RHost);
|
|
|
+ got &= ~(1 << RHost);
|
|
|
return c;
|
|
|
}
|
|
|
|
|
@@ -190,7 +196,7 @@ char*
|
|
|
rcvstring(void)
|
|
|
{
|
|
|
*hoststop = 0;
|
|
|
- got &= ~(1<<RHost);
|
|
|
+ got &= ~(1 << RHost);
|
|
|
return (char*)hostp;
|
|
|
}
|
|
|
|
|
@@ -199,8 +205,8 @@ getch(void)
|
|
|
{
|
|
|
int c;
|
|
|
|
|
|
- while((c = rcvchar()) == -1){
|
|
|
- block = ~(1<<RHost);
|
|
|
+ while((c = rcvchar()) == -1) {
|
|
|
+ block = ~(1 << RHost);
|
|
|
waitforio();
|
|
|
block = 0;
|
|
|
}
|
|
@@ -212,11 +218,11 @@ externchar(void)
|
|
|
{
|
|
|
Rune r;
|
|
|
|
|
|
- loop:
|
|
|
- if(got & ((1<<RPlumb) & ~block)){
|
|
|
+loop:
|
|
|
+ if(got & ((1 << RPlumb) & ~block)) {
|
|
|
plumbp += chartorune(&r, (char*)plumbp);
|
|
|
- if(plumbp >= plumbstop){
|
|
|
- got &= ~(1<<RPlumb);
|
|
|
+ if(plumbp >= plumbstop) {
|
|
|
+ got &= ~(1 << RPlumb);
|
|
|
free(plumbbase);
|
|
|
}
|
|
|
if(r == 0)
|
|
@@ -234,7 +240,7 @@ ecankbd(void)
|
|
|
|
|
|
if(kpeekc >= 0)
|
|
|
return 1;
|
|
|
- if(nbrecv(keyboardctl->c, &r) > 0){
|
|
|
+ if(nbrecv(keyboardctl->c, &r) > 0) {
|
|
|
kpeekc = r;
|
|
|
return 1;
|
|
|
}
|
|
@@ -247,12 +253,12 @@ ekbd(void)
|
|
|
int c;
|
|
|
Rune r;
|
|
|
|
|
|
- if(kpeekc >= 0){
|
|
|
+ if(kpeekc >= 0) {
|
|
|
c = kpeekc;
|
|
|
kpeekc = -1;
|
|
|
return c;
|
|
|
}
|
|
|
- if(recv(keyboardctl->c, &r) < 0){
|
|
|
+ if(recv(keyboardctl->c, &r) < 0) {
|
|
|
fprint(2, "samterm: keybard recv error: %r\n");
|
|
|
panic("kbd");
|
|
|
}
|
|
@@ -267,13 +273,13 @@ kbdchar(void)
|
|
|
c = externchar();
|
|
|
if(c > 0)
|
|
|
return c;
|
|
|
- if(got & (1<<RKeyboard)){
|
|
|
+ if(got & (1 << RKeyboard)) {
|
|
|
c = kbdc;
|
|
|
kbdc = -1;
|
|
|
- got &= ~(1<<RKeyboard);
|
|
|
+ got &= ~(1 << RKeyboard);
|
|
|
return c;
|
|
|
}
|
|
|
- while(plumbc!=nil && nbrecv(plumbc, &i)>0){
|
|
|
+ while(plumbc != nil && nbrecv(plumbc, &i) > 0) {
|
|
|
externload(i);
|
|
|
c = externchar();
|
|
|
if(c > 0)
|
|
@@ -293,7 +299,7 @@ qpeekc(void)
|
|
|
int
|
|
|
RESIZED(void)
|
|
|
{
|
|
|
- if(resized){
|
|
|
+ if(resized) {
|
|
|
if(getwindow(display, Refnone) < 0)
|
|
|
panic("can't reattach to window");
|
|
|
resized = 0;
|