<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/49f7a3ac6b3085c642e428e23815060f6785eb35">https://github.com/macports/macports-legacy-support/commit/49f7a3ac6b3085c642e428e23815060f6785eb35</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 49f7a3ac6b3085c642e428e23815060f6785eb35
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Mon Jun 30 21:46:43 2025 -0700

<span style='display:block; white-space:pre;color:#404040;'>    statxx: Streamline 10.4 ppc64 fix.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This makes the fix_stat() function able to be directly inserted in the
</span><span style='display:block; white-space:pre;color:#404040;'>    return path from the underlying OS function, and does so.
</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;'>    Tests pass on all platforms.
</span>---
 src/statxx.c | 47 +++++++++++++++--------------------------------
 1 file changed, 15 insertions(+), 32 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/statxx.c b/src/statxx.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 5af1397..7077afb 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/statxx.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/statxx.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -63,16 +63,23 @@ struct stat64 __DARWIN_STRUCT_STAT64;
</span>  * values of timestamps.  Since sub-second values are not actually supported
  * in this OS version, the fix is simply to add wrappers that clear all
  * tv_nsec values in the results.
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * We arrange to pass through the result of the underlying *stat*() call,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * for convenience.  We only apply the fix in the success case.
</span>  */
 
 /* Clear all tv_nsec values in the structure */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-static void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-fix_stat(struct stat *buf)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+static __inline__ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fix_stat(int result, struct stat *buf)
</span> {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (MPLS_SLOWPATH(result)) return result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>   buf->st_atimespec.tv_nsec = 0;
   buf->st_mtimespec.tv_nsec = 0;
   buf->st_ctimespec.tv_nsec = 0;
   /* Note that the non-ino64 version has no birthtime. */
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return 0;
</span> }
 
 /* Now all the wrapper functions */
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -80,34 +87,22 @@ fix_stat(struct stat *buf)
</span> int
 stat(const char *path, struct stat *buf)
 {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  int ret;
</span>   GET_OS_FUNC(stat)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  ret = (*os_stat)(path, buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (!ret) fix_stat(buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return fix_stat((*os_stat)(path, buf), buf);
</span> }
 
 int
 lstat(const char *path, struct stat *buf)
 {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  int ret;
</span>   GET_OS_FUNC(lstat)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  ret = (*os_lstat)(path, buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (!ret) fix_stat(buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return fix_stat((*os_lstat)(path, buf), buf);
</span> }
 
 int
 fstat(int fildes, struct stat *buf)
 {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  int ret;
</span>   GET_OS_FUNC(fstat)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  ret = (*os_fstat)(fildes, buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (!ret) fix_stat(buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return fix_stat((*os_fstat)(fildes, buf), buf);
</span> }
 
 /*
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -118,34 +113,22 @@ fstat(int fildes, struct stat *buf)
</span> int
 statx_np(const char *path, struct stat *buf, filesec_t fsec)
 {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  int ret;
</span>   GET_OS_FUNC(statx_np)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  ret = (*os_statx_np)(path, buf, fsec);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (!ret) fix_stat(buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return fix_stat((*os_statx_np)(path, buf, fsec), buf);
</span> }
 
 int
 lstatx_np(const char *path, struct stat *buf, filesec_t fsec)
 {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  int ret;
</span>   GET_OS_FUNC(lstatx_np)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  ret = (*os_lstatx_np)(path, buf, fsec);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (!ret) fix_stat(buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return fix_stat((*os_lstatx_np)(path, buf, fsec), buf);
</span> }
 
 int
 fstatx_np(int fildes, struct stat *buf, filesec_t fsec)
 {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  int ret;
</span>   GET_OS_FUNC(fstatx_np)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  ret = (*os_fstatx_np)(fildes, buf, fsec);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  if (!ret) fix_stat(buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return fix_stat((*os_fstatx_np)(fildes, buf, fsec), buf);
</span> }
 
 #endif /* __MPLS_LIB_FIX_TIGER_PPC64__ */
</pre><pre style='margin:0'>

</pre>