/*
- * 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
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);
}
/**
- * 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
} else
t->ret = -E_STDIN_EOF;
if (t->ret < 0)
- sit->eof = 1;
+ sit->error = t->ret;
}
/**
*/
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_nonblock(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);
}