gui: Combine open_stat_pipe() and para_open_stat_pipe().
[paraslash.git] / gui.c
diff --git a/gui.c b/gui.c
index 31987c4..fa1538b 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -54,7 +54,7 @@ static int cmd_died, curses_active;
 static pid_t cmd_pid;
 
 static int command_pipe = -1;
-static int audiod_pipe = -1;
+static int stat_pipe = -1;
 static struct gui_args_info conf;
 
 enum {GETCH_MODE, COMMAND_MODE, EXTERNAL_MODE};
@@ -191,20 +191,6 @@ static struct gui_command command_list[] = {
        }
 };
 
-static int para_open_audiod_pipe(char *cmd)
-{
-       int fds[3] = {0, 1, 0};
-       pid_t pid;
-       int ret = para_exec_cmdline_pid(&pid, cmd, fds);
-       if (ret < 0)
-               return ret;
-       ret = mark_fd_nonblocking(fds[1]);
-       if (ret > 0)
-               return fds[1];
-       close(fds[1]);
-       return ret;
-}
-
 static int find_cmd_byname(char *name)
 {
        int i;
@@ -708,14 +694,14 @@ print:
        return 1;
 }
 
-static int read_audiod_pipe(fd_set *rfds)
+static int read_stat_pipe(fd_set *rfds)
 {
        static char *buf;
        static int bufsize, loaded;
        int ret, ret2;
        size_t sz;
 
-       if (audiod_pipe < 0)
+       if (stat_pipe < 0)
                return 0;
        if (loaded >= bufsize) {
                if (bufsize > 1000 * 1000) {
@@ -726,7 +712,7 @@ static int read_audiod_pipe(fd_set *rfds)
                buf = para_realloc(buf, bufsize);
        }
        assert(loaded < bufsize);
-       ret = read_nonblock(audiod_pipe, buf + loaded, bufsize - loaded,
+       ret = read_nonblock(stat_pipe, buf + loaded, bufsize - loaded,
                rfds, &sz);
        loaded += sz;
        ret2 = for_each_stat_item(buf, loaded, update_item);
@@ -907,15 +893,24 @@ static void handle_signal(int sig)
        }
 }
 
-static int open_audiod_pipe(void)
+static int open_stat_pipe(void)
 {
        static int init = 1;
+       int ret, fds[3] = {0, 1, 0};
+       pid_t pid;
 
        if (init)
                init = 0;
        else
                sleep(1);
-       return para_open_audiod_pipe(conf.stat_cmd_arg);
+       ret = para_exec_cmdline_pid(&pid, conf.stat_cmd_arg, fds);
+       if (ret < 0)
+               return ret;
+       ret = mark_fd_nonblocking(fds[1]);
+       if (ret >= 0)
+               return fds[1];
+       close(fds[1]);
+       return ret;
 }
 
 /*
@@ -946,11 +941,10 @@ repeat:
 //     ret = refresh_status();
        FD_ZERO(&rfds);
        max_fileno = 0;
-       /* audiod pipe */
-       if (audiod_pipe < 0)
-               audiod_pipe = open_audiod_pipe();
-       if (audiod_pipe >= 0)
-               para_fd_set(audiod_pipe, &rfds, &max_fileno);
+       if (stat_pipe < 0)
+               stat_pipe = open_stat_pipe();
+       if (stat_pipe >= 0)
+               para_fd_set(stat_pipe, &rfds, &max_fileno);
        /* signal pipe */
        para_fd_set(signal_pipe, &rfds, &max_fileno);
        /* command pipe only for COMMAND_MODE */
@@ -981,11 +975,11 @@ repeat:
                        return 0;
                }
        }
-       ret = read_audiod_pipe(&rfds);
+       ret = read_stat_pipe(&rfds);
        if (ret < 0) {
-               PARA_NOTICE_LOG("closing audiod pipe: %s\n", para_strerror(-ret));
-               close(audiod_pipe);
-               audiod_pipe = -1;
+               PARA_NOTICE_LOG("closing stat pipe: %s\n", para_strerror(-ret));
+               close(stat_pipe);
+               stat_pipe = -1;
                clear_all_items();
                free(stat_content[SI_BASENAME]);
                stat_content[SI_BASENAME] =