aboutsummaryrefslogtreecommitdiff
path: root/x11/kdelibs4/files
diff options
context:
space:
mode:
authorWill Andrews <will@FreeBSD.org>2002-01-21 04:26:32 +0000
committerWill Andrews <will@FreeBSD.org>2002-01-21 04:26:32 +0000
commit56067c5970794bf416c04b70c1cbc3c3e8c29278 (patch)
treebbcc9982377031b332ad43fb80033dbaf869c2ac /x11/kdelibs4/files
parentd8bd7d71ea01cb5f7640ebd272351680d45253d3 (diff)
downloadports-56067c5970794bf416c04b70c1cbc3c3e8c29278.tar.gz
ports-56067c5970794bf416c04b70c1cbc3c3e8c29278.zip
Bring in a -real- fix for kdesu. Many thanks to Alan Eldridge and
Waldo Bastian for their work towards fixing this both in 2.2.2/ports and KDE3 CVS. Bump PORTREVISION to make sure people get *this* fix and not the previous broken one. PR: 32549 (for real this time) Submitted by: Alan Eldridge <alane@geeksrus.net>, Waldo Bastian <bastian@kde.org>
Notes
Notes: svn path=/head/; revision=53433
Diffstat (limited to 'x11/kdelibs4/files')
-rw-r--r--x11/kdelibs4/files/patch-kdesu::kdesu_pty.cpp18
-rw-r--r--x11/kdelibs4/files/patch-kdesu::process.cpp39
2 files changed, 57 insertions, 0 deletions
diff --git a/x11/kdelibs4/files/patch-kdesu::kdesu_pty.cpp b/x11/kdelibs4/files/patch-kdesu::kdesu_pty.cpp
new file mode 100644
index 000000000000..74be807e3786
--- /dev/null
+++ b/x11/kdelibs4/files/patch-kdesu::kdesu_pty.cpp
@@ -0,0 +1,18 @@
+--- kdesu/kdesu_pty.cpp.orig Wed Apr 11 12:48:56 2001
++++ kdesu/kdesu_pty.cpp Thu Jan 10 18:35:17 2002
+@@ -101,13 +101,13 @@
+ #elif defined(HAVE_OPENPTY)
+ // 2: BSD interface
+ // More prefered than the linux hacks
+- char name[10];
++ char name[30];
+ int master_fd, slave_fd;
+ if (openpty(&master_fd, &slave_fd, name, 0L, 0L) != -1) {
+ ttyname = name;
+ name[5]='p';
+ ptyname = name;
+- //close(slave_fd); // We don't need this yet // Yes, we do.
++ close(slave_fd); // We don't need this yet // Yes, we do.
+ ptyfd = master_fd;
+ return ptyfd;
+ }
diff --git a/x11/kdelibs4/files/patch-kdesu::process.cpp b/x11/kdelibs4/files/patch-kdesu::process.cpp
new file mode 100644
index 000000000000..610789408085
--- /dev/null
+++ b/x11/kdelibs4/files/patch-kdesu::process.cpp
@@ -0,0 +1,39 @@
+--- kdesu/process.cpp.orig Sat Feb 17 21:03:18 2001
++++ kdesu/process.cpp Fri Jan 11 21:23:41 2002
+@@ -120,13 +120,16 @@
+ kdError(900) << k_lineinfo << "fcntl(F_GETFL): " << perror << "\n";
+ return ret;
+ }
++ int oflags = flags;
+ if (block)
+ flags &= ~O_NONBLOCK;
+ else
+ flags |= O_NONBLOCK;
+- if (fcntl(m_Fd, F_SETFL, flags) < 0)
++
++ if ((flags != oflags) && (fcntl(m_Fd, F_SETFL, flags) < 0))
+ {
+- kdError(900) << k_lineinfo << "fcntl(F_SETFL): " << perror << "\n";
++ // We get an error here when the child process has closed
++ // the file descriptor already.
+ return ret;
+ }
+
+@@ -231,12 +234,12 @@
+ path = QFile::encodeName(file);
+ }
+
+- int i;
+- const char * argp[32];
+- argp[0] = path;
+- QCStringList::Iterator it;
+- for (i=1, it=args.begin(); it!=args.end() && i<31; it++)
++ const char **argp = (const char **)malloc((args.count()+2)*sizeof(char *));
++ int i = 0;
++ argp[i++] = path;
++ for (QCStringList::ConstIterator it=args.begin(); it!=args.end(); it++)
+ argp[i++] = *it;
++
+ argp[i] = 0L;
+
+ execv(path, (char * const *)argp);