Mercurial > aewl
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 } |