- {
-#ifdef HAVE_UNIXSOCKET_SCM_RIGHTS_BSD44_WAY
- struct cmsghdr *cmsg;
- char buf[CMSG_SPACE (sizeof (fd))];
-
- msg.msg_control = buf;
- msg.msg_controllen = sizeof (buf);
- cmsg = CMSG_FIRSTHDR (&msg);
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_RIGHTS;
- cmsg->cmsg_len = CMSG_LEN (sizeof (int));
- /* Initialize the payload: */
- memcpy (CMSG_DATA (cmsg), &fd, sizeof (fd));
- msg.msg_controllen = cmsg->cmsg_len;
-#elif HAVE_UNIXSOCKET_SCM_RIGHTS_BSD43_WAY
- msg.msg_accrights = &fd;
- msg.msg_accrightslen = sizeof (fd);
-#else
- errno = ENOSYS;
- return -1;
-#endif
- }
-
- if (sendmsg (sock, &msg, 0) != iov[0].iov_len)
+# ifdef CMSG_FIRSTHDR
+ msg.msg_control = buf;
+ msg.msg_controllen = sizeof buf;
+ cmsg = CMSG_FIRSTHDR (&msg);
+ cmsg->cmsg_level = SOL_SOCKET;
+ cmsg->cmsg_type = SCM_RIGHTS;
+ cmsg->cmsg_len = CMSG_LEN (sizeof fd);
+ /* Initialize the payload: */
+ memcpy (CMSG_DATA (cmsg), &fd, sizeof fd);
+# elif HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS
+ msg.msg_accrights = &fd;
+ msg.msg_accrightslen = sizeof fd;
+# else
+ errno = ENOSYS;
+ return -1;
+# endif
+
+ if (sendmsg (sock, &msg, 0) != iov.iov_len)