From e20efe7ce0cc187e5ad81b738a8bef33732cb6f0 Mon Sep 17 00:00:00 2001 From: Collin Funk Date: Sat, 18 Jan 2025 21:06:49 -0800 Subject: [PATCH] renameatu: Work around a GNU/Hurd bug. * m4/renameat.m4 (gl_FUNC_RENAMEAT): Check if renameat2 handles trailing slashes. --- ChangeLog | 6 ++++++ m4/renameat.m4 | 21 ++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5675ef35e9..862f154fa8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2025-01-18 Collin Funk + + renameatu: Work around a GNU/Hurd bug. + * m4/renameat.m4 (gl_FUNC_RENAMEAT): Check if renameat2 handles trailing + slashes. + 2025-01-17 Paul Eggert alignasof: port to IBM XL C V16.1 diff --git a/m4/renameat.m4 b/m4/renameat.m4 index adf1f6bdd0..f88b831883 100644 --- a/m4/renameat.m4 +++ b/m4/renameat.m4 @@ -1,6 +1,6 @@ # renameat.m4 -# serial 5 -dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. +# serial 6 +dnl Copyright (C) 2009-2025 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. @@ -28,17 +28,25 @@ AC_DEFUN([gl_FUNC_RENAMEAT], if test $ac_cv_func_renameat2 = yes; then AC_CACHE_CHECK([whether renameat2 works], [gl_cv_func_renameat2_works], - [AC_RUN_IFELSE( + [rm -rf conftest.a conftest.b + touch conftest.a + AC_RUN_IFELSE( [AC_LANG_SOURCE([[ + #include #include #include int main () { + int result = 0; /* This test fails on Cygwin 3.4.6. */ if (renameat2 (AT_FDCWD, "conftest.c", AT_FDCWD, "conftest.c", RENAME_NOREPLACE) == 0) - return 1; - return 0; + result |= 1; + /* This test fails on GNU/Hurd. */ + if (renameat2 (AT_FDCWD, "conftest.a", AT_FDCWD, "conftest.b/", 0) + == 0) + result |= 2; + return result; } ]])], [gl_cv_func_renameat2_works=yes], @@ -46,12 +54,15 @@ AC_DEFUN([gl_FUNC_RENAMEAT], [case "$host_os" in # Guess yes on Linux. linux*) gl_cv_func_renameat2_works="guessing yes" ;; + # Guess no on GNU/Hurd. + gnu*) gl_cv_func_renameat2_works="guessing no" ;; # Guess no on Cygwin. cygwin*) gl_cv_func_renameat2_works="guessing no" ;; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_renameat2_works="$gl_cross_guess_normal" ;; esac ]) + rm -rf conftest.a conftest.b ]) case "$gl_cv_func_renameat2_works" in *yes) -- 2.39.5