]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - gui.c
afs: Use nonblocking API for server commands.
[paraslash.git] / gui.c
diff --git a/gui.c b/gui.c
index 45b477fb19b8bddaa43918b2d86676584c12b864..f2098d45162bd854de5c256feb35d2aab9fe730b 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -730,6 +730,8 @@ static int read_audiod_pipe(int fd)
        ret = for_each_stat_item(buf, loaded, update_item);
        if (ret < 0)
                return ret;
+       if (ret > 0 && ret < loaded)
+               memmove(buf, buf + loaded - ret, ret);
        loaded = ret;
        return 1;
 }
@@ -953,11 +955,9 @@ repeat:
        if (ret <= 0)
                goto check_return; /* skip fd checks */
        /* signals */
-       if (FD_ISSET(signal_pipe, &rfds)) {
-               int sig_nr = para_next_signal();
-               if (sig_nr > 0)
-                       handle_signal(sig_nr);
-       }
+       ret = para_next_signal(&rfds);
+       if (ret > 0)
+               handle_signal(ret);
        /* read command pipe if ready */
        if (command_pipe >= 0 && mode == COMMAND_MODE &&
                        FD_ISSET(command_pipe, &rfds)) {
@@ -1371,6 +1371,7 @@ static void handle_command(int c)
                                command_list[num].handler();
                }
                free(tmp);
+               return;
        }
        /* not found, check internal key bindings */
        for (i = 0; command_list[i].handler; i++) {