<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/8f13c0065d875e6cfef530bc989a17c4ca0ae678">https://github.com/macports/macports-legacy-support/commit/8f13c0065d875e6cfef530bc989a17c4ca0ae678</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 8f13c0065d875e6cfef530bc989a17c4ca0ae678
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Fri Feb 28 19:22:48 2025 -0800
<span style='display:block; white-space:pre;color:#404040;'> endian.h: New local include for byte-swapping ops.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This provides byte swapping with the size determined automatically.
</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 with new packet.c, including temporarily patching in each of
</span><span style='display:block; white-space:pre;color:#404040;'> the two alternatives as a test.
</span>---
src/endian.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/endian.h b/src/endian.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..cf64990
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/endian.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,47 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2025 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_ENDIAN_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MACPORTS_ENDIAN_H
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <libkern/OSByteOrder.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;'>+ * Macros for byte-swapping by operand size
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Although these use switch() statements, the switch() arg is a compile-time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * constant, so the optimizer will normally reduce them to single cases.
</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;'>+/* Common internal part */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __BYTE_SWAP_INTERNAL(dst,src,sizarg) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (sizeof(sizarg)) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case 2: dst = OSSwapInt16(src); break; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case 4: dst = OSSwapInt32(src); break; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case 8: dst = OSSwapInt64(src); break; \
</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;'>+/* In-place swap */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define BYTE_SWAP_INPLACE(loc) __BYTE_SWAP_INTERNAL(loc,loc,loc)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Copy swapped by size of source */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define BYTE_SWAP_BY_SOURCE(dst,src) __BYTE_SWAP_INTERNAL(dst,src,src)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Copy swapped by size of destination (source converted before swapping) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define BYTE_SWAP_BY_DEST(dst,src) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __BYTE_SWAP_INTERNAL(dst,(__typeof__(dst))(src),dst)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MACPORTS_ENDIAN_H */
</span></pre><pre style='margin:0'>
</pre>