Patch from Brad Smith to use posix_openpt() instead of
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 18 Dec 2012 09:02:38 +0000 (09:02 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 18 Dec 2012 09:02:38 +0000 (09:02 +0000)
open("/dev/ptmx"), where the former is available. Improves
portability, since at least one OS (OpenBSD) supports the POSIX pty
functions but does it via an underlying mechanism which doesn't
involving having a /dev/ptmx.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9728 cda61777-01e9-0310-a592-d414129be87e

unix/configure.ac
unix/uxpty.c

index f9fe51f..17db126 100644 (file)
@@ -118,7 +118,7 @@ AC_CHECK_LIB(X11, XOpenDisplay,
              [GTK_LIBS="-lX11 $GTK_LIBS"
               AC_DEFINE([HAVE_LIBX11],[],[Define if libX11.a is available])])
 
-AC_CHECK_FUNCS([getaddrinfo ptsname setresuid strsignal updwtmpx])
+AC_CHECK_FUNCS([getaddrinfo posix_openpt ptsname setresuid strsignal updwtmpx])
 AC_CHECK_DECLS([CLOCK_MONOTONIC], [], [], [[#include <time.h>]])
 AC_SEARCH_LIBS([clock_gettime], [rt], [AC_DEFINE([HAVE_CLOCK_GETTIME],[],[Define if clock_gettime() is available])])
 
index 99c1221..186ff5a 100644 (file)
@@ -342,12 +342,21 @@ static void pty_open_master(Pty pty)
 #endif
         ;
 
+#ifdef HAVE_POSIX_OPENPT
+    pty->master_fd = posix_openpt(flags);
+
+    if (pty->master_fd < 0) {
+       perror("posix_openpt");
+       exit(1);
+    }
+#else
     pty->master_fd = open("/dev/ptmx", flags);
 
     if (pty->master_fd < 0) {
        perror("/dev/ptmx: open");
        exit(1);
     }
+#endif
 
     if (grantpt(pty->master_fd) < 0) {
        perror("grantpt");