GNU bug report logs - #8450
23.2.1 fails to start on GNU/Hurd due to bogus code in term.c

Previous Next

Package: emacs;

Reported by: svante.signell <at> telia.com

Date: Fri, 8 Apr 2011 16:17:04 UTC

Severity: normal

Merged with 8455

Found in version 23.2.1

Done: Chong Yidong <cyd <at> stupidchicken.com>

Bug is archived. No further changes may be made.

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Svante Signell <svante.signell <at> telia.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 23.2.1 fails to start on GNU/Hurd due to bogus code in term.c
Date: Fri, 08 Apr 2011 12:31:45 +0200
Starting Debian emacs 23.2+1-7 in non-window system mode on GNU/Hurd
fails due to bogus code:
#:~ emacs -nw
emacs: Not a tty device: /dev/tty

src/term.c:
#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 (provided by Samuel Thibault)

--- 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);

Is this fixed in 23.3 already?

GNU Emacs 23.2.1 (i486-pc-gnu)
 of 2011-01-20 on kvm-hurd, modified by Debian






This bug report was last modified 14 years and 52 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.