summaryrefslogtreecommitdiffstats
path: root/src/appl/libpty/open_slave.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/appl/libpty/open_slave.c')
-rw-r--r--src/appl/libpty/open_slave.c101
1 files changed, 0 insertions, 101 deletions
diff --git a/src/appl/libpty/open_slave.c b/src/appl/libpty/open_slave.c
deleted file mode 100644
index 97f20fe3b1..0000000000
--- a/src/appl/libpty/open_slave.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * pty_open_slave: open slave side of terminal, clearing for use.
- *
- * Copyright 1995, 1996, 2001 by the Massachusetts Institute of
- * Technology.
- *
- *
- * Permission to use, copy, modify, and distribute this software and
- * its documentation for any purpose and without fee is hereby
- * granted, provided that the above copyright notice appear in all
- * copies and that both that copyright notice and this permission
- * notice appear in supporting documentation, and that the name of
- * M.I.T. not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Furthermore if you modify this software you must label
- * your software as modified software and not distribute it in such a
- * fashion that it might be confused with the original M.I.T. software.
- * M.I.T. makes no representations about the suitability
- * of this software for any purpose. It is provided "as is" without
- * express or implied warranty.
- *
- */
-
-#include "com_err.h"
-#include "libpty.h"
-#include "pty-int.h"
-
-long
-pty_open_slave(const char *slave, int *fd)
-{
- int tmpfd;
- long retval;
-
- /* Sanity check. */
- if (slave == NULL || *slave == '\0')
- return PTY_OPEN_SLAVE_TOOSHORT;
-
- /* First, set up a new session and void old associations. */
- ptyint_void_association();
-
- /*
- * Make a first attempt at acquiring the ctty under certain
- * condisions. This is necessary for several reasons:
- *
- * Under Irix, if you open a pty slave and then close it, a
- * subsequent open of the slave will cause the master to read EOF.
- * To prevent this, don't close the first fd until we do the real
- * open following vhangup().
- *
- * Under Tru64 v5.0, if there isn't a fd open on the slave,
- * revoke() fails with ENOTTY, curiously enough.
- *
- * Anyway, sshd seems to make a practice of doing this.
- */
-#if defined(VHANG_FIRST) || defined(REVOKE_NEEDS_OPEN)
- retval = pty_open_ctty(slave, fd);
- if (retval)
- return retval;
- if (*fd < 0)
- return PTY_OPEN_SLAVE_OPENFAIL;
-#endif
-
- /* chmod and chown the slave. */
- if (chmod(slave, 0))
- return PTY_OPEN_SLAVE_CHMODFAIL;
- if (chown(slave, 0, 0) == -1)
- return PTY_OPEN_SLAVE_CHOWNFAIL;
-
-#ifdef HAVE_REVOKE
- if (revoke(slave) < 0) {
- return PTY_OPEN_SLAVE_REVOKEFAIL;
- }
-#else /* !HAVE_REVOKE */
-#ifdef VHANG_FIRST
- ptyint_vhangup();
-#endif
-#endif /* !HAVE_REVOKE */
-
- /* Open the pty for real. */
- retval = pty_open_ctty(slave, &tmpfd);
-#if defined(VHANG_FIRST) || defined(REVOKE_NEEDS_OPEN)
- close(*fd);
-#endif
- if (retval) {
- *fd = -1;
- return PTY_OPEN_SLAVE_OPENFAIL;
- }
- *fd = tmpfd;
- retval = pty_initialize_slave(*fd);
- if (retval)
- return retval;
- /* Make sure it's really our ctty. */
- tmpfd = open("/dev/tty", O_RDWR|O_NDELAY);
- if (tmpfd < 0) {
- close(*fd);
- *fd = -1;
- return PTY_OPEN_SLAVE_NOCTTY;
- }
- close(tmpfd);
- return 0;
-}