* pty-int.h: Fix typo; VHANG_first -> VHANG_FIRST
authorTom Yu <tlyu@mit.edu>
Fri, 4 May 2001 04:12:07 +0000 (04:12 +0000)
committerTom Yu <tlyu@mit.edu>
Fri, 4 May 2001 04:12:07 +0000 (04:12 +0000)
* open_slave.c (pty_open_slave): Add workaround for Tru64 v5.0,
since its revoke() will fail if the slave isn't open already.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13229 dc483132-0cff-0310-8789-dd5450dbe970

src/util/pty/ChangeLog
src/util/pty/open_slave.c
src/util/pty/pty-int.h

index 51e5188cf5de263772ccdab4d9e6d48bb26b50fd..42f3a69eb255e146033b9797914733bd08c43018 100644 (file)
@@ -1,3 +1,10 @@
+2001-05-04  Tom Yu  <tlyu@mit.edu>
+
+       * pty-int.h: Fix typo; VHANG_first -> VHANG_FIRST.
+
+       * open_slave.c (pty_open_slave): Add workaround for Tru64 v5.0,
+       since its revoke() will fail if the slave isn't open already.
+
 2001-05-03  Ezra Peisach  <epeisach@rna.mit.edu>
 
        * sane_hostname.c (pty_make_sane_hostname): Preserve const
index b8c332603284f335d56c812c92bd7a33dac29f6f..0e863d96a0697e41893924d3340b70bab2c616c7 100644 (file)
@@ -78,9 +78,22 @@ long pty_open_slave ( slave, fd)
       return retval;
     
 #ifdef HAVE_REVOKE
+#if defined(O_NOCTTY) && !defined(OPEN_CTTY_ONLY_ONCE)
+    /*
+     * Some OSes, notably Tru64 v5.0, fail on revoke() if the slave
+     * isn't open.  Since we don't want to acquire it as controlling
+     * tty yet, use O_NOCTTY if available.
+     */
+    vfd = open(slave, O_RDWR | O_NOCTTY);
+    if (vfd < 0)
+       return PTY_OPEN_SLAVE_OPENFAIL;
+#endif
     if (revoke (slave) < 0 ) {
        return PTY_OPEN_SLAVE_REVOKEFAIL;
     }
+#if defined(O_NOCTTY) && !defined(OPEN_CTTY_ONLY_ONCE)
+    close(vfd);
+#endif
 #endif /*HAVE_REVOKE*/
 
 /* Open the pty for real. */
index fa7f828f4bb61687d90126776de1fa38f8d073a3..3f9d2cea3fbbe78619ef86a685e19e89e561860b 100644 (file)
 #endif
 #endif
 
-#if defined(HAVE_VHANGUP) && !defined(OPEN_CTTY_ONLY_ONCE) 
-#define VHANG_first /* Breaks under Ultrix and others where you cannot get controlling terminal twice.*/
+#if defined(HAVE_VHANGUP) && !defined(OPEN_CTTY_ONLY_ONCE) \
+       && !defined(HAVE_REVOKE)
+/*
+ * Breaks under Ultrix and others where you cannot get controlling
+ * terminal twice.
+ */
+#define VHANG_FIRST
 #define VHANG_LAST
 #endif