From d5f2e6223f90b56fb173997bc2932bc361f54475 Mon Sep 17 00:00:00 2001 From: Petr Rockai Date: Mon, 8 Oct 2012 20:15:55 +0200 Subject: [PATCH] TEST: When INTERACTIVE=1, allow scripts to control a TTY. --- test/lib/harness.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/test/lib/harness.c b/test/lib/harness.c index c1d6774e5..929bfc8b7 100644 --- a/test/lib/harness.c +++ b/test/lib/harness.c @@ -44,6 +44,7 @@ static int readbuf_sz = 0, readbuf_used = 0; static int die = 0; static int verbose = 0; /* >1 with timestamps */ +static int interactive = 0; /* disable all redirections */ struct subst { const char *key; @@ -278,11 +279,13 @@ static void run(int i, char *f) { perror("Fork failed."); exit(201); } else if (pid == 0) { - close(0); - dup2(fds[0], 1); - dup2(fds[0], 2); - close(fds[0]); - close(fds[1]); + if (!interactive) { + close(0); + dup2(fds[0], 1); + dup2(fds[0], 2); + close(fds[0]); + close(fds[1]); + } execlp("bash", "bash", f, NULL); perror("execlp"); fflush(stderr); @@ -320,7 +323,8 @@ static void run(int i, char *f) { } int main(int argc, char **argv) { - const char *be_verbose = getenv("VERBOSE"); + const char *be_verbose = getenv("VERBOSE"), + *be_interactive = getenv("INTERACTIVE"); time_t start = time(NULL); int i; @@ -332,6 +336,9 @@ int main(int argc, char **argv) { if (be_verbose) verbose = atoi(be_verbose); + if (be_interactive) + interactive = atoi(be_interactive); + if (socketpair(PF_UNIX, SOCK_STREAM, 0, fds)) { perror("socketpair"); return 201; -- 2.43.5