| From ccf93148aa3587dd98a02e253cdc42a7af14df1e Mon Sep 17 00:00:00 2001 |
| From: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
| 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 <thomas.petazzoni@bootlin.com> |
| --- |
| 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 |
| |