configure.ac: para_audiod is optional.
[paraslash.git] / stdin.c
diff --git a/stdin.c b/stdin.c
index 40f02c1cef0a945546966fef4f2cea033d54fc17..4e567008dd1f2f7a3d98cf691a6ce04c2e5a7de1 100644 (file)
--- a/stdin.c
+++ b/stdin.c
@@ -1,10 +1,10 @@
 /*
- * Copyright (C) 2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2008 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
 
-/** \file stdin.c functions that deal with reading from stdin */
+/** \file stdin.c Functions that deal with reading from stdin. */
 
 #include <dirent.h> /* readdir() */
 #include <assert.h>
 #include "stdin.h"
 
 /**
- * the pre_select function of the stdin task
+ * The pre_select function of the stdin task.
  *
- * \param s the scheduler this task was registered to
- * \param t the task structure of the stdin task
+ * \param s The scheduler this task was registered to.
+ * \param t The task structure of the stdin task.
  *
  * This function is always successful. If there is space left in the
  * buffer of the stdin task, it adds \p STDIN_FILENO to the read fd set
@@ -46,10 +46,10 @@ static void stdin_default_event_handler(struct task *t)
 }
 
 /**
- * the post select function of the stdin task
+ * The post select function of the stdin task.
  *
- * \param s the scheduler this task was registered to
- * \param t the task structure of the stdin task
+ * \param s The scheduler this task was registered to.
+ * \param t The task structure of the stdin task.
  *
  * This function checks if \p STDIN_FILENO was included by in the read fd set
  * of \a s during the previous pre_select call.  If yes, and \p STDIN_FILENO
@@ -90,6 +90,8 @@ 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->error = 0,
@@ -97,6 +99,10 @@ void stdin_set_defaults(struct stdin_task *sit)
        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);
 }