equal
deleted
inserted
replaced
265 while(running) { |
265 while(running) { |
266 FD_ZERO(&rd); |
266 FD_ZERO(&rd); |
267 if(readin) |
267 if(readin) |
268 FD_SET(STDIN_FILENO, &rd); |
268 FD_SET(STDIN_FILENO, &rd); |
269 FD_SET(xfd, &rd); |
269 FD_SET(xfd, &rd); |
270 r = select(xfd + 1, &rd, NULL, NULL, NULL); |
270 if(select(xfd + 1, &rd, NULL, NULL, NULL) == -1) { |
271 if((r == -1) && (errno == EINTR)) |
271 if(errno == EINTR) |
272 continue; |
272 continue; |
273 if(r > 0) { |
273 else |
274 if(readin && FD_ISSET(STDIN_FILENO, &rd)) { |
274 eprint("select failed\n"); |
275 readin = NULL != fgets(stext, sizeof(stext), stdin); |
275 } |
276 if(readin) |
276 if(FD_ISSET(STDIN_FILENO, &rd)) { |
277 stext[strlen(stext) - 1] = 0; |
277 switch(r = read(STDIN_FILENO, stext, sizeof(stext))) { |
278 else |
278 case -1: |
279 strcpy(stext, "broken pipe"); |
279 strncpy(stext, strerror(errno), sizeof(stext)); |
280 drawstatus(); |
280 readin = False; |
|
281 break; |
|
282 case 0: |
|
283 strncpy(stext, "EOF", sizeof(stext)); |
|
284 readin = False; |
|
285 break; |
|
286 default: |
|
287 stext[r-1] = 0; |
281 } |
288 } |
282 } |
289 drawstatus(); |
283 else if(r < 0) |
290 } |
284 eprint("select failed\n"); |
291 if(FD_ISSET(xfd, &rd)) |
285 procevent(); |
292 procevent(); |
286 } |
293 } |
287 cleanup(); |
294 cleanup(); |
288 XCloseDisplay(dpy); |
295 XCloseDisplay(dpy); |
289 return 0; |
296 return 0; |
290 } |
297 } |