<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/d1c0d1247445bb5a9a61c6c0355a513d09d53bc5">https://github.com/macports/macports-legacy-support/commit/d1c0d1247445bb5a9a61c6c0355a513d09d53bc5</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit d1c0d1247445bb5a9a61c6c0355a513d09d53bc5
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Wed May 7 23:36:54 2025 -0700

<span style='display:block; white-space:pre;color:#404040;'>    Add allheaders tests.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This adds a test which includes all headers which we provide wrappers
</span><span style='display:block; white-space:pre;color:#404040;'>    for (with a few specific exceptions), as a way to test the headers for
</span><span style='display:block; white-space:pre;color:#404040;'>    compile problems.  It also includes a script to generate the "master
</span><span style='display:block; white-space:pre;color:#404040;'>    header", to be used from time to time when the list may have changed.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Identical C++ versions are also provided as manual tests, since C++ is
</span><span style='display:block; white-space:pre;color:#404040;'>    only usable in more limited circumstances.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    NOTE: At the time of this writing, the C++ build of cmath header fails
</span><span style='display:block; white-space:pre;color:#404040;'>    on 10.4 x86_64, due to an apparent issue with system headers.  10.4
</span><span style='display:block; white-space:pre;color:#404040;'>    ppc and 10.4 i386 both work.
</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;'>    Builds all headers as expected, including discovering problems before
</span><span style='display:block; white-space:pre;color:#404040;'>    they were fixed.
</span>---
 manual_tests/allheaders.cpp |  1 +
 manual_tests/allheaders.h   |  1 +
 manual_tests/revheaders.cpp |  1 +
 manual_tests/revheaders.h   |  1 +
 tools/allheaders.sh         | 58 +++++++++++++++++++++++++++++++++++++++++++++
 xtest/allheaders.h          | 41 ++++++++++++++++++++++++++++++++
 xtest/revheaders.h          | 41 ++++++++++++++++++++++++++++++++
 xtest/test_allheaders.c     | 39 ++++++++++++++++++++++++++++++
 xtest/test_revheaders.c     | 39 ++++++++++++++++++++++++++++++
 9 files changed, 222 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/manual_tests/allheaders.cpp b/manual_tests/allheaders.cpp
</span>new file mode 120000
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d7cb7b3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/manual_tests/allheaders.cpp
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+../xtest/test_allheaders.c
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/manual_tests/allheaders.h b/manual_tests/allheaders.h
</span>new file mode 120000
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..02f41c7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/manual_tests/allheaders.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+../xtest/allheaders.h
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/manual_tests/revheaders.cpp b/manual_tests/revheaders.cpp
</span>new file mode 120000
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..15272d3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/manual_tests/revheaders.cpp
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+../xtest/test_revheaders.c
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/manual_tests/revheaders.h b/manual_tests/revheaders.h
</span>new file mode 120000
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..be289b7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/manual_tests/revheaders.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+../xtest/revheaders.h
</span>\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/tools/allheaders.sh b/tools/allheaders.sh
</span>new file mode 100755
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..0739892
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/tools/allheaders.sh
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,58 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#! /bin/bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Script to generate list of #includes for all headers (with exceptions).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Requires git, and hence can't be used in a Makefile rule.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# This creates forward and reverse-ordered "kitchen sink" headers.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Because the builds of some headers may be unexpectedly influenced by the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# prior inclusion of other headers, this generates the list in both forward and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# reverse order.  By testing both, any given pair of headers is tested in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# both orders of inclusion.  More complex order sensitivities are not tested.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+DIR=$(dirname "$0")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+INCDIR="$DIR/../include"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TSTDIR="../xtest"  # Relative to INCDIR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FWDFILE="$TSTDIR/allheaders.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+REVFILE="$TSTDIR/revheaders.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Headers not included:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Everything under _macports_extras, which are legacy-support private
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FILTERS='^_macports_extras'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# AvailabilityInternal.h (the name says it)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FILTERS+='|AvailabilityInternal.h'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Headers with a leading underscore, which are private to specific uses
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FILTERS+='|/_'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# MacportsLegacySupport.h, which is our "configuration" header
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FILTERS+='|MacportsLegacySupport.h'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Framework headers under CoreFoundation, IOKit, and OpenGL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FILTERS+='|CoreFoundation/|IOKit/|OpenGL/'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Headers without .h are C++-only, and not legal in basic-C builds.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+CPPFILTER='[.]h$'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FWDLIST=""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+REVLIST=""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cd "$INCDIR"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+for f in $(git ls-files | egrep -v "$FILTERS" ); do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  FWDLIST="$FWDLIST $f"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  REVLIST="$f $REVLIST"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+done
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+makelist () {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  for f in $1; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if echo $f | grep -v "$CPPFILTER" >/dev/null; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      echo "#ifdef __cplusplus"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      echo "  #include <$f>"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      echo "#endif"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      echo "#include <$f>"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  done
</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;'>+makelist "$FWDLIST" >"$FWDFILE"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+makelist "$REVLIST" >"$REVFILE"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/xtest/allheaders.h b/xtest/allheaders.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..5df2ffb
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/xtest/allheaders.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,41 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <Availability.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <MacTypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <TargetConditionals.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <assert.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  #include <cmath>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <copyfile.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <dirent.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <mach/mach_time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <mach/machine.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <math.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <net/if.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <net/if_utun.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <netdb.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <os/lock.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <pthread.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <pthread_impl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <strings.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/aio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/cdefs.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/fcntl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/fsgetpath.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/mman.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/queue.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/random.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/socket.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/spawn.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <uuid/uuid.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <wchar.h>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/xtest/revheaders.h b/xtest/revheaders.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..882ebc1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/xtest/revheaders.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,41 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <wchar.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <uuid/uuid.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/unistd.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/spawn.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/socket.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/random.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/queue.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/mman.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/fsgetpath.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/fcntl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/cdefs.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/aio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <strings.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <pthread_impl.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <pthread.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <os/lock.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <netdb.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <net/if_utun.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <net/if.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <math.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <mach/machine.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <mach/mach_time.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <dirent.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <copyfile.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  #include <cmath>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <assert.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <TargetConditionals.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <MacTypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <Availability.h>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/xtest/test_allheaders.c b/xtest/test_allheaders.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..e1a4e7a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/xtest/test_allheaders.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,39 @@
</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;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This is a test which includes all wrapper headers that we provide, in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * order to verify that they can be compiled with a variety of compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * versions, compiler options, and feature flags.  The runtime "test"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * is just a dummy.
</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;'>+#define __MPLS_HEADER_TEST__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "allheaders.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Explicitly include the headers we actually use here */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <libgen.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (void) argc; (void) argv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  printf("%s succeeded.\n", basename(argv[0]));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/xtest/test_revheaders.c b/xtest/test_revheaders.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..485abec
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/xtest/test_revheaders.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,39 @@
</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;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This is a test which includes all wrapper headers that we provide, in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * order to verify that they can be compiled with a variety of compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * versions, compiler options, and feature flags.  The runtime "test"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * is just a dummy.
</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;'>+#define __MPLS_HEADER_TEST__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "revheaders.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Explicitly include the headers we actually use here */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <libgen.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (void) argc; (void) argv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  printf("%s succeeded.\n", basename(argv[0]));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>

</pre>