diff options
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | config.h.cmake | 3 | ||||
-rw-r--r-- | tdecore/kpty.cpp | 6 | ||||
-rw-r--r-- | tdersync/tdersync.cpp | 2 | ||||
-rw-r--r-- | tdesu/tdesu_pty.cpp | 6 |
5 files changed, 16 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index a0d9a02f0..04754eb00 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -418,6 +418,7 @@ check_function_exists( strcasecmp HAVE_STRCASECMP ) check_function_exists( strchr HAVE_STRCHR ) check_function_exists( strcmp HAVE_STRCMP ) check_function_exists( strrchr HAVE_STRRCHR ) +check_function_exists( posix_openpt HAVE_POSIX_OPENPT ) check_function_exists( ptsname HAVE_PTSNAME ) check_function_exists( unlockpt HAVE_UNLOCKPT ) check_function_exists( _getpty HAVE__GETPTY ) diff --git a/config.h.cmake b/config.h.cmake index 56a0c11c7..5916a07e0 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -437,6 +437,9 @@ /* Define to 1 if you have the `poll' function. */ #cmakedefine HAVE_POLL 1 +/* Define to 1 if you have the `posix_openpt' function. */ +#cmakedefine HAVE_POSIX_OPENPT 1 + /* Define to 1 if the assembler supports AltiVec instructions. */ #undef HAVE_PPC_ALTIVEC diff --git a/tdecore/kpty.cpp b/tdecore/kpty.cpp index 6e279748b..f832cd97e 100644 --- a/tdecore/kpty.cpp +++ b/tdecore/kpty.cpp @@ -329,7 +329,11 @@ bool KPty::open() // We try, as we know them, one by one. #if defined(HAVE_PTSNAME) && defined(HAVE_GRANTPT) -#ifdef _AIX +#if defined(HAVE_GETPT) + d->masterFd = ::getpt(); +#elif defined(HAVE_POSIX_OPENPT) + d->masterFd = ::posix_openpt(O_RDWR); +#elif defined(_AIX) d->masterFd = ::open("/dev/ptc",O_RDWR); #else d->masterFd = ::open("/dev/ptmx",O_RDWR); diff --git a/tdersync/tdersync.cpp b/tdersync/tdersync.cpp index df4fe3250..1b882b7be 100644 --- a/tdersync/tdersync.cpp +++ b/tdersync/tdersync.cpp @@ -97,6 +97,8 @@ Reference Manual for Version 2.2.x of the GNU C Library */ #ifdef HAVE_GETPT master = getpt(); +#elif defined(HAVE_POSIX_OPENTPT) + master = posix_openpt(O_RDWR); #else master = open("/dev/ptmx", O_RDWR); #endif diff --git a/tdesu/tdesu_pty.cpp b/tdesu/tdesu_pty.cpp index 207c0a3e2..4b01dde86 100644 --- a/tdesu/tdesu_pty.cpp +++ b/tdesu/tdesu_pty.cpp @@ -94,10 +94,14 @@ PTY::~PTY() int PTY::getpt() { -#if defined(HAVE_GETPT) && defined(HAVE_PTSNAME) +#if (defined(HAVE_GETPT) || defined(HAVE_POSIX_OPENPT)) && defined(HAVE_PTSNAME) // 1: UNIX98: preferred way +#ifdef HAVE_GETPT ptyfd = ::getpt(); +#elif defined(HAVE_POSIX_OPENPT) + ptyfd = ::posix_openpt(O_RDWR); +#endif ttyname = ::ptsname(ptyfd); return ptyfd; |