make output capturing functions more robust

This commit is contained in:
Sami Samhuri 2011-05-01 19:16:18 -07:00
parent 81aba19868
commit 7dbea04337

View file

@ -14,8 +14,13 @@
#include <unistd.h> #include <unistd.h>
#include "laketest.h" #include "laketest.h"
static int captured = 0;
static void capture_output(void) static void capture_output(void)
{ {
if (captured) return;
captured = 1;
int fd = open("./tmp", O_WRONLY); int fd = open("./tmp", O_WRONLY);
close(2); close(2);
int newfd = dup(fd); int newfd = dup(fd);
@ -29,6 +34,9 @@ static void capture_output(void)
void restore_output(void) void restore_output(void)
{ {
if (!captured) return;
captured = 0;
freopen("/dev/tty", "a", stdout); freopen("/dev/tty", "a", stdout);
freopen("/dev/tty", "a", stderr); freopen("/dev/tty", "a", stderr);
unlink("./tmp"); unlink("./tmp");