* syscalls.cc (open): Add temporary kludge to avoid assigning the controlling

tty on open unless the open is for stdin/stdout/stderr.
* tty.cc (tty_list::connect): Set ENXIO when can't find a tty.
This commit is contained in:
Christopher Faylor 2011-10-10 22:01:06 +00:00
parent 4c34aaba55
commit be96a30c43
3 changed files with 13 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2011-10-10 Christopher Faylor <me.cygwin2011@cgf.cx>
* syscalls.cc (open): Add temporary kludge to avoid assigning the
controlling tty on open unless the open is for stdin/stdout/stderr.
* tty.cc (tty_list::connect): Set ENXIO when can't find a tty.
2011-10-10 Corinna Vinschen <corinna@vinschen.de> 2011-10-10 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_process::closedir): Declare. * fhandler.h (fhandler_process::closedir): Declare.

View File

@ -1130,6 +1130,12 @@ open (const char *unix_path, int flags, ...)
if (fd >= 0) if (fd >= 0)
{ {
/* This is a temporary kludge until all utilities can catch up with
a change in behavior that implements linux functionality: opening
a tty should not automatically cause it to become the controlling
tty for the process. */
if (fd > 2)
flags |= O_NOCTTY;
if (!(fh = build_fh_name (unix_path, if (!(fh = build_fh_name (unix_path,
(flags & (O_NOFOLLOW | O_EXCL)) (flags & (O_NOFOLLOW | O_EXCL))
? PC_SYM_NOFOLLOW : PC_SYM_FOLLOW, ? PC_SYM_NOFOLLOW : PC_SYM_FOLLOW,

View File

@ -103,6 +103,7 @@ tty_list::connect (int ttynum)
if (!ttys[ttynum].exists ()) if (!ttys[ttynum].exists ())
{ {
termios_printf ("tty %d was not allocated", ttynum); termios_printf ("tty %d was not allocated", ttynum);
set_errno (ENXIO);
return -1; return -1;
} }