+2024-05-18 Bruno Haible <bruno@clisp.org>
+
+ mkfifoat: Work around a macOS 14 bug.
+ * m4/mkfifoat.m4 (gl_FUNC_MKFIFOAT): Also test the case of a dangling
+ symlink.
+ * doc/posix-functions/mkfifoat.texi: Mention the macOS bug.
+
2024-05-18 Collin Funk <collin.funk1@gmail.com>
dup3: Fix behavior for equal file descriptors on NetBSD.
This function does not fail when the file name argument ends in a slash
and (without the slash) names a nonexistent file, on some platforms:
AIX 7.2.
+@item
+This function does not fail when the file name argument ends in a slash
+and (without the slash) names a symbolic link, on some platforms:
+macOS 14.
@end itemize
Portability problems not fixed by Gnulib:
-# serial 10
+# serial 11
# See if we need to provide mkfifoat/mknodat replacement.
-dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2024 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
gl_CHECK_FUNCS_ANDROID_MACOS([mknodat], [[#include <sys/stat.h>]])
gl_CHECK_FUNCS_ANDROID_MACOS([mkfifoat], [[#include <sys/stat.h>]])
if test $ac_cv_func_mkfifoat = yes; then
- dnl Check for AIX 7.2 bug with trailing slash.
+ dnl Check for AIX 7.2 bug and macOS 14 bugs with trailing slash.
AC_CACHE_CHECK([whether mkfifoat rejects trailing slashes],
[gl_cv_func_mkfifoat_works],
[rm -f conftest.tmp
[AC_LANG_PROGRAM(
[[#include <fcntl.h>
#include <sys/stat.h>
+ #include <unistd.h>
]],
[[int result = 0;
+ /* This test fails on AIX 7.2. */
if (!mkfifoat (AT_FDCWD, "conftest.tmp/", 0600))
result |= 1;
+ /* This test fails on macOS 14. */
+ if (!symlink ("conftest.fifo", "conftest.tmp")
+ && !mkfifoat (AT_FDCWD, "conftest.tmp/", 0600))
+ result |= 2;
return result;
]])
],
linux-* | linux) gl_cv_func_mkfifoat_works="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_mkfifoat_works="guessing yes" ;;
+ # Guess no on macOS systems.
+ darwin*) gl_cv_func_mkfifoat_works="guessing no" ;;
# Guess no on AIX systems.
aix*) gl_cv_func_mkfifoat_works="guessing no" ;;
# If we don't know, obey --enable-cross-guesses.