summaryrefslogtreecommitdiff
path: root/src/pty.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pty.c')
-rw-r--r--src/pty.c255
1 files changed, 2 insertions, 253 deletions
diff --git a/src/pty.c b/src/pty.c
index 876d7b1..79bacb7 100644
--- a/src/pty.c
+++ b/src/pty.c
@@ -41,11 +41,7 @@
# include <sys/stropts.h>
#endif
-#ifdef ISC
-# include <sys/tty.h>
-# include <sys/sioctl.h>
-# include <sys/pty.h>
-#endif
+#include <pty.h>
#include "extern.h"
@@ -59,23 +55,7 @@
# define PTYRANGE1 "0123456789abcdef"
#endif
-/* SVR4 pseudo ttys don't seem to work with SCO-5 */
-#ifdef M_UNIX
-# undef HAVE_SVR4_PTYS
-#endif
-
-/* used for opening a new pty-pair: */
-static char PtyName[32], TtyName[32];
-
-#if !(defined(sequent) || defined(_SEQUENT_) || defined(HAVE_SVR4_PTYS))
-# ifdef M_UNIX
-static char PtyProto[] = "/dev/ptypXY";
-static char TtyProto[] = "/dev/ttypXY";
-# else
-static char PtyProto[] = "/dev/ptyXY";
-static char TtyProto[] = "/dev/ttyXY";
-# endif
-#endif
+static char TtyName[32];
static void initmaster (int);
@@ -105,184 +85,8 @@ InitPTY(int f)
{
if (f < 0)
return;
-#if defined(I_PUSH) && defined(HAVE_SVR4_PTYS) && !defined(sgi) && !defined(linux) && !defined(__GLIBC__) && !defined(__osf__) && !defined(M_UNIX)
- if (ioctl(f, I_PUSH, "ptem"))
- Panic(errno, "InitPTY: cannot I_PUSH ptem");
- if (ioctl(f, I_PUSH, "ldterm"))
- Panic(errno, "InitPTY: cannot I_PUSH ldterm");
-# ifdef sun
- if (ioctl(f, I_PUSH, "ttcompat"))
- Panic(errno, "InitPTY: cannot I_PUSH ttcompat");
-# endif
-#endif
-}
-
-/***************************************************************/
-
-#if defined(OSX) && !defined(PTY_DONE)
-#define PTY_DONE
-int
-OpenPTY(char **ttyn)
-{
- register int f;
- if ((f = open_controlling_pty(TtyName)) < 0)
- return -1;
- initmaster(f);
- *ttyn = TtyName;
- return f;
-}
-#endif
-
-/***************************************************************/
-
-#if (defined(sequent) || defined(_SEQUENT_)) && !defined(PTY_DONE)
-#define PTY_DONE
-int
-OpenPTY(char **ttyn)
-{
- char *m, *s;
- register int f;
-
- if ((f = getpseudotty(&s, &m)) < 0)
- return -1;
-#ifdef _SEQUENT_
- fvhangup(s);
-#endif
- strncpy(PtyName, m, sizeof(PtyName));
- strncpy(TtyName, s, sizeof(TtyName));
- initmaster(f);
- *ttyn = TtyName;
- return f;
-}
-#endif
-
-/***************************************************************/
-
-#if defined(__sgi) && !defined(PTY_DONE)
-#define PTY_DONE
-int
-OpenPTY(char **ttyn)
-{
- int f;
- char *name, *_getpty();
- void (*sigcld)(int);
-
- /*
- * SIGCHLD set to SIG_DFL for _getpty() because it may fork() and
- * exec() /usr/adm/mkpts
- */
- sigcld = signal(SIGCHLD, SIG_DFL);
- name = _getpty(&f, O_RDWR | O_NONBLOCK, 0600, 0);
- signal(SIGCHLD, sigcld);
-
- if (name == 0)
- return -1;
- initmaster(f);
- *ttyn = name;
- return f;
-}
-#endif
-
-/***************************************************************/
-
-#if defined(MIPS) && defined(HAVE_DEV_PTC) && !defined(PTY_DONE)
-#define PTY_DONE
-int
-OpenPTY(char **ttyn)
-{
- register int f;
- struct stat buf;
-
- strncpy(PtyName, "/dev/ptc", 32);
- if ((f = open(PtyName, O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0)
- return -1;
- if (fstat(f, &buf) < 0)
- {
- close(f);
- return -1;
- }
- sprintf(TtyName, "/dev/ttyq%d", minor(buf.st_rdev));
- initmaster(f);
- *ttyn = TtyName;
- return f;
-}
-#endif
-
-/***************************************************************/
-
-#if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE)
-#define PTY_DONE
-int
-OpenPTY(char **ttyn)
-{
- register int f;
- char *m, *ptsname();
- int unlockpt (int), grantpt (int);
-#if defined(HAVE_GETPT) && defined(linux)
- int getpt (void);
-#endif
- void (*sigcld)(int);
-
- strncpy(PtyName, "/dev/ptmx", 32);
-#if defined(HAVE_GETPT) && (defined(linux) || defined(__GLIBC__))
- if ((f = getpt()) == -1)
-#else
- if ((f = open(PtyName, O_RDWR | O_NOCTTY)) == -1)
-#endif
- return -1;
-
- /*
- * SIGCHLD set to SIG_DFL for grantpt() because it fork()s and
- * exec()s pt_chmod
- */
- sigcld = signal(SIGCHLD, SIG_DFL);
- if ((m = ptsname(f)) == NULL || grantpt(f) || unlockpt(f))
- {
- signal(SIGCHLD, sigcld);
- close(f);
- return -1;
- }
- signal(SIGCHLD, sigcld);
- strncpy(TtyName, m, sizeof(TtyName));
- initmaster(f);
- *ttyn = TtyName;
- return f;
-}
-#endif
-
-/***************************************************************/
-
-#if defined(_AIX) && defined(HAVE_DEV_PTC) && !defined(PTY_DONE)
-#define PTY_DONE
-
-int
-OpenPTY(char **ttyn)
-{
- register int f;
-
- /* a dumb looking loop replaced by mycrofts code: */
- strncpy (PtyName, "/dev/ptc", 32);
- if ((f = open (PtyName, O_RDWR | O_NOCTTY)) < 0)
- return -1;
- strncpy(TtyName, ttyname(f), sizeof(TtyName));
- if (eff_uid && access(TtyName, R_OK | W_OK))
- {
- close(f);
- return -1;
- }
- initmaster(f);
-# ifdef _IBMR2
- pty_preopen = 1;
-# endif
- *ttyn = TtyName;
- return f;
}
-#endif
-
-/***************************************************************/
-#if defined(HAVE_OPENPTY) && !defined(PTY_DONE)
-#define PTY_DONE
int
OpenPTY(char **ttyn)
{
@@ -295,59 +99,4 @@ OpenPTY(char **ttyn)
*ttyn = TtyName;
return f;
}
-#endif
-
-/***************************************************************/
-
-#ifndef PTY_DONE
-int
-OpenPTY(char **ttyn)
-{
- register char *p, *q, *l, *d;
- register int f;
-
- debug("OpenPTY: Using BSD style ptys.\n");
- strncpy(PtyName, PtyProto, 32);
- strncpy(TtyName, TtyProto, 32);
- for (p = PtyName; *p != 'X'; p++)
- ;
- for (q = TtyName; *q != 'X'; q++)
- ;
- for (l = PTYRANGE0; (*p = *l) != '\0'; l++)
- {
- for (d = PTYRANGE1; (p[1] = *d) != '\0'; d++)
- {
- debug1("OpenPTY tries '%s'\n", PtyName);
- if ((f = open(PtyName, O_RDWR | O_NOCTTY)) == -1)
- continue;
- q[0] = *l;
- q[1] = *d;
- if (eff_uid && access(TtyName, R_OK | W_OK))
- {
- close(f);
- continue;
- }
-#if defined(sun) && defined(TIOCGPGRP) && !defined(SUNOS3)
- /* Hack to ensure that the slave side of the pty is
- * unused. May not work in anything other than SunOS4.1
- */
- {
- int pgrp;
-
- /* tcgetpgrp does not work (uses TIOCGETPGRP)! */
- if (ioctl(f, TIOCGPGRP, (char *)&pgrp) != -1 || errno != EIO)
- {
- close(f);
- continue;
- }
- }
-#endif
- initmaster(f);
- *ttyn = TtyName;
- return f;
- }
- }
- return -1;
-}
-#endif