From 0f957d89c90062fdf8ad8ce4c3796b54b51d20e9 Mon Sep 17 00:00:00 2001 From: Charles Date: Sun, 3 Nov 2019 05:00:29 +0100 Subject: Fixed false positive on blank output, added last char test of pft --- helper.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) (limited to 'helper.c') diff --git a/helper.c b/helper.c index 3e265bf..9fe8d56 100644 --- a/helper.c +++ b/helper.c @@ -1,5 +1,7 @@ #include #include +#include +#include #include "header.h" #define BUF_SIZE (1 << 10) @@ -10,43 +12,30 @@ char buf[BUF_SIZE + 1] = {0}; void test_setup(void) { - if (saved_stdout != -1) - { - dup2(saved_stdout, STDOUT_FILENO); - close(saved_stdout); - saved_stdout = -1; - close(pipefd[0]); - close(pipefd[1]); - } + saved_stdout = dup(STDOUT_FILENO); if (pipe(pipefd) != 0) exit(EXIT_FAILURE); - saved_stdout = dup(STDOUT_FILENO); dup2(pipefd[1], STDOUT_FILENO); } void test_tear_down(void) { - if (saved_stdout != -1) - { - dup2(saved_stdout, STDOUT_FILENO); - close(saved_stdout); - saved_stdout = -1; - close(pipefd[0]); - close(pipefd[1]); - } - fflush(stdout); + dup2(saved_stdout, STDOUT_FILENO); + close(saved_stdout); + close(pipefd[0]); + close(pipefd[1]); } -#include char *read_stdout_buf(void) { fflush(stdout); long flags = fcntl(pipefd[0], F_GETFL); flags |= O_NONBLOCK; fcntl(pipefd[0], F_SETFL, flags); + buf[0] = 0; int ret = read(pipefd[0], buf, BUF_SIZE); - buf[ret] = '\0'; - fflush(stdout); + if (ret != -1) + buf[ret] = '\0'; return (buf); } -- cgit