<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/8299e52c0ce8285d43011a67be8c5bf3ca817c6a">https://github.com/macports/macports-legacy-support/commit/8299e52c0ce8285d43011a67be8c5bf3ca817c6a</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 8299e52c0ce8285d43011a67be8c5bf3ca817c6a
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Tue May 27 22:31:14 2025 -0700

<span style='display:block; white-space:pre;color:#404040;'>    Add degenerate *clonefile*() support.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This is a degenerate implementation which only returns errors, since
</span><span style='display:block; white-space:pre;color:#404040;'>    the real clonefile functions are only valid on APFS, which isn't
</span><span style='display:block; white-space:pre;color:#404040;'>    supported by any OS that needs this.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    It also adds the definition for VOL_CAP_INT_CLONE to sys/attr.h, since
</span><span style='display:block; white-space:pre;color:#404040;'>    relevant code might be checking that attribute.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/72272
</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;'>    Passes tests on all platforms.
</span>---
 README.md                       | 10 +++++++
 include/MacportsLegacySupport.h |  4 +++
 include/sys/attr.h              | 29 ++++++++++++++++++++
 include/sys/clonefile.h         | 50 +++++++++++++++++++++++++++++++++
 src/clonefile.c                 | 61 +++++++++++++++++++++++++++++++++++++++++
 tools/allheaders.sh             |  2 ++
 xtest/allheaders.h              |  1 +
 xtest/revheaders.h              |  1 +
 8 files changed, 158 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 54eb0c6..f19f51d 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;'>@@ -170,6 +170,16 @@ Wrapped headers and replaced functions are:
</span>     <td>Adjusts includes and defines to match SDK 10.5+</td>
     <td>OSX10.4</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/attr.h</code></td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <td>Adds missing <code>VOL_CAP_INT_CLONE</code> definition</td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <td>OSX10.11</td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  </tr>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  <tr>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <td><code>sys/clonefile.h</code></td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <td>Adds <code>clonefile</code>, <code>clonefileat</code>, and <code>fclonefileat</code> functions</td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    <td>OSX10.11</td>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  </tr>
</span>   <tr>
     <td rowspan="2"><code>sys/fcntl.h</code></td>
     <td>Adds missing <code>O_CLOEXEC</code>, <code>AT_FDCWD</code>, <code>AT_EACCESS</code>,
<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 a78633b..763db12 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;'>@@ -397,4 +397,8 @@
</span>                                                             || __MPLS_TARGET_OSVER == 1090 \
                                                             || __MPLS_TARGET_OSVER <  1060)
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* clonefile, clonefileat, fclonefileat */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MPLS_SDK_SUPPORT_CLONEFILE__       (__MPLS_SDK_MAJOR < 101200)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MPLS_LIB_SUPPORT_CLONEFILE__       (__MPLS_TARGET_OSVER < 101200)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #endif /* _MACPORTS_LEGACYSUPPORTDEFS_H_ */
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/sys/attr.h b/include/sys/attr.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..6a0c979
</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/attr.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,29 @@
</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_SYS_ATTR_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MACPORTS_SYS_ATTR_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Simple wrapper to add VOL_CAP_INT_CLONE (from 10.12+) */
</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/attr.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include_next <sys/attr.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef VOL_CAP_INT_CLONE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define VOL_CAP_INT_CLONE 0x00010000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* _MACPORTS_SYS_ATTR_H_ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/sys/clonefile.h b/include/sys/clonefile.h
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..3b330e2
</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/clonefile.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,50 @@
</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_SYS_CLONEFILE_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MACPORTS_SYS_CLONEFILE_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;'>+ * This is a wrapper/replacement header for sys/clonefile.h, handling its
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * absence in the <10.12 SDKs.  In those cases, we provide substitute
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * definitions; otherwise we just pass through the SDK header as is.
</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;'>+/* Do our SDK-related setup */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <_macports_extras/sdkversion.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MPLS_SDK_SUPPORT_CLONEFILE__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Options for clonefile calls */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define CLONE_NOFOLLOW   0x0001     /* Don't follow symbolic links */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdint.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+__MP__BEGIN_DECLS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int clonefileat(int, const char *, int, const char *, uint32_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int fclonefileat(int, int, const char *, uint32_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int clonefile(const char *, const char *, uint32_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+__MP__END_DECLS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else  /* !__MPLS_SDK_SUPPORT_CLONEFILE__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include_next <sys/clonefile.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif  /* !__MPLS_SDK_SUPPORT_CLONEFILE__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* _MACPORTS_SYS_CLONEFILE_H_ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/clonefile.c b/src/clonefile.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..ef03f02
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/clonefile.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,61 @@
</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;'>+/* 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;'>+#if __MPLS_LIB_SUPPORT_CLONEFILE__
</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 provides degenerate implementations of *clonefile*() which always
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * fail, since the real versions only work on APFS, and no OS version that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * uses this code supports APFS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * At present, these functions always fail immediately with ENOTSUP, though
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * real implementations might fail in other ways when given bad arguments.
</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;'>+#include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/clonefile.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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+clonefile(const char *src, const char *dst, uint32_t flags)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return clonefileat(AT_FDCWD, src, AT_FDCWD, dst, flags);
</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;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+clonefileat(int src_dirfd, const char *src,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            int dst_dirfd, const char *dst, uint32_t flags)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (void) src_dirfd; (void) src; (void) dst_dirfd; (void) dst; (void) flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  errno = ENOTSUP;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return -1;
</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;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fclonefileat(int srcfd, int dst_dirfd, const char *dst, uint32_t flags)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (void) srcfd; (void) dst_dirfd; (void) dst; (void) flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  errno = ENOTSUP;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return -1;
</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;'>+#endif /* __MPLS_LIB_SUPPORT_CLONEFILE__ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/tools/allheaders.sh b/tools/allheaders.sh
</span><span style='display:block; white-space:pre;color:#808080;'>index 0dca093..eb0e853 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/tools/allheaders.sh
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/tools/allheaders.sh
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -31,6 +31,8 @@ FILTERS+='|MacportsLegacySupport.h'
</span> FILTERS+='|CoreFoundation/|IOKit/|OpenGL/'
 # The 10.5-internal-only available.h
 FILTERS+='|available.h'
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# sys/attr.h requires other headers that it doesn't include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FILTERS+='|sys/attr.h'
</span> 
 # Headers without .h are C++-only, and not legal in basic-C builds.
 CPPFILTER='[.]h$'
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/xtest/allheaders.h b/xtest/allheaders.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 4d3d4fd..e8861ef 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/xtest/allheaders.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/xtest/allheaders.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -24,6 +24,7 @@
</span> #include <strings.h>
 #include <sys/aio.h>
 #include <sys/cdefs.h>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/clonefile.h>
</span> #include <sys/fcntl.h>
 #include <sys/fsgetpath.h>
 #include <sys/mman.h>
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/xtest/revheaders.h b/xtest/revheaders.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 3c79d94..78a0064 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/xtest/revheaders.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/xtest/revheaders.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,6 +14,7 @@
</span> #include <sys/mman.h>
 #include <sys/fsgetpath.h>
 #include <sys/fcntl.h>
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <sys/clonefile.h>
</span> #include <sys/cdefs.h>
 #include <sys/aio.h>
 #include <strings.h>
</pre><pre style='margin:0'>

</pre>