From 355ddbc82827100a3db5e53ce0684a195b98602a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Mon, 16 Feb 2009 18:37:25 +0000 Subject: [PATCH] Streams pty code. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24731 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/roken/rkpty.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/lib/roken/rkpty.c b/lib/roken/rkpty.c index 309469722..8857557e3 100644 --- a/lib/roken/rkpty.c +++ b/lib/roken/rkpty.c @@ -90,6 +90,38 @@ open_pty(void) if(openpty(&master, &slave, line, 0, 0) == 0) return; #endif /* HAVE_OPENPTY .... */ +#ifdef STREAMSPTY + { + char *clone[] = { + "/dev/ptc", + "/dev/ptmx", + "/dev/ptm", + "/dev/ptym/clone", + NULL + }; + + char **q; + int p; + for(q = clone; *q; q++){ + master = open(*q, O_RDWR); + if(master >= 0){ +#ifdef HAVE_GRANTPT + grantpt(master); +#endif +#ifdef HAVE_UNLOCKPT + unlockpt(master); +#endif + strlcpy(line, ptsname(master), sizeof(line)); + slave = open(line, O_RDWR); + if (slave < 0) + errx(1, "failed to open slave"); + ioctl(slave, I_PUSH, "ptem"); + ioctl(slave, I_PUSH, "ldterm"); + } + } + } +#endif /* STREAMSPTY */ + /* more cases, like open /dev/ptmx, etc */ exit(77);