21 text = display->black;
22 light = allocimagemix(display, DPalegreen, DWhite);
33 write(1, message, strlen(message));
34 last = utflen(message);
37 draw(screen, rtext, light, nil, ZP);
38 string(screen, rtext.min, text, ZP, display->defaultfont, message);
39 flushimage(display, 1);
45 if(new && getwindow(display, Refnone) < 0)
46 fprint(2,"can't reattach to window");
48 draw(screen, rtext, light, nil, ZP);
52 string(screen, rtext.min, text, ZP, display->defaultfont, title);
53 rtext.min.y += 8+display->defaultfont->height;
55 rtext.max.y = rtext.min.y + display->defaultfont->height;
64 int k, die, parent, child;
72 write(1, title, strlen(title));
76 switch(child = rfork(RFMEM|RFPROC)) {
79 while(!die && (k = eread(Ekeyboard|Emouse, &e))) {
80 if(nokill==0 && k == Ekeyboard && (e.kbdc == 0x7F || e.kbdc == 0x03)) { /* del, ctl-c */
82 postnote(PNPROC, parent, "interrupt");
88 while(!die && (p = Brdline(b, '\n'))) {
89 snprint(message, sizeof(message), "%.*s", Blinelen(b)-1, p);
94 postnote(PNPROC, child, "kill");
101 fprint(2, "usage: %s [-kt] [-w minx,miny,maxx,maxy] [title]\n", argv0);
106 main(int argc, char **argv)
139 while(q = strchr(p, ','))
141 Binit(&b, lfd, OREAD);
142 if(textmode || newwin(p) < 0){
145 if(initdraw(0, 0, title) < 0)
148 einit(Emouse|Ekeyboard);
163 snprint(spec, sizeof(spec), "-r %s", win);
166 if(newwindow(win) < 0){
167 fprint(2, "%s: newwindow: %r", argv0);
170 if((cons = open("/dev/cons", OREAD)) < 0){
172 fprint(2, "%s: can't open /dev/cons: %r", argv0);
177 if((cons = open("/dev/cons", OWRITE)) < 0)