Implement _getpty handling for the SGI
authorSam Hartman <hartmans@mit.edu>
Sun, 24 Mar 1996 20:31:55 +0000 (20:31 +0000)
committerSam Hartman <hartmans@mit.edu>
Sun, 24 Mar 1996 20:31:55 +0000 (20:31 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@7707 dc483132-0cff-0310-8789-dd5450dbe970

src/util/pty/ChangeLog
src/util/pty/configure.in
src/util/pty/getpty.c
src/util/pty/pty-int.h

index 78e8c8f6d6db4d2d774e9ed9a46f939b0e696ef2..fb88e790b7b7791a55a218fe10dc56c486ca3756 100644 (file)
@@ -1,3 +1,15 @@
+Sat Mar 23 15:24:38 1996  Sam Hartman  <hartmans@tertius.mit.edu>
+
+       * configure.in : Remove shadow passwords check because nothing in
+       libpty cares about the result; remove use of libkrb5, libkrb4,
+       libkadm; Check for _getpty
+
+       * getpty.c (pty_getpty): Support _getpty for Irix; Irix has
+       /dev/ptmx, but it doesn't work correctly at all.  Also, Irix,
+       tends to create device nodes on the fly.
+
+       * pty-int.h: No need to include sys/socket.h
+
 Sat Feb 24 21:34:58 1996  Theodore Y. Ts'o  <tytso@dcl>
 
        * vhangup.c (ptyint_vhangup): Don't do call vhangup() if system
index 32fae25528d5e565e7f68d8d275e9456269be13d..3d5a649aa75db05c5ab23417941fd65341b1a33b 100644 (file)
@@ -6,8 +6,8 @@ LinkFileDir([$](TOPLIBD)/libpty.a,libpty.a,../util/pty)
 AC_PROG_INSTALL
 AC_PROG_ARCHIVE
 AC_PROG_RANLIB
-AC_CHECK_FUNCS(fchmod fchown revoke vhangup killpg)
-dnl dbm libs for use of an_to_ln
+AC_CHECK_FUNCS(fchmod fchown revoke vhangup killpg _getpty)
+dnl
 LOGINLIBS=
 dnl
 dnl Make our operating system-specific security checks and definitions for
@@ -125,25 +125,9 @@ AC_DEFINE(SETPGRP_TWOARG)
 fi
 dnl
 dnl
-AC_MSG_CHECKING([shadow password support])
-AC_CACHE_VAL(krb5_cv_shadow_pwd,
-[AC_TRY_LINK(
-[#include <sys/types.h>
-#include <pwd.h>
-#include <shadow.h>],
-[struct spwd *sp = getspnam("root")],
-krb5_cv_shadow_pwd=yes, krb5_cv_shadow_pwd=no)])
-AC_MSG_RESULT($krb5_cv_shadow_pwd)
-if test $krb5_cv_shadow_pwd = yes; then
-AC_DEFINE(HAVE_SHADOW)
-fi
-dnl
 dnl
 ADD_DEF(-DKERBEROS)
 AC_CONST
-USE_KADM_LIBRARY
-USE_KRB4_LIBRARY
-KRB5_LIBRARIES
 V5_USE_SHARED_LIB
 SubdirLibraryRule([$(LIBOBJS)])
 V5_AC_OUTPUT_MAKEFILE
index 867cbdf7f532c283c32f8d1138f9bf721f5f9766..dd86aa6cff42b79496c54fe072956d0c5610b08f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * pty_getpty: open a PTY master.
  *
- * Copyright 1995 by the Massachusetts Institute of Technology.
+ * Copyright 1995, 1996 by the Massachusetts Institute of Technology.
  *
  * 
  * Permission to use, copy, modify, and distribute this software and
@@ -30,7 +30,9 @@ long pty_getpty (fd, slave, slavelength)
     int i,ptynum;
     struct stat stb;
 char slavebuf[1024];
-
+#ifdef HAVE__GETPTY
+char *slaveret; /*Temporary to hold pointer to slave*/
+#endif /*HAVE__GETPTY*/
 
 #ifdef HAVE_OPENPTY
     int slavefd;
@@ -39,9 +41,29 @@ char slavebuf[1024];
          (struct winsize *) 0)) return 1;
 close(slavefd);
     return 0;
-#else
-
-    *fd = open("/dev/ptmx", O_RDWR|O_NDELAY);  /* Solaris, IRIX */
+#else /*HAVE_OPENPTY*/
+#ifdef HAVE__GETPTY
+    /* This code is included for Irix; as of version 5.3, Irix has /dev/ptmx,
+     * but it fails to work properly; even cafter calling unlockpt,
+     * root gets permission denied opening the pty.
+     * The code to support _getpty should be removed if Irix gets working
+     * streams ptys in favor of maintaining the least needed code
+     * paths.
+     */
+    if ((slaveret = _getpty(fd, O_RDWR|O_NDELAY, 0600, 0)) == 0) {
+      *fd = -1;
+      return PTY_GETPTY_NOPTY;
+    }
+    if (strlen(slaveret) > slavelength) {
+      close(*fd);
+      *fd = -1;
+      return PTY_GETPTY_SLAVE_TOOLONG;
+    }
+    else strcpy(slave, slaveret);
+    return 0;
+#else /*HAVE__GETPTY*/
+    
+    *fd = open("/dev/ptmx", O_RDWR|O_NDELAY);  /* Solaris*/
     if (*fd < 0) *fd = open("/dev/ptc", O_RDWR|O_NDELAY); /* AIX */
     if (*fd < 0) *fd = open("/dev/pty", O_RDWR|O_NDELAY); /* sysvimp */
 
@@ -113,6 +135,7 @@ return PTY_GETPTY_SLAVE_TOOLONG;
        }
        return PTY_GETPTY_NOPTY;
     }
+#endif /*HAVE__GETPTY*/
 #endif /* HAVE_OPENPTY */
 }
 
index 489072654bf4069c9a75b9a41273109ff6c90e70..4b6d1570deba21ea4e0668ce868269546508fe7f 100644 (file)
@@ -22,7 +22,6 @@
 #include <stdio.h>
 
 #include <sys/stat.h>
-#include <sys/socket.h>
 #include <sys/ioctl.h>
 #include <sys/wait.h>
 #include <sys/file.h>