summaryrefslogtreecommitdiff
path: root/x11/rxvt-unicode/patches/patch-ad
diff options
context:
space:
mode:
authormorr <morr@pkgsrc.org>2012-02-29 18:49:40 +0000
committermorr <morr@pkgsrc.org>2012-02-29 18:49:40 +0000
commit06b78c872a457121c6843663ebcbbfcca1399eca (patch)
treef493b23e399cb69317da77e2d73f0594fcd4830d /x11/rxvt-unicode/patches/patch-ad
parent9c8d107dd5b04edf0b2bc7da1c8f53ab76fddba6 (diff)
downloadpkgsrc-06b78c872a457121c6843663ebcbbfcca1399eca.tar.gz
Update to version 9.15.
List of changes is too big to be included here. You can look at http://dist.schmorp.de/rxvt-unicode/Changes to see changelog.
Diffstat (limited to 'x11/rxvt-unicode/patches/patch-ad')
-rw-r--r--x11/rxvt-unicode/patches/patch-ad120
1 files changed, 0 insertions, 120 deletions
diff --git a/x11/rxvt-unicode/patches/patch-ad b/x11/rxvt-unicode/patches/patch-ad
deleted file mode 100644
index 8fb20b65da9..00000000000
--- a/x11/rxvt-unicode/patches/patch-ad
+++ /dev/null
@@ -1,120 +0,0 @@
-$NetBSD: patch-ad,v 1.1 2009/05/19 19:41:19 snj Exp $
-
---- src/fdpass.C.orig 2008-05-05 09:51:47.000000000 -0700
-+++ src/fdpass.C 2009-05-19 12:28:03.000000000 -0700
-@@ -26,6 +26,7 @@
- #include "../config.h"
-
- #include <cstddef> // needed by broken bsds for NULL used in sys/uio.h
-+#include <cstdlib>
-
- #include <sys/types.h>
- #include <sys/uio.h>
-@@ -33,16 +34,26 @@
-
- #include "libptytty.h"
-
--#ifndef CMSG_LEN // CMSG_SPACE && CMSG_LEN are rfc2292 extensions to unix
-+// CMSG_SPACE & CMSG_LEN are rfc2292 extensions to unix
-+#ifndef CMSG_SPACE
-+# define CMSG_SPACE(len) (sizeof (cmsghdr) + len)
-+#endif
-+
-+#ifndef CMSG_LEN
- # define CMSG_LEN(len) (sizeof (cmsghdr) + len)
- #endif
-
- bool
- ptytty::send_fd (int socket, int fd)
- {
-+ void *buf = malloc (CMSG_SPACE (sizeof (int)));
-+
-+ if (!buf)
-+ return 0;
-+
- msghdr msg;
- iovec iov;
-- char buf [CMSG_LEN (sizeof (int))];
-+ cmsghdr *cmsg;
- char data = 0;
-
- iov.iov_base = &data;
-@@ -52,27 +63,33 @@ ptytty::send_fd (int socket, int fd)
- msg.msg_namelen = 0;
- msg.msg_iov = &iov;
- msg.msg_iovlen = 1;
-- msg.msg_control = (void *)buf;
-- msg.msg_controllen = sizeof buf;
-+ msg.msg_control = buf;
-+ msg.msg_controllen = CMSG_SPACE (sizeof (int));
-
-- cmsghdr *cmsg = CMSG_FIRSTHDR (&msg);
-+ cmsg = CMSG_FIRSTHDR (&msg);
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_RIGHTS;
- cmsg->cmsg_len = CMSG_LEN (sizeof (int));
-
- *(int *)CMSG_DATA (cmsg) = fd;
-
-- msg.msg_controllen = cmsg->cmsg_len;
-+ ssize_t result = sendmsg (socket, &msg, 0);
-+
-+ free (buf);
-
-- return sendmsg (socket, &msg, 0) >= 0;
-+ return result >= 0;
- }
-
- int
- ptytty::recv_fd (int socket)
- {
-+ void *buf = malloc (CMSG_SPACE (sizeof (int)));
-+
-+ if (!buf)
-+ return -1;
-+
- msghdr msg;
- iovec iov;
-- char buf [CMSG_LEN (sizeof (int))]; /* ancillary data buffer */
- char data = 1;
-
- iov.iov_base = &data;
-@@ -83,23 +100,24 @@ ptytty::recv_fd (int socket)
- msg.msg_iov = &iov;
- msg.msg_iovlen = 1;
- msg.msg_control = buf;
-- msg.msg_controllen = sizeof buf;
-+ msg.msg_controllen = CMSG_SPACE (sizeof (int));
-
-- cmsghdr *cmsg = CMSG_FIRSTHDR (&msg);
-- cmsg->cmsg_level = SOL_SOCKET;
-- cmsg->cmsg_type = SCM_RIGHTS;
-- cmsg->cmsg_len = CMSG_LEN (sizeof (int));
-+ int fd = -1;
-
-- msg.msg_controllen = cmsg->cmsg_len;
-+ if (recvmsg (socket, &msg, 0) > 0
-+ && data == 0
-+ && msg.msg_controllen >= CMSG_SPACE (sizeof (int)))
-+ {
-+ cmsghdr *cmsg = CMSG_FIRSTHDR (&msg);
-
-- if (recvmsg (socket, &msg, 0) <= 0
-- || data != 0
-- || msg.msg_controllen < CMSG_LEN (sizeof (int))
-- || cmsg->cmsg_level != SOL_SOCKET
-- || cmsg->cmsg_type != SCM_RIGHTS
-- || cmsg->cmsg_len < CMSG_LEN (sizeof (int)))
-- return -1;
-+ if (cmsg->cmsg_level == SOL_SOCKET
-+ && cmsg->cmsg_type == SCM_RIGHTS
-+ && cmsg->cmsg_len >= CMSG_LEN (sizeof (int)))
-+ fd = *(int *)CMSG_DATA (cmsg);
-+ }
-+
-+ free (buf);
-
-- return *(int *)CMSG_DATA (cmsg);
-+ return fd;
- }
-