<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>