23 text = display->black;
24 light = allocimagemix(display, DPalegreen, DWhite);
35 Bwrite(bout, message, strlen(message));
37 last = utflen(message);
40 draw(screen, rtext, light, nil, ZP);
41 string(screen, rtext.min, text, ZP, display->defaultfont, message);
42 flushimage(display, 1);
48 if(new && getwindow(display, Refnone) < 0)
49 fprint(2,"can't reattach to window");
51 draw(screen, rtext, light, nil, ZP);
55 string(screen, rtext.min, text, ZP, display->defaultfont, title);
56 rtext.min.y += 8+display->defaultfont->height;
58 rtext.max.y = rtext.min.y + display->defaultfont->height;
67 int k, die, parent, child;
75 Bwrite(bout, title, strlen(title));
76 Bwrite(bout, ": ", 2);
80 switch(child = rfork(RFMEM|RFPROC)) {
83 while(!die && (k = eread(Ekeyboard|Emouse, &e))) {
84 if(nokill==0 && k == Ekeyboard && (e.kbdc == Kdel || e.kbdc == Ketx)) {
86 postnote(PNPROC, parent, "interrupt");
92 while(!die && (p = Brdline(b, '\n'))){
93 snprint(message, Bsize, "%.*s", Blinelen(b)-1, p);
97 Bwrite(bout, "\n", 1);
100 postnote(PNPROC, child, "kill");
107 fprint(2, "usage: %s [-kt] [-w minx,miny,maxx,maxy] [title]\n", argv0);
112 main(int argc, char **argv)
145 while(q = strchr(p, ','))
147 Binit(&b, lfd, OREAD);
148 if((message = malloc(Bsize)) == nil)
149 sysfatal("malloc: %r");
150 memset(message, 0, Bsize);
151 if(textmode || newwin(p) < 0){
153 if((bout = Bfdopen(1, OWRITE)) == nil)
154 sysfatal("Bfdopen: %r");
156 if(initdraw(0, 0, title) < 0)
157 sysfatal("initdraw: %r");
159 einit(Emouse|Ekeyboard);
174 snprint(spec, sizeof(spec), "-r %s", win);
177 if(newwindow(win) < 0){
178 fprint(2, "%s: newwindow: %r", argv0);
181 if((cons = open("/dev/cons", OREAD)) < 0){
183 fprint(2, "%s: can't open /dev/cons: %r", argv0);
188 if((cons = open("/dev/cons", OWRITE)) < 0)