]> Savannah Git Hosting - gnulib.git/commitdiff
mkfifoat: Work around a macOS 14 bug.
authorBruno Haible <bruno@clisp.org>
Sun, 19 May 2024 09:55:13 +0000 (11:55 +0200)
committerBruno Haible <bruno@clisp.org>
Wed, 22 May 2024 09:00:25 +0000 (11:00 +0200)
* m4/mkfifoat.m4 (gl_FUNC_MKFIFOAT): Also test the case of a dangling
symlink.
* doc/posix-functions/mkfifoat.texi: Mention the macOS bug.

ChangeLog
doc/posix-functions/mkfifoat.texi
m4/mkfifoat.m4

index c09ebb954e7023c2903bc8a69c185b139ff702c2..71398561c93ae65c70ca35043c32402f65684181 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+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.
index 97d04af38d44849375ab760d39d2c00eb412cd1c..a811e45b824648dc640180fc53e285a194d3b753 100644 (file)
@@ -16,6 +16,10 @@ But the replacement function is not safe to be used in libraries and is not mult
 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:
index 26540506f7962732103739cec1a0542c3f2f9b3d..7f685d761bc254e1c07ecd6b92492c48a735eca7 100644 (file)
@@ -1,7 +1,7 @@
-# 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.
@@ -21,7 +21,7 @@ AC_DEFUN([gl_FUNC_MKFIFOAT],
   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
@@ -29,10 +29,16 @@ AC_DEFUN([gl_FUNC_MKFIFOAT],
          [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;
             ]])
          ],
@@ -43,6 +49,8 @@ AC_DEFUN([gl_FUNC_MKFIFOAT],
             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.