struct stat other_tty;
int res;
+ /* Users can explicitly set the inferior tty to "/dev/tty" to mean
+ "the GDB terminal". */
+ if (strcmp (tty, "/dev/tty") == 0)
+ return TRIBOOL_TRUE;
+
res = stat (tty, &other_tty);
if (res == -1)
return TRIBOOL_UNKNOWN;
#endif
void
-new_tty (void)
+new_tty ()
{
- if (inferior_thisrun_terminal == 0)
+ if (inferior_thisrun_terminal == nullptr
+ || is_gdb_terminal (inferior_thisrun_terminal))
return;
#if !defined(__GO32__) && !defined(_WIN32)
int tty;
/* Save the name for later, for determining whether we and the child
are sharing a tty. */
- if (inferior_thisrun_terminal)
- {
- struct inferior *inf = current_inferior ();
- struct terminal_info *tinfo = get_inflow_inferior_data (inf);
+ struct inferior *inf = current_inferior ();
+ struct terminal_info *tinfo = get_inflow_inferior_data (inf);
- tinfo->run_terminal = xstrdup (inferior_thisrun_terminal);
- }
+ if (inferior_thisrun_terminal != nullptr)
+ tinfo->run_terminal = xstrdup (inferior_thisrun_terminal);
+ else
+ tinfo->run_terminal = xstrdup ("/dev/tty");
inferior_thisrun_terminal = NULL;
}
#ifdef HAVE_SETSID
pid_t ret;
- if (!job_control || inferior_thisrun_terminal == 0)
+ if (!job_control
+ || inferior_thisrun_terminal == nullptr
+ || is_gdb_terminal (inferior_thisrun_terminal))
return 0;
ret = setsid ();