rio: continue on zero length /dev/cons read, put reverse pale colors back in

This commit is contained in:
cinap_lenrek 2011-05-11 13:38:28 +00:00
parent d831a028dc
commit ac2e6cf020
2 changed files with 30 additions and 12 deletions

View file

@ -1232,7 +1232,7 @@ kbdproc(void *arg)
Rune r;
e = buf + sizeof(buf);
if((n = read(fd, p, e-p)) <= 0)
if((n = read(fd, p, e-p)) < 0)
break;
e = p + n;
while(p < e && fullrune(p, e - p)){

View file

@ -23,6 +23,7 @@ enum
static int topped;
static int id;
static int reverse;
static Image *cols[NCOL];
static Image *grey;
@ -30,6 +31,7 @@ static Image *darkgrey;
static Cursor *lastcursor;
static Image *titlecol;
static Image *lighttitlecol;
static Image *dholdcol;
static Image *holdcol;
static Image *lightholdcol;
static Image *paleholdcol;
@ -41,19 +43,36 @@ wmk(Image *i, Mousectl *mc, Channel *ck, Channel *cctl, int scrolling)
Rectangle r;
if(cols[0] == nil){
/* there are no pastel paints in the dungeons and dragons world
* - rob pike
*/
reverse = 0;
if(getenv("reverse") != nil)
reverse = ~0xFF;
/* greys are multiples of 0x11111100+0xFF, 14* being palest */
grey = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xEEEEEEFF);
darkgrey = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x666666FF);
cols[BACK] = display->white;
cols[HIGH] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xCCCCCCFF);
grey = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xEEEEEEFF^reverse);
darkgrey = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x666666FF^reverse);
cols[BACK] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xFFFFFFFF^reverse);
cols[HIGH] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0xCCCCCCFF^reverse);
cols[BORD] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x999999FF);
cols[TEXT] = display->black;
cols[HTEXT] = display->black;
titlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DGreygreen);
lighttitlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DPalegreygreen);
holdcol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DMedblue);
cols[TEXT] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x000000FF^reverse);
cols[HTEXT] = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x000000FF^reverse);
if(reverse == 0) {
titlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DGreygreen);
lighttitlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DPalegreygreen);
} else {
titlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DPurpleblue);
lighttitlecol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, 0x666666FF^reverse);
}
dholdcol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DMedblue);
lightholdcol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DGreyblue);
paleholdcol = allocimage(display, Rect(0,0,1,1), CMAP8, 1, DPalegreyblue);
if(reverse == 0)
holdcol = dholdcol;
else
holdcol = paleholdcol;
}
w = emalloc(sizeof(Window));
w->screenr = i->r;
@ -740,7 +759,7 @@ wsetcols(Window *w)
w->cols[TEXT] = w->cols[HTEXT] = lightholdcol;
else
if(w == input)
w->cols[TEXT] = w->cols[HTEXT] = display->black;
w->cols[TEXT] = w->cols[HTEXT] = cols[TEXT];
else
w->cols[TEXT] = w->cols[HTEXT] = darkgrey;
}
@ -1341,7 +1360,6 @@ wclosewin(Window *w)
if(hidden[i] == w){
--nhidden;
memmove(hidden+i, hidden+i+1, (nhidden-i)*sizeof(hidden[0]));
hidden[nhidden] = nil;
break;
}
for(i=0; i<nwindow; i++)