]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - stdin.c
sched: Introduce sched_{read,write}_ok().
[paraslash.git] / stdin.c
diff --git a/stdin.c b/stdin.c
index a66ad469c2d648a875d4e8f1ce6917606a18967d..eea78b3eb8cabee7c39900c248a2e9f116426872 100644 (file)
--- a/stdin.c
+++ b/stdin.c
@@ -1,12 +1,7 @@
-/*
- * Copyright (C) 2006-2014 Andre Noll <maan@systemlinux.org>
- *
- * Licensed under the GPL v2. For licencing details see COPYING.
- */
+/* Copyright (C) 2006 Andre Noll <maan@tuebingen.mpg.de>, see file COPYING. */
 
 /** \file stdin.c Functions that deal with reading from stdin. */
 
-#include <assert.h>
 #include <regex.h>
 
 #include "para.h"
@@ -42,7 +37,7 @@ static void stdin_pre_select(struct sched *s, void *context)
  * during the previous pre_select call. If so, and if STDIN_FILENO is readable,
  * data is read from stdin and fed into the buffer tree.
  */
-static int stdin_post_select(struct sched *s, void *context)
+static int stdin_post_select(__a_unused struct sched *s, void *context)
 {
        struct stdin_task *sit = context;
        ssize_t ret;
@@ -69,7 +64,7 @@ static int stdin_post_select(struct sched *s, void *context)
         * reference can not be freed, we're stuck.
         */
        sz = PARA_MIN(sz, btr_pool_size(sit->btrp) / 2);
-       ret = read_nonblock(STDIN_FILENO, buf, sz, &s->rfds, &n);
+       ret = read_nonblock(STDIN_FILENO, buf, sz, &n);
        if (n > 0)
                btr_add_output_pool(sit->btrp, n, sit->btrn);
        if (ret >= 0)
@@ -115,6 +110,7 @@ void stdin_task_register(struct stdin_task *sit, struct sched *s)
                exit(EXIT_FAILURE);
        }
        sit->fd_flags = ret;
-       sit->must_set_nonblock_flag = (sit->fd_flags & O_NONBLOCK) == 0;
+       sit->must_set_nonblock_flag = (sit->fd_flags & O_NONBLOCK) == 0
+               && !isatty(STDIN_FILENO);
        sit->task = task_register(&ti, s);
 }