<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.

</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/a4103f98d1739a6d9d327cd280391f456fee5460">https://github.com/macports/macports-legacy-support/commit/a4103f98d1739a6d9d327cd280391f456fee5460</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit a4103f98d1739a6d9d327cd280391f456fee5460
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Sun Mar 17 13:39:37 2024 -0700

<span style='display:block; white-space:pre;color:#404040;'>    sys/socket.h: Fix CMSG_DATA definition in <10.6
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    The CMSG_DATA definition is broken in <10.6, applying inappropriate
</span><span style='display:block; white-space:pre;color:#404040;'>    alignment.  The 10.4 version happens to work, though the 10.5 version
</span><span style='display:block; white-space:pre;color:#404040;'>    misbehaves in 64-bit builds.  This applies an adjusted version of the
</span><span style='display:block; white-space:pre;color:#404040;'>    10.6 definition to 10.4 and 10.5.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'>    Tested on 10.4-10.5 ppc, 10.5-10.6 ppc (x86_64 Rosetta), 10.4-10.6
</span><span style='display:block; white-space:pre;color:#404040;'>    i386, 10.4-12.x x86_64, and 11.x-14.x arm64.
</span><span style='display:block; white-space:pre;color:#404040;'>    Builds on all tested platforms except 10.4 ppc +universal, and passes
</span><span style='display:block; white-space:pre;color:#404040;'>    all tests in all buildable cases, including the new test for this
</span><span style='display:block; white-space:pre;color:#404040;'>    issue added in the next commit.
</span>---
 README.md                       |  5 +++++
 include/MacportsLegacySupport.h |  3 +++
 include/sys/socket.h            | 48 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 56 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/README.md b/README.md
</span><span style='display:block; white-space:pre;color:#808080;'>index 34744fe..b24f079 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/README.md
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/README.md
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -167,6 +167,11 @@ Wrapped headers and replaced functions are:
</span>     <td>Adds <code>getentropy</code> function</td>
     <td>OSX10.11</td>
   </tr>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+  <tr>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <td><code>sys/socket.h</code></td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <td>Corrects <code>CMSG_DATA</code> definition</td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <td>OSX10.5</td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  </tr>
</span>   <tr>
     <td><code>sys/time.h</code></td>
     <td>Adds <code>lutimes</code> function</td>
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/MacportsLegacySupport.h b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;color:#808080;'>index ede0f6f..e363782 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -58,6 +58,9 @@
</span> /* <net/if.h> include <sys/socket.h> */
 #define __MP_LEGACY_SUPPORT_NETIF_SOCKET_FIX__  (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1090)
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* CMSG_DATA definition in <sys/socket.h> */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_CMSG_DATA_FIX__  (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1060)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> /* strnlen */
 #define __MP_LEGACY_SUPPORT_STRNLEN__         (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/sys/socket.h b/include/sys/socket.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..774aa0d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/sys/socket.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,48 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2024 Frederick H. G. Wright II <fw@fwright.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Permission to use, copy, modify, and distribute this software for any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * purpose with or without fee is hereby granted, provided that the above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * copyright notice and this permission notice appear in all copies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef _MACPORTS_SYS_SOCKET_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MACPORTS_SYS_SOCKET_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* MP support header */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "MacportsLegacySupport.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Include the primary system sys/socket.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include_next <sys/socket.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OSX prior to 10.6 defines CMSG_DATA without properly considering 64-bit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * builds, due to bad alignment assumptions, though it happens to work in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * the 10.4 case and only actually fails in the 10.5 64-bit case.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * In those OS versions we substitute a version of the definition from 10.6.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_CMSG_DATA_FIX__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    __DARWIN_ALIGNBYTES32 (sizeof(__uint32_t) - 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    __DARWIN_ALIGN32(p) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ((size_t)((char *)(size_t)(p) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* given pointer to struct cmsghdr, return pointer to data */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#undef CMSG_DATA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    CMSG_DATA(cmsg) ((unsigned char *)(cmsg) + \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   __DARWIN_ALIGN32(sizeof(struct cmsghdr)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MP_LEGACY_SUPPORT_CMSG_DATA_FIX__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* _MACPORTS_SYS_SOCKET_H_ */
</span></pre><pre style='margin:0'>

</pre>