Hi, appended is a patch to kdesu_pty.cpp. It moves the openpty() code down a bit and fixes it. Does this work for people who have HAVE_OPENPTY but no HAVE_GETPT (*BSD??) ? Greetings, Geert Index: kdesu_pty.cpp =================================================================== RCS file: /home/kde/kdelibs/kdesu/kdesu_pty.cpp,v retrieving revision 2.0 diff -u -r2.0 kdesu_pty.cpp --- kdesu_pty.cpp 2000/07/30 20:18:26 2.0 +++ kdesu_pty.cpp 2000/08/20 21:09:38 @@ -87,26 +87,30 @@ int PTY::getpt() { -#ifdef HAVE_OPENPTY - char name[10]; - int master_fd, slave_fd; - if (openpty(&master_fd, &slave_fd, name, 0, 0) != -1) { - ttyname=name; - name[5]='p'; - ptyname=name; - ptyfd=master_fd; - return master_fd; - } -#endif #if defined(HAVE_GETPT) && defined(HAVE_PTSNAME) + // UNIX98: preferred way ptyfd = ::getpt(); ttyname = ::ptsname(ptyfd); return ptyfd; +#elif defined(HAVE_OPENPTY) + + // Calls for *BSD + int master_fd, slave_fd; + if (openpty(&master_fd, &slave_fd, 0L, 0L, 0L) != -1) + { + ptyname = ::ttyname(master_fd); + ttyname = ::ttyname(slave_fd); + close(slave_fd); // We don't need this yet + ptyfd = master_fd; + return ptyfd; + } + #else + // Open terminal device directly // Try /dev/ptmx first. (Linux w/ Unix98 PTYs, Solaris) ptyfd = open("/dev/ptmx", O_RDWR); @@ -179,8 +183,8 @@ #else - // konsole_grantpty doesn't do this - if (ptyname == "/dev/ptmx") + // konsole_grantpty only does /dev/pty?? + if (ptyname.left(8) != "/dev/pty") return 0; // Use konsole_grantpty: