Hi guys,

I applied a mixture of Jukka's and Manuel's patch to hg tip.
Thanks to Manuel!

Regards,
        Anselm

On Sun, Nov 26, 2006 at 02:12:42PM +0100, Manuel Badzong wrote:
> Ciao Jukka
> 
> Jukka Salmi wrote:
> >aka `dwm <>dwm_pipe', BTW...
> >  
> This definitely looks better and doesn't block on open. Though AFAIK 
> POSIX doesn't specify the behavior of a FIFO opened O_RDWR and may 
> result differently across operating systems. Anyway this works fine.
> 
> >Thanks for the cleanup. But now that dwm's reading from stdin isn't
> >line buffered anymore the read string shouldn't be required to have a
> >trailing newline. See attached patch.
> >  
> Must have been blind. Because \n looks really bad, I propose the 
> following patch (also removes 2 useless lines).
> 
> Regards, Manuel
> 

> --- jukka/main.c      2006-11-26 14:06:32.000000000 +0100
> +++ my_dwm-2.3/main.c 2006-11-26 14:04:30.000000000 +0100
> @@ -228,6 +228,7 @@
>  int
>  main(int argc, char *argv[]) {
>       int r, xfd;
> +     char *p;
>       fd_set rd;
>  
>       if(argc == 2 && !strncmp("-v", argv[1], 3)) {
> @@ -270,14 +271,12 @@
>               if(select(xfd + 1, &rd, NULL, NULL, NULL) == -1) {
>                       if(errno == EINTR)
>                               continue;
> -                     else
> -                             eprint("select failed\n");
> +                     eprint("select failed\n");
>               }
>               if(FD_ISSET(STDIN_FILENO, &rd)) {
>                       switch(r = read(STDIN_FILENO, stext, sizeof(stext)-1)) {
>                               case -1:
> -                                     strncpy(stext, strerror(errno), 
> sizeof(stext));
> -                                     stext[sizeof(stext)-1] = '\0';
> +                                     strncpy(stext, strerror(errno), 
> sizeof(stext)-1);
>                                       readin = False;
>                                       break;
>                               case 0:
> @@ -286,6 +285,9 @@
>                                       break;
>                               default:
>                                       stext[r-(stext[r-1]=='\n'?1:0)] = '\0';
> +                                     for(p=stext+strlen(stext)-1;p>stext && 
> *p!='\n';--p);
> +                                     if(p>stext)
> +                                             strncpy(stext, p+1, 
> sizeof(stext));
>                       }
>                       drawstatus();
>               }


-- 
 Anselm R. Garbe >< http://suckless.org/~arg/ >< GPG key: 0D73F361

Reply via email to