Re: [dwm] broken pipes

From: Manuel Badzong <lists_AT_badzong.com>
Date: Sun, 26 Nov 2006 14:12:42 +0100

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();
                 }
Received on Sun Nov 26 2006 - 14:12:43 UTC

This archive was generated by hypermail 2.2.0 : Sun Jul 13 2008 - 14:32:46 UTC