[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