Subject: bug#8455: Bug#610576: Re: Build of emacs_23.2+1-7

From: Rob Browning <[email-masked]>
Date: Fri, 08 Apr 2011 23:07:59 -0500

(If possible, please preserve the 610576-forwarded address in any replies.)

It looks like there may be a problem with src/term.c on GNU/Hurd
systems.

Samuel Thibault <[email-masked]> writes:

> Svante Signell, le Wed 19 Jan 2011 14:10:09 +0100, a écrit :
>> After installing emacs23 when trying to start it I get the following
>> error: (Googling did not give any useful.)
>> (Trying both xterm from a ssh login and hurd-console)
>> 
>> user@kvm-hurd:~ emacs -nw
>> emacs: Not a tty device: /dev/tty
>
> There's bogus code there indeed:
>
> #ifdef O_IGNORE_CTTY
>     if (!ctty)
>       /* Open the terminal device.  Don't recognize it as our
>          controlling terminal, and don't make it the controlling tty
>          if we don't have one at the moment.  */
>       fd = emacs_open (name, O_RDWR | O_IGNORE_CTTY | O_NOCTTY, 0);
>     else
> #else
>       /* Alas, O_IGNORE_CTTY is a GNU extension that seems to be only
>          defined on Hurd.  On other systems, we need to explicitly
>          dissociate ourselves from the controlling tty when we want to
>          open a frame on the same terminal.  */
>       fd = emacs_open (name, O_RDWR | O_NOCTTY, 0);
> #endif /* O_IGNORE_CTTY */
>
>     tty->name = xstrdup (name);
>
> When O_IGNORE_CTTY is defined (which is the case only on GNU/Hurd...),
> the else branch is actually tty->name = xstrdup(name); ... The obvious
> fix is attached.

--- src/term.c.orig	2011-01-20 02:14:50.000000000 +0100
+++ src/term.c	2011-01-20 02:15:43.000000000 +0100
@@ -3428,13 +3428,12 @@ init_tty (char *name, char *terminal_typ
          if we don't have one at the moment.  */
       fd = emacs_open (name, O_RDWR | O_IGNORE_CTTY | O_NOCTTY, 0);
     else
-#else
+#endif /* O_IGNORE_CTTY */
       /* Alas, O_IGNORE_CTTY is a GNU extension that seems to be only
          defined on Hurd.  On other systems, we need to explicitly
          dissociate ourselves from the controlling tty when we want to
          open a frame on the same terminal.  */
       fd = emacs_open (name, O_RDWR | O_NOCTTY, 0);
-#endif /* O_IGNORE_CTTY */
 
     tty->name = xstrdup (name);
     terminal->name = xstrdup (name);

See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=610576 for
additional information.

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4