applied Manuels patch (thanks to Manuel!)
478f6f95
2 file(s) · +22 −15
| 22 | 22 | the title of the focused window, and the text read from standard input. The |
|
| 23 | 23 | selected tags are indicated with a different color. The tags of the focused |
|
| 24 | 24 | window are indicated with a small point in the top left corner. The tags which |
|
| 25 | - | are applied to any client are indicated with a small point in the bottom |
|
| 25 | + | are applied to one or more clients are indicated with a small point in the bottom |
|
| 26 | 26 | right corner. |
|
| 27 | 27 | .P |
|
| 28 | 28 | dwm draws a 1-pixel border around windows to indicate the focus state. |
| 267 | 267 | if(readin) |
|
| 268 | 268 | FD_SET(STDIN_FILENO, &rd); |
|
| 269 | 269 | FD_SET(xfd, &rd); |
|
| 270 | - | r = select(xfd + 1, &rd, NULL, NULL, NULL); |
|
| 271 | - | if((r == -1) && (errno == EINTR)) |
|
| 272 | - | continue; |
|
| 273 | - | if(r > 0) { |
|
| 274 | - | if(readin && FD_ISSET(STDIN_FILENO, &rd)) { |
|
| 275 | - | readin = NULL != fgets(stext, sizeof(stext), stdin); |
|
| 276 | - | if(readin) |
|
| 277 | - | stext[strlen(stext) - 1] = 0; |
|
| 278 | - | else |
|
| 279 | - | strcpy(stext, "broken pipe"); |
|
| 280 | - | drawstatus(); |
|
| 270 | + | if(select(xfd + 1, &rd, NULL, NULL, NULL) == -1) { |
|
| 271 | + | if(errno == EINTR) |
|
| 272 | + | continue; |
|
| 273 | + | else |
|
| 274 | + | eprint("select failed\n"); |
|
| 275 | + | } |
|
| 276 | + | if(FD_ISSET(STDIN_FILENO, &rd)) { |
|
| 277 | + | switch(r = read(STDIN_FILENO, stext, sizeof(stext))) { |
|
| 278 | + | case -1: |
|
| 279 | + | strncpy(stext, strerror(errno), sizeof(stext)); |
|
| 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 | } |
|
| 289 | + | drawstatus(); |
|
| 282 | 290 | } |
|
| 283 | - | else if(r < 0) |
|
| 284 | - | eprint("select failed\n"); |
|
| 285 | - | procevent(); |
|
| 291 | + | if(FD_ISSET(xfd, &rd)) |
|
| 292 | + | procevent(); |
|
| 286 | 293 | } |
|
| 287 | 294 | cleanup(); |
|
| 288 | 295 | XCloseDisplay(dpy); |