diff options
author | morr <morr@pkgsrc.org> | 2012-02-29 18:49:40 +0000 |
---|---|---|
committer | morr <morr@pkgsrc.org> | 2012-02-29 18:49:40 +0000 |
commit | 06b78c872a457121c6843663ebcbbfcca1399eca (patch) | |
tree | f493b23e399cb69317da77e2d73f0594fcd4830d /x11/rxvt-unicode/patches/patch-ad | |
parent | 9c8d107dd5b04edf0b2bc7da1c8f53ab76fddba6 (diff) | |
download | pkgsrc-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-ad | 120 |
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; - } - |