]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - stdout.c
sched: Introduce sched_{read,write}_ok().
[paraslash.git] / stdout.c
index 29db2b7e3e28f050d72577a6d8b533c18ed54be8..71c45f69518b349d07143823003dedac9a0f5e2f 100644 (file)
--- a/stdout.c
+++ b/stdout.c
@@ -1,8 +1,4 @@
-/*
- * Copyright (C) 2006 Andre Noll <maan@tuebingen.mpg.de>
- *
- * Licensed under the GPL v2. For licencing details see COPYING.
- */
+/* Copyright (C) 2006 Andre Noll <maan@tuebingen.mpg.de>, see file COPYING. */
 
 /** \file stdout.c Functions that deal with writing to stdout. */
 
@@ -44,7 +40,7 @@ static int stdout_post_select(struct sched *s, void *context)
                goto out;
        if (ret == 0)
                return 0;
-       if (!FD_ISSET(STDOUT_FILENO, &s->wfds))
+       if (!sched_write_ok(STDOUT_FILENO, s))
                return 0;
 
        if (sot->must_set_nonblock_flag) {
@@ -89,13 +85,14 @@ void stdout_task_register(struct stdout_task *sot, struct sched *s)
                .name = "stdout",
        };
 
-       /* See stdin.c for details. */
+       /* See \ref stdin.c for details. */
        ret = fcntl(STDOUT_FILENO, F_GETFL);
        if (ret < 0) {
                PARA_EMERG_LOG("F_GETFL: %s\n", strerror(errno));
                exit(EXIT_FAILURE);
        }
        sot->fd_flags = ret;
-       sot->must_set_nonblock_flag = (sot->fd_flags & O_NONBLOCK) == 0;
+       sot->must_set_nonblock_flag = (sot->fd_flags & O_NONBLOCK) == 0
+               && !isatty(STDOUT_FILENO);
        sot->task = task_register(&ti, s);
 }