29 |
|
int argc; |
30 |
|
char *argv[]; |
31 |
|
{ |
32 |
< |
int rdy, inp, res = 0; |
32 |
> |
int rdy, inp, res = 0, pause = 0; |
33 |
|
|
34 |
|
progname = argv[0]; |
35 |
|
if (argc != 2) |
39 |
|
/* enter main loop */ |
40 |
|
do { |
41 |
|
rdy = disp_wait(); |
42 |
< |
if (rdy & DEV_READY) { |
43 |
< |
inp = dev_input(); /* take residual action here */ |
42 |
> |
if (rdy & DEV_READY) { /* get user input */ |
43 |
> |
inp = dev_input(); |
44 |
> |
if (inp & DEV_NEWVIEW) |
45 |
> |
new_view(&odev.v); |
46 |
|
if (inp & DEV_SHUTDOWN) |
47 |
|
serv_request(DR_SHUTDOWN, 0, NULL); |
48 |
< |
else if (inp & DEV_NEWVIEW) |
49 |
< |
new_view(&odev.v); |
48 |
> |
if (inp & DEV_WAIT) |
49 |
> |
pause = 1; |
50 |
> |
if (inp & DEV_RESUME) { |
51 |
> |
serv_request(DR_NOOP, 0, NULL); |
52 |
> |
pause = 0; |
53 |
> |
} |
54 |
|
} |
55 |
< |
if (rdy & SERV_READY) |
56 |
< |
res = serv_result(); /* processes result, also */ |
55 |
> |
if (rdy & SERV_READY) { /* get server result */ |
56 |
> |
res = serv_result(); |
57 |
> |
if (pause && res != DS_SHUTDOWN) { |
58 |
> |
serv_request(DR_ATTEN, 0, NULL); |
59 |
> |
while ((res = serv_result()) != DS_ACKNOW && |
60 |
> |
res != DS_SHUTDOWN) |
61 |
> |
; |
62 |
> |
} |
63 |
> |
} |
64 |
|
} while (res != DS_SHUTDOWN); |
65 |
|
/* all done */ |
66 |
|
quit(0); |
242 |
|
fwrite(p, 1, nbytes, stdout); |
243 |
|
if (fflush(stdout) < 0) |
244 |
|
error(SYSTEM, "write error in serv_request"); |
245 |
+ |
} |
246 |
+ |
|
247 |
+ |
|
248 |
+ |
eputs(s) /* put error message to stderr */ |
249 |
+ |
register char *s; |
250 |
+ |
{ |
251 |
+ |
static int midline = 0; |
252 |
+ |
|
253 |
+ |
if (!*s) |
254 |
+ |
return; |
255 |
+ |
if (!midline++) { /* prepend line with program name */ |
256 |
+ |
fputs(progname, stderr); |
257 |
+ |
fputs(": ", stderr); |
258 |
+ |
} |
259 |
+ |
fputs(s, stderr); |
260 |
+ |
if (s[strlen(s)-1] == '\n') { |
261 |
+ |
fflush(stderr); |
262 |
+ |
midline = 0; |
263 |
+ |
} |
264 |
|
} |
265 |
|
|
266 |
|
|