From 3c8832600592a5086862783e74be04afdfbf4b98 Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Fri, 7 Feb 2025 10:04:37 +0300 Subject: [PATCH] replace: use __xpg_strerror_r if available Forwarded: no In order to avoid linking libreplace, use __xpg_strerror_r instead of rep_strerror_r Gbp-Pq: Name replace-xpg-strerror.patch --- lib/replace/replace.c | 2 +- lib/replace/replace.h | 5 +++++ lib/replace/wscript | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/replace/replace.c b/lib/replace/replace.c index f7f26712..d6b1383c 100644 --- a/lib/replace/replace.c +++ b/lib/replace/replace.c @@ -824,7 +824,7 @@ int rep_strerror_r(int errnum, char *buf, size_t buflen) strncpy(buf, s, buflen); return 0; } -#elif (!defined(STRERROR_R_XSI_NOT_GNU)) +#elif (!defined(STRERROR_R_XSI_NOT_GNU)) && (!defined(HAVE___XPG_STRERROR_R)) #undef strerror_r int rep_strerror_r(int errnum, char *buf, size_t buflen) { diff --git a/lib/replace/replace.h b/lib/replace/replace.h index 3bd89dca..65751ef2 100644 --- a/lib/replace/replace.h +++ b/lib/replace/replace.h @@ -643,9 +643,14 @@ char *rep_get_current_dir_name(void); #endif #if (!defined(HAVE_STRERROR_R) || !defined(STRERROR_R_XSI_NOT_GNU)) +#if defined(HAVE___XPG_STRERROR_R) +extern int __xpg_strerror_r (int, char *, size_t); +# define strerror_r __xpg_strerror_r +#else #define strerror_r rep_strerror_r int rep_strerror_r(int errnum, char *buf, size_t buflen); #endif +#endif #if !defined(HAVE_CLOCK_GETTIME) #define clock_gettime rep_clock_gettime diff --git a/lib/replace/wscript b/lib/replace/wscript index 9c0cb704..58f1f794 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript @@ -494,6 +494,7 @@ def configure(conf): define = 'HAVE_BSD_STRTOLL', ) conf.CHECK_FUNCS('if_nameindex if_nametoindex strerror_r') + conf.CHECK_FUNCS('__xpg_strerror_r') conf.CHECK_FUNCS('syslog') conf.CHECK_FUNCS('gai_strerror get_current_dir_name') conf.CHECK_FUNCS('timegm getifaddrs freeifaddrs mmap setgroups syscall setsid') -- 2.30.2