]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - gui.c
signal: Provide generic signal_pre_select().
[paraslash.git] / gui.c
diff --git a/gui.c b/gui.c
index 552b625bb9749b40538bcf229d813125f09bd500..620367e5f52c0dfd5ff1597e4d688563fa6b546b 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -659,7 +659,8 @@ static int status_post_select(struct sched *s, void *context)
        ret2 = for_each_stat_item(st->buf, st->loaded, update_item);
        if (ret < 0 || ret2 < 0) {
                st->loaded = 0;
-               PARA_NOTICE_LOG("closing stat pipe: %s\n", para_strerror(-ret));
+               PARA_NOTICE_LOG("closing stat pipe: %s\n",
+                       para_strerror(ret < 0? -ret : -ret2));
                close(st->fd);
                st->fd = -1;
                clear_all_items();
@@ -1131,12 +1132,6 @@ static int input_post_select(__a_unused struct sched *s, __a_unused void *contex
        return 0;
 }
 
-static void signal_pre_select(struct sched *s, void *context)
-{
-       struct signal_task *st = context;
-       para_fd_set(st->fd, &s->rfds, &s->max_fileno);
-}
-
 static void print_scroll_msg(void)
 {
        unsigned lines_total, filled = ringbuffer_filled(bot_win_rb);
@@ -1407,6 +1402,7 @@ __noreturn static void print_help_and_die(void)
 
 static int setup_tasks_and_schedule(void)
 {
+       int ret;
        struct exec_task exec_task = {.task = NULL};
        struct status_task status_task = {.fd = -1};
        struct input_task input_task = {.task = NULL};
@@ -1450,7 +1446,9 @@ static int setup_tasks_and_schedule(void)
                .post_select = signal_post_select,
                .context = &signal_task,
        }, &sched);
-       return schedule(&sched);
+       ret = schedule(&sched);
+       sched_shutdown(&sched);
+       return ret;
 }
 
 /**