comparison main.c @ 578:8cb54d02a5b6

applied Manuels patch (thanks to Manuel!)
author arg@mig29
date Sat, 25 Nov 2006 19:26:16 +0100
parents f05cfa7d5128
children e9001b0f53bc
comparison
equal deleted inserted replaced
577:f01c0466cf00 578:8cb54d02a5b6
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 }