<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/bf1b6d8d33df0454fb32dd87f060d77dd9d064f9">https://github.com/macports/macports-legacy-support/commit/bf1b6d8d33df0454fb32dd87f060d77dd9d064f9</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit bf1b6d8d33df0454fb32dd87f060d77dd9d064f9
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Tue Dec 31 21:08:25 2024 -0800
<span style='display:block; white-space:pre;color:#404040;'> test_stat: Add tests for *statx_np().
</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 10.5+ platforms.
</span><span style='display:block; white-space:pre;color:#404040;'> Tests fail on 10.4 without new addition, and pass with it.
</span>---
test/test_stat.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 76 insertions(+), 1 deletion(-)
<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 a4a9e9e..ea83366 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;'>@@ -218,6 +218,7 @@ main(int argc, char *argv[])
</span> {
int verbose = 0;
FILE *fp; int fd;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ filesec_t fsec;
</span>
if (argc > 1 && !strcmp(argv[1], "-v")) verbose = 1;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -359,7 +360,7 @@ main(int argc, char *argv[])
</span> /*
* The fstatat64 function is not expected to be accessed directly (though many
* system libraries provide it as a convenience synonym for fstatat$INODE64),
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * so no SDK provide a prototype for it. We do so here.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * so no SDK provides a prototype for it. We do so here.
</span> */
extern int fstatat64(int fd, const char *path,
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -417,6 +418,80 @@ main(int argc, char *argv[])
</span>
(void) fclose(fp);
<span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Test the (undocumented) extended *statx_np() functions */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* We need to supply a filesec_t, or the functions fall back to non-"x". */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (verbose) printf(" allocating a 'filesec_t' for *statx() tests\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fsec = filesec_init();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ assert(fsec && "filesec_init() failed");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (verbose) printf(" testing 'statx_np'\n");
</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 = statx_np(source, &stat_buf.s.s, fsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (check_err("statx_np")) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ assert(S_ISREG(get_mode(0)) && "statx_np 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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (verbose) printf(" testing 'statx_np' of link\n");
</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 = statx_np(source_link, &stat_buf.s.s, fsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (check_err("statx_np of link")) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ assert(S_ISREG(get_mode(0)) && "statx_np of link 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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (verbose) printf(" testing 'lstatx_np'\n");
</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 = lstatx_np(source_link, &stat_buf.s.s, fsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (check_err("lstatx_np")) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ assert(S_ISLNK(get_mode(0)) && "lstatx_np expected symlink");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ check_copy(0, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MPLS_HAVE_STAT64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (verbose) printf(" testing 'statx64_np'\n");
</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 = statx64_np(source, &stat_buf.s64.s, fsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (check_err("statx64_np")) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ assert(S_ISREG(get_mode(1)) && "statx64_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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (verbose) printf(" testing 'statx64_np' of link\n");
</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 = statx64_np(source_link, &stat_buf.s64.s, fsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (check_err("statx64_np of link")) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ assert(S_ISREG(get_mode(1)) && "statx64_np of link 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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (verbose) printf(" testing 'lstatx64_np'\n");
</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 = lstatx64_np(source_link, &stat_buf.s64.s, fsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (check_err("lstatx64_np")) return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ assert(S_ISLNK(get_mode(1)) && "lstatx64_np expected symlink");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ check_copy(1, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</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><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MPLS_HAVE_STAT64 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ filesec_free(fsec);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> printf("%s succeeded.\n", basename(argv[0]));
return 0;
}
</pre><pre style='margin:0'>
</pre>