t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 478f6f95f1cb349e93bfe49ae6721c222c3a1a6d
   DIR parent 44411d2d48206d6cd87ce5f9c0ddc365e598928b
   URI Author: arg@mig29 <unknown>
       Date:   Sat, 25 Nov 2006 19:26:16 +0100
       
       applied Manuels patch (thanks to Manuel!)
       Diffstat:
         M dwm.1                               |       2 +-
         M main.c                              |      35 +++++++++++++++++++-------------
       
       2 files changed, 22 insertions(+), 15 deletions(-)
       ---
   DIR diff --git a/dwm.1 b/dwm.1
       t@@ -22,7 +22,7 @@ dwm contains a small status bar which displays all available tags, the mode,
        the title of the focused window, and the text read from standard input. The
        selected tags are indicated with a different color. The tags of the focused
        window are indicated with a small point in the top left corner.  The tags which
       -are applied to any client are indicated with a small point in the bottom
       +are applied to one or more clients are indicated with a small point in the bottom
        right corner.
        .P
        dwm draws a 1-pixel border around windows to indicate the focus state.
   DIR diff --git a/main.c b/main.c
       t@@ -267,22 +267,29 @@ main(int argc, char *argv[]) {
                        if(readin)
                                FD_SET(STDIN_FILENO, &rd);
                        FD_SET(xfd, &rd);
       -                r = select(xfd + 1, &rd, NULL, NULL, NULL);
       -                if((r == -1) && (errno == EINTR))
       -                        continue;
       -                if(r > 0) {
       -                        if(readin && FD_ISSET(STDIN_FILENO, &rd)) {
       -                                readin = NULL != fgets(stext, sizeof(stext), stdin);
       -                                if(readin)
       -                                        stext[strlen(stext) - 1] = 0;
       -                                else 
       -                                        strcpy(stext, "broken pipe");
       -                                drawstatus();
       +                if(select(xfd + 1, &rd, NULL, NULL, NULL) == -1) {
       +                        if(errno == EINTR)
       +                                continue;
       +                        else
       +                                eprint("select failed\n");
       +                }
       +                if(FD_ISSET(STDIN_FILENO, &rd)) {
       +                        switch(r = read(STDIN_FILENO, stext, sizeof(stext))) {
       +                        case -1:
       +                                strncpy(stext, strerror(errno), sizeof(stext));
       +                                readin = False;
       +                                break;
       +                        case 0:
       +                                strncpy(stext, "EOF", sizeof(stext));
       +                                readin = False;
       +                                break;
       +                        default:
       +                                stext[r-1] = 0;
                                }
       +                        drawstatus();
                        }
       -                else if(r < 0)
       -                        eprint("select failed\n");
       -                procevent();
       +                if(FD_ISSET(xfd, &rd))
       +                        procevent();
                }
                cleanup();
                XCloseDisplay(dpy);