hc
2024-03-25 edb30157bad0c0001c32b854271ace01d3b9a16a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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