<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/bd60ccf6fe587205a2447920f5b3acb1c289000e">https://github.com/macports/macports-legacy-support/commit/bd60ccf6fe587205a2447920f5b3acb1c289000e</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit bd60ccf6fe587205a2447920f5b3acb1c289000e
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Fri Dec 27 16:51:28 2024 -0800

<span style='display:block; white-space:pre;color:#404040;'>    Rework 10.4 copyfile headers.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This reworks the arrangement of the copyfile-related headers for 10.4,
</span><span style='display:block; white-space:pre;color:#404040;'>    where the SDK provided none.  In the new arrangement:
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    1) The added header now represents what a 10.4 copyfile.h would have
</span><span style='display:block; white-space:pre;color:#404040;'>    looked like if it existed.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    2) The additions for 10.4->10.5 copyfile are now in the wrapper
</span><span style='display:block; white-space:pre;color:#404040;'>    header.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    3) A new pair of feature flags is added for the 10.4 case.
</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;'>    Library still builds.
</span><span style='display:block; white-space:pre;color:#404040;'>    Test builds, and passes or fails as before.
</span>---
 include/MacportsLegacySupport.h                |  2 +
 include/_macports_extras/tiger_only/copyfile.h | 51 +++++++++++-------------
 include/copyfile.h                             | 55 +++++++++++++++++++++++---
 3 files changed, 75 insertions(+), 33 deletions(-)

<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 5aa95c8..89b85fc 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;'>@@ -335,6 +335,8 @@
</span> #define __MPLS_SDK_SUPPORT_CoreFoundation__  (__MPLS_SDK_MAJOR < 1060)
 
 /* copyfile and its associated functions have gained functionality over the years */
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MPLS_SDK_SUPPORT_COPYFILE_TIGER__ (__MPLS_SDK_MAJOR < 1050)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MPLS_LIB_SUPPORT_COPYFILE_TIGER__ (__MPLS_TARGET_OSVER < 1050)
</span> #define __MPLS_SDK_SUPPORT_COPYFILE_WRAP__  (__MPLS_SDK_MAJOR < 1060)
 #define __MPLS_LIB_SUPPORT_COPYFILE_WRAP__  (__MPLS_TARGET_OSVER < 1060)
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/_macports_extras/tiger_only/copyfile.h b/include/_macports_extras/tiger_only/copyfile.h
</span><span style='display:block; white-space:pre;color:#808080;'>index e322ca6..7c6958f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/_macports_extras/tiger_only/copyfile.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/_macports_extras/tiger_only/copyfile.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2,14 +2,14 @@
</span>  * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
<span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * 
</span>  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
  * compliance with the License. Please obtain a copy of the License at
  * http://www.opensource.apple.com/apsl/ and read it before using this
  * file.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * 
</span>  * The Original Code and all software distributed under the License are
  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -17,20 +17,31 @@
</span>  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  * Please see the License for the specific language governing rights and
  * limitations under the License.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * 
</span>  * @APPLE_LICENSE_HEADER_END@
  */
 #ifndef _COPYFILE_H_ /* version 0.1 */
 #define _COPYFILE_H_
 
 /*
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * this is an API to faciliatate copying of files and their
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * associated metadata.  There are several open source projects that
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * need modifications to support preserving extended attributes and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * acls and this API collapses several hundred lines of modifications
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * into one or two calls.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This is a slightly modified copy of the internal 10.4 copyfile.h,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * from the public sources.  Except for this comment block, it is intended
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * to approximate what a copyfile.h would have looked like in a 10.4 SDK,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * if Apple hadn't neglected to publish it.  It does not reflect updates
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * for newer OS versions.
</span>  *
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * This implementation is incomplete and the interface may change in a
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * The original file is taken from the Apple public sources at:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * https://github.com/apple-oss-distributions/Libc/blob/Libc-391/darwin/copyfile.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;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * this is a proposed API to add to libSystem to faciliatate copying
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * of files and their associated metadata.  There are several open
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * source projects that need modifications to support preserving
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * extended attributes and acls and this API collapses several hundred
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * lines of modifications into one or two calls.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This implementation is incomplete and the interface may change in a 
</span>  * future release.
  */
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -56,25 +67,11 @@ typedef uint32_t copyfile_flags_t;
</span>  */
 
 int copyfile(const char *from, const char *to, copyfile_state_t state, copyfile_flags_t flags);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-int fcopyfile(int from_fd, int to_fd, copyfile_state_t, copyfile_flags_t flags);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int copyfile_state_free(copyfile_state_t);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-copyfile_state_t copyfile_state_alloc(void);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int copyfile_state_get(copyfile_state_t s, uint32_t flag, void * dst);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int copyfile_state_set(copyfile_state_t s, uint32_t flag, const void * src);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COPYFILE_STATE_SRC_FD              1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COPYFILE_STATE_SRC_FILENAME        2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COPYFILE_STATE_DST_FD              3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COPYFILE_STATE_DST_FILENAME        4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COPYFILE_STATE_QUARANTINE  5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COPYFILE_STATE_STATUS_CB   6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COPYFILE_STATE_STATUS_CTX  7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COPYFILE_STATE_COPIED              8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int copyfile_free(copyfile_state_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+copyfile_state_t copyfile_init(void);
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define COPYFILE_DISABLE_VAR    "COPYFILE_DISABLE"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Flag for clients to disable their use of copyfile() */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define COPYFILE_DISABLE_VAR       "COPY_EXTENDED_ATTRIBUTES_DISABLE"
</span> 
 /* flags for copyfile */
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/copyfile.h b/include/copyfile.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 5c71e65..ece1126 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/copyfile.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/copyfile.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,5 +1,5 @@
</span> /*
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2022
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2024
</span>  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -23,25 +23,68 @@
</span> /* Do our SDK-related setup */
 #include <_macports_extras/sdkversion.h>
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __MPLS_SDK_MAJOR < 1050
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MPLS_SDK_SUPPORT_COPYFILE_TIGER__
</span> 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* The 10.4 SDK lacks copyfile.h, so we provide a substitute. */
</span> #include <_macports_extras/tiger_only/copyfile.h>
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* The replacement copyfile.h doesn't need the wrapper */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Additional defs from the 10.5 copyfile.h */
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#else /* __MPLS_SDK_MAJOR >= 1050 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+__MP__BEGIN_DECLS
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* Include the primary system copyfile.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int fcopyfile(int from_fd, int to_fd, copyfile_state_t, copyfile_flags_t flags);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int copyfile_state_free(copyfile_state_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+copyfile_state_t copyfile_state_alloc(void);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int copyfile_state_get(copyfile_state_t s, uint32_t flag, void * dst);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int copyfile_state_set(copyfile_state_t s, uint32_t flag, const void * src);
</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;'>+#define COPYFILE_STATE_SRC_FD              1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define COPYFILE_STATE_SRC_FILENAME        2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define COPYFILE_STATE_DST_FD              3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define COPYFILE_STATE_DST_FILENAME        4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define COPYFILE_STATE_QUARANTINE  5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#undef COPYFILE_DISABLE_VAR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_DISABLE_VAR    "COPYFILE_DISABLE"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else /* !__MPLS_SDK_SUPPORT_COPYFILE_TIGER__ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Otherwise include the primary system copyfile.h */
</span> #include_next <copyfile.h>
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif /* __MPLS_SDK_MAJOR >= 1050 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* !__MPLS_SDK_SUPPORT_COPYFILE_TIGER__ */
</span> 
 #if __MPLS_SDK_SUPPORT_COPYFILE_WRAP__
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Additional defs from the 10.6 copyfile.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+typedef int (*copyfile_callback_t)(int, int, copyfile_state_t, const char *, const char *, void *);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #define COPYFILE_STATE_STATUS_CB        6
 #define COPYFILE_STATE_STATUS_CTX       7
 #define COPYFILE_STATE_COPIED           8
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#define COPYFILE_RECURSIVE      (1<<15)   /* Descend into hierarchies */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_RECURSE_ERROR  0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_RECURSE_FILE   1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_RECURSE_DIR    2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_RECURSE_DIR_CLEANUP    3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_COPY_DATA      4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_START          1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_FINISH         2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_ERR            3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_PROGRESS       4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_CONTINUE       0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_SKIP   1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define    COPYFILE_QUIT   2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #endif /* __MPLS_SDK_SUPPORT_COPYFILE_WRAP__ */
 
 #endif /* _MACPORTS_COPYFILE_H_ */
</pre><pre style='margin:0'>

</pre>