Hello, I just looked through screen's source code and I saw that it tries almost any way to open up a PTY, except for the only way described in POSIX, namely posix_openpt():
http://www.opengroup.org/onlinepubs/000095399/functions/posix_openpt.html
We can just call posix_openpt() and ptsname() to obtain a PTY and figure
out its name.
I've attached a really simple patch to fix screen to use posix_openpt(),
but I didn't add the autoconf parts, because for some reason, it gave a
lot of strange errors on my box. We can only use this code if
posix_openpt() and ptsname() are available. If someone else is willing
to add those bits for me, that would be great.
Yours,
--
Ed Schouten <[EMAIL PROTECTED]>
WWW: http://g-rave.nl/
--- pty.c 2003-09-08 16:26:18.000000000 +0200
+++ pty.c 2008-01-27 14:14:58.000000000 +0100
@@ -145,6 +145,35 @@
/***************************************************************/
+#if 1 && !defined(PTY_DONE)
+#define PTY_DONE
+int
+OpenPTY(ttyn)
+char **ttyn;
+{
+ int f;
+ char *n;
+
+ f = posix_openpt(O_RDWR|O_NOCTTY);
+ if (f < 0)
+ return -1;
+
+ n = ptsname(f);
+ if (n == NULL) {
+ close(f);
+ return -1;
+ }
+
+ initmaster(f);
+ pty_preopen = 1;
+ strncpy(TtyName, n, sizeof(TtyName));
+ *ttyn = TtyName;
+ return f;
+}
+#endif
+
+/***************************************************************/
+
#if defined(OSX) && !defined(PTY_DONE)
#define PTY_DONE
int
pgpRxu74AnCDo.pgp
Description: PGP signature
_______________________________________________ screen-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/screen-devel
