summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Faylor <me+cygwin@cgf.cx>2002-09-14 03:28:23 +0000
committerChristopher Faylor <me+cygwin@cgf.cx>2002-09-14 03:28:23 +0000
commit2becadeece8514d5027d1de743ee843cfd0a109e (patch)
tree85df3263344c05f2152f47fc1c9e11eefa34ca68
parentde17c821b37ffda295746b31cf47e19ca2303b78 (diff)
downloadppe42-binutils-2becadeece8514d5027d1de743ee843cfd0a109e.tar.gz
ppe42-binutils-2becadeece8514d5027d1de743ee843cfd0a109e.zip
* win32-nat.c (child_create_inferior): Honor 'tty' command.
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/win32-nat.c34
-rw-r--r--gdb/windows-nat.c34
3 files changed, 72 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 78af9f8665..f077dc2b8d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,7 @@
+2002-09-13 Christopher Faylor <cgf@redhat.com>
+
+ * win32-nat.c (child_create_inferior): Honor 'tty' command.
+
2002-09-13 Daniel Jacobowitz <drow@mvista.com>
* gdbtypes.c (check_stub_method): Make static.
diff --git a/gdb/win32-nat.c b/gdb/win32-nat.c
index 781a84126c..e2a85e138d 100644
--- a/gdb/win32-nat.c
+++ b/gdb/win32-nat.c
@@ -1461,6 +1461,8 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
char *toexec;
char shell[MAX_PATH + 1]; /* Path to shell */
const char *sh;
+ int tty;
+ int ostdin, ostdout, ostderr;
if (!exec_file)
error ("No executable specified, use `target exec'.\n");
@@ -1573,6 +1575,27 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
*temp = 0;
}
+ if (!inferior_io_terminal)
+ tty = ostdin = ostdout = ostderr = -1;
+ else
+ {
+ tty = open (inferior_io_terminal, O_RDWR | O_NOCTTY);
+ if (tty < 0)
+ {
+ print_sys_errmsg (inferior_io_terminal, errno);
+ ostdin = ostdout = ostderr = -1;
+ }
+ else
+ {
+ ostdin = dup (0);
+ ostdout = dup (1);
+ ostderr = dup (2);
+ dup2 (tty, 0);
+ dup2 (tty, 1);
+ dup2 (tty, 2);
+ }
+ }
+
ret = CreateProcess (0,
args, /* command line */
NULL, /* Security */
@@ -1583,6 +1606,17 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
NULL, /* current directory */
&si,
&pi);
+ if (tty >= 0)
+ {
+ close (tty);
+ dup2 (ostdin, 0);
+ dup2 (ostdout, 1);
+ dup2 (ostderr, 2);
+ close (ostdin);
+ close (ostdout);
+ close (ostderr);
+ }
+
if (!ret)
error ("Error creating process %s, (error %d)\n", exec_file, GetLastError ());
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 781a84126c..e2a85e138d 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -1461,6 +1461,8 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
char *toexec;
char shell[MAX_PATH + 1]; /* Path to shell */
const char *sh;
+ int tty;
+ int ostdin, ostdout, ostderr;
if (!exec_file)
error ("No executable specified, use `target exec'.\n");
@@ -1573,6 +1575,27 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
*temp = 0;
}
+ if (!inferior_io_terminal)
+ tty = ostdin = ostdout = ostderr = -1;
+ else
+ {
+ tty = open (inferior_io_terminal, O_RDWR | O_NOCTTY);
+ if (tty < 0)
+ {
+ print_sys_errmsg (inferior_io_terminal, errno);
+ ostdin = ostdout = ostderr = -1;
+ }
+ else
+ {
+ ostdin = dup (0);
+ ostdout = dup (1);
+ ostderr = dup (2);
+ dup2 (tty, 0);
+ dup2 (tty, 1);
+ dup2 (tty, 2);
+ }
+ }
+
ret = CreateProcess (0,
args, /* command line */
NULL, /* Security */
@@ -1583,6 +1606,17 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
NULL, /* current directory */
&si,
&pi);
+ if (tty >= 0)
+ {
+ close (tty);
+ dup2 (ostdin, 0);
+ dup2 (ostdout, 1);
+ dup2 (ostderr, 2);
+ close (ostdin);
+ close (ostdout);
+ close (ostderr);
+ }
+
if (!ret)
error ("Error creating process %s, (error %d)\n", exec_file, GetLastError ());
OpenPOWER on IntegriCloud