Thanks, I attempted to fix that by installing the attached.
It attempts to be simple rather than catering to fancy warnings even in
the situation you mention. I wish I didn't have to remember the
complicated rules for declaring Gnulib functions, and to some extent
this simplistic patch is a perhaps-vain attempt to cut down on that
complexity.From 48384fd1c637a2f683b634a4c3522eccc1b0dfe9 Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Wed, 14 Aug 2024 20:04:42 -0700
Subject: [PATCH] verror: allow library name-spacing of verror
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Problem reported by Bruno Haible in:
https://lists.gnu.org/r/bug-gnulib/2024-08/msg00085.html
* lib/error.c (verror, verror_at_line) [!_LIBC]: #undef only if
the corresponding GNULIB_defined_... macros are defined.
* lib/error.in.h (verror, verror_with_line):
Don't define as macros if they are already defined, or if
_GL_NO_INLINE_ERROR is defined. This may lose some niceties with GCC
warnings, but the code’s valid.
---
lib/error.c | 8 ++++++--
lib/error.in.h | 18 ++++++++++++++----
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/lib/error.c b/lib/error.c
index 843e19304e..837d5e56c6 100644
--- a/lib/error.c
+++ b/lib/error.c
@@ -131,8 +131,12 @@ int strerror_r (int errnum, char *buf, size_t buflen);
# define __strerror_r strerror_r
# endif /* GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r */
-# undef verror
-# undef verror_at_line
+# if GNULIB_defined_verror
+# undef verror
+# endif
+# if GNULIB_defined_verror_at_line
+# undef verror_at_line
+# endif
#endif /* not _LIBC */
#if !_LIBC
diff --git a/lib/error.in.h b/lib/error.in.h
index 82022a9362..4804c8c465 100644
--- a/lib/error.in.h
+++ b/lib/error.in.h
@@ -213,8 +213,13 @@ extern void verror (int __status, int __errnum, const char *__format,
va_list __args)
_GL_ATTRIBUTE_COLD
_GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 3, 0));
-#define verror(status, ...) \
- __gl_error_call (verror, status, __VA_ARGS__)
+#ifndef _GL_NO_INLINE_ERROR
+# ifndef verror
+# define verror(status, ...) \
+ __gl_error_call (verror, status, __VA_ARGS__)
+# define GNULIB_defined_verror 1
+# endif
+#endif
/* Print a message with 'vfprintf (stderr, FORMAT, ARGS)';
if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
@@ -228,8 +233,13 @@ extern void verror_at_line (int __status, int __errnum, const char *__fname,
va_list __args)
_GL_ATTRIBUTE_COLD
_GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF_STANDARD, 5, 0));
-#define verror_at_line(status, ...) \
- __gl_error_call (verror_at_line, status, __VA_ARGS__)
+#ifdef _GL_NO_INLINE_ERROR
+# ifndef verror_at_line
+# define verror_at_line(status, ...) \
+ __gl_error_call (verror_at_line, status, __VA_ARGS__)
+# define GNULIB_defined_verror_at_line 1
+# endif
+#endif
/* If NULL, error will flush stdout, then print on stderr the program
name, a colon and a space. Otherwise, error will call this
--
2.43.0