Mercurial > emacs
changeset 83154:ae72b7a6c292
Dissociate from the controlling tty correctly on FreeBSD.
* src/term.c (dissociate_if_controlling_tty): On some systems TIOCNOTTY
works only on /dev/tty. Adapt the function accordingly.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-194
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Tue, 08 Jun 2004 00:46:13 +0000 |
parents | 8a11bf743e66 |
children | 235fb3b11e1f |
files | src/term.c |
diffstat | 1 files changed, 15 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/term.c Tue Jun 08 00:41:04 2004 +0000 +++ b/src/term.c Tue Jun 08 00:46:13 2004 +0000 @@ -2256,26 +2256,29 @@ void dissociate_if_controlling_tty (int fd) { -#if defined (USG) && !defined (BSD_PGRPS) int pgid; - EMACS_GET_TTY_PGRP (fd, &pgid); + EMACS_GET_TTY_PGRP (fd, &pgid); /* If tcgetpgrp succeeds, fd is the ctty. */ if (pgid != -1) { +#if defined (USG) && !defined (BSD_PGRPS) setpgrp (); no_controlling_tty = 1; - } #else #ifdef TIOCNOTTY /* Try BSD ioctls. */ - sigblock (sigmask (SIGTTOU)); - if (ioctl (fd, TIOCNOTTY, 0) != -1) - { - no_controlling_tty = 1; + sigblock (sigmask (SIGTTOU)); + fd = emacs_open ("/dev/tty", O_RDWR, 0); + if (fd != -1 && ioctl (fd, TIOCNOTTY, 0) != -1) + { + no_controlling_tty = 1; + } + if (fd != -1) + emacs_close (fd); + sigunblock (sigmask (SIGTTOU)); +#else + /* Unknown system. */ + croak (); +#endif /* ! TIOCNOTTY */ } - sigunblock (sigmask (SIGTTOU)); -#else - /* Unknown system. */ - croak (); -#endif /* ! TIOCNOTTY */ #endif /* ! USG */ }