<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/7a4a117ee948021334981b05abee66313ff26abb">https://github.com/macports/macports-legacy-support/commit/7a4a117ee948021334981b05abee66313ff26abb</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 7a4a117ee948021334981b05abee66313ff26abb
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Tue Jan 14 14:28:04 2025 -0800

<span style='display:block; white-space:pre;color:#404040;'>    test_stat: Remove 10.4 Rosetta exception.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Almost a revert of commit ba45d6c, but with conflicts fixed.
</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;'>    Without fix, fails on 10.4 Rosetta and passes on all others.
</span><span style='display:block; white-space:pre;color:#404040;'>    With fix, passes on all platforms, including 10.4 Rosetta.
</span>---
 test/test_stat.c | 68 +++++++++++++++-----------------------------------------
 1 file changed, 18 insertions(+), 50 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_stat.c b/test/test_stat.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 68242d3..8f1bafa 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/test/test_stat.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_stat.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -26,17 +26,12 @@
</span> #include <sys/fcntl.h>
 #include <sys/param.h>
 #include <sys/stat.h>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <sys/sysctl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <sys/types.h>
</span> 
 /* Make sure we always have a "struct stat64" */
 #if !__MPLS_HAVE_STAT64
 struct stat64 __DARWIN_STRUCT_STAT64;
 #endif
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* sysctl to check whether we're running natively (not Rosetta) */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define SYSCTL_NATIVE "sysctl.proc_native"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> /* Structure accommodating both struct stat sizes, with padding for check */
 typedef struct safe_stat_s  {
   struct stat_s {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -59,25 +54,6 @@ static const char *source = __FILE__;
</span> static const char *source_link = __FILE__ "_link";
 static char dir[MAXPATHLEN], rel_base[MAXPATHLEN], rel_link[MAXPATHLEN];
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * 10.4 Rosetta is unable to handle fstatx_np(), so we need to check.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if (!defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     || __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    && defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-arch_ok(void)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  int val = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  size_t vsiz = sizeof(val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (sysctlbyname(SYSCTL_NATIVE, &val, &vsiz, NULL, 0) < 0) return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#else /* not possibly 10.4 Rosetta */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int arch_ok(void) { return 1;}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> static void
 stat_init(int ino64)
 {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -480,19 +456,15 @@ main(int argc, char *argv[])
</span>   check_copy(0, 0);
   (void) fclose(fp);
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (arch_ok()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (verbose) printf("  testing 'fstatx_np'\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* Use fopen() to steer clear of open()/close() variant issues. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    assert((fp = fopen(source_link, "r")) != NULL && "open of source failed");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    stat_init(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    stat_err = fstatx_np(fileno(fp), &stat_buf.s.s, fsec);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (check_err("fstatx_np")) return 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    assert(S_ISREG(get_mode(0)) && "fstat expected regular file");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    check_copy(0, 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    (void) fclose(fp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (verbose) printf("  avoiding 'fstatx_np' due to Rosetta bug\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (verbose) printf("  testing 'fstatx_np'\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /* Use fopen() to steer clear of open()/close() variant issues. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  assert((fp = fopen(source_link, "r")) != NULL && "open of source failed");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  stat_init(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  stat_err = fstatx_np(fileno(fp), &stat_buf.s.s, fsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (check_err("fstatx_np")) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  assert(S_ISREG(get_mode(0)) && "fstat expected regular file");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  check_copy(0, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (void) fclose(fp);
</span> 
 #if __MPLS_HAVE_STAT64
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -527,19 +499,15 @@ main(int argc, char *argv[])
</span>   check_copy(1, 0);
   (void) fclose(fp);
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (arch_ok()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (verbose) printf("  testing 'fstatx64_np'\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* Use fopen() to steer clear of open()/close() variant issues. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    assert((fp = fopen(source_link, "r")) != NULL && "open of source failed");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    stat_init(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    stat_err = fstatx64_np(fileno(fp), &stat_buf.s64.s, fsec);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (check_err("fstatx64_np")) return 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    assert(S_ISREG(get_mode(1)) && "fstatx64_np expected regular file");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    check_copy(1, 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    (void) fclose(fp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if (verbose) printf("  avoiding 'fstatx64_np' due to Rosetta bug\n");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (verbose) printf("  testing 'fstatx64_np'\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  /* Use fopen() to steer clear of open()/close() variant issues. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  assert((fp = fopen(source_link, "r")) != NULL && "open of source failed");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  stat_init(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  stat_err = fstatx64_np(fileno(fp), &stat_buf.s64.s, fsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (check_err("fstatx64_np")) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  assert(S_ISREG(get_mode(1)) && "fstatx64_np expected regular file");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  check_copy(1, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (void) fclose(fp);
</span> 
 #endif /* __MPLS_HAVE_STAT64 */
 
</pre><pre style='margin:0'>

</pre>