]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - stdin.c
Always check the return value of mark_fd_nonblocking().
[paraslash.git] / stdin.c
diff --git a/stdin.c b/stdin.c
index 649d464b485142263c768dbfb4698519d3c5aee2..afbe35f8eaf2f74a7e04437e5c60de1a2a6a9b1b 100644 (file)
--- a/stdin.c
+++ b/stdin.c
@@ -41,7 +41,7 @@ static void stdin_pre_select(struct sched *s, struct task *t)
 
 static void stdin_default_event_handler(struct task *t)
 {
-       PARA_NOTICE_LOG("%p: %s\n", t, PARA_STRERROR(-t->ret));
+       PARA_NOTICE_LOG("%p: %s\n", t, para_strerror(-t->ret));
        unregister_task(t);
 }
 
@@ -75,7 +75,7 @@ static void stdin_post_select(struct sched *s, struct task *t)
        } else
                t->ret = -E_STDIN_EOF;
        if (t->ret < 0)
-               sit->eof = 1;
+               sit->error = t->ret;
 }
 
 /**
@@ -90,13 +90,19 @@ static void stdin_post_select(struct sched *s, struct task *t)
  */
 void stdin_set_defaults(struct stdin_task *sit)
 {
+       int ret;
+
        sit->bufsize = 16 * 1024,
        sit->loaded = 0,
-       sit->eof = 0,
+       sit->error = 0,
        sit->task.pre_select = stdin_pre_select;
        sit->task.post_select = stdin_post_select;
        sit->task.event_handler = stdin_default_event_handler;
        sit->task.private_data = sit;
-       mark_fd_nonblocking(STDIN_FILENO);
        sprintf(sit->task.status, "stdin reader");
+       ret = mark_fd_nonblocking(STDIN_FILENO);
+       if (ret >= 0)
+               return;
+       PARA_EMERG_LOG("%s\n", para_strerror(-ret));
+       exit(EXIT_FAILURE);
 }