From ccf93148aa3587dd98a02e253cdc42a7af14df1e Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 29 Aug 2020 16:04:15 +0200 Subject: [PATCH] Provide replacement function for strerror_l() strerror_l() is not implemented in some C libraries, such as uClibc, so let's provide a simple replacement function that falls back on strerror(). Signed-off-by: Thomas Petazzoni [Upstream status: https://github.com/storaged-project/libblockdev/pull/701] --- configure.ac | 2 ++ src/plugins/crypto.c | 7 +++++++ src/utils/module.c | 8 ++++++++ 3 files changed, 17 insertions(+) diff --git a/configure.ac b/configure.ac index c2d22c2..36aeb51 100644 --- a/configure.ac +++ b/configure.ac @@ -137,6 +137,8 @@ AC_CHECK_HEADERS([dlfcn.h string.h unistd.h sys/fcntl.h sys/ioctl.h linux/random [LIBBLOCKDEV_SOFT_FAILURE([Header file $ac_header not found.])], []) +AC_CHECK_FUNCS([strerror_l]) + AC_ARG_WITH([bcache], AS_HELP_STRING([--with-bcache], [support bcache @<:@default=yes@:>@]), [], diff --git a/src/plugins/crypto.c b/src/plugins/crypto.c index f4a2e8f..c1bd7b5 100644 --- a/src/plugins/crypto.c +++ b/src/plugins/crypto.c @@ -52,6 +52,13 @@ #define UNUSED __attribute__((unused)) +#if !defined(HAVE_STRERROR_L) +static char *strerror_l(int errnum, locale_t locale UNUSED) +{ + return strerror(errnum); +} +#endif + /** * SECTION: crypto * @short_description: plugin for operations with encrypted devices diff --git a/src/utils/module.c b/src/utils/module.c index 9750e24..086bec0 100644 --- a/src/utils/module.c +++ b/src/utils/module.c @@ -27,6 +27,14 @@ #include "module.h" +#define UNUSED __attribute__((unused)) + +#if !defined(HAVE_STRERROR_L) +static char *strerror_l(int errnum, locale_t locale UNUSED) +{ + return strerror(errnum); +} +#endif /** * bd_utils_module_error_quark: (skip) -- 2.26.2