[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    patch: kdesu_pty.cpp
From:       Geert Jansen <g.t.jansen () stud ! tue ! nl>
Date:       2000-08-20 21:14:35
[Download RAW message or body]

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: 

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic