summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAlexey Brodkin <Alexey.Brodkin@synopsys.com>2017-03-10 14:44:22 (GMT)
committerThomas Haller <thaller@redhat.com>2017-03-12 13:42:42 (GMT)
commite15966ac7f3b43df2acf869f98089762807d0568 (patch)
tree2a7048a279d7f691854a23ff8a4016ab991d60c6 /lib
parentbcdf874adb1f1895342c31eac784b8cca96a5a6b (diff)
downloadlibnl-e15966ac7f3b43df2acf869f98089762807d0568.zip
libnl-e15966ac7f3b43df2acf869f98089762807d0568.tar.gz
libnl-e15966ac7f3b43df2acf869f98089762807d0568.tar.bz2
lib: escape usage of strerror_l() if it doesn't exist in libc
uClibc doesn't implement strerror_l() and thus libnl starting from 3.2.29 couldn't be compiled with it any longer. To work-around that problem we'll just do a check on strerror_l() availability during configuration and if it's not there just fall back to locale-less strerror(). See-also: 6c2d111177e91184073c44f83d4a6182aaba06d7 http://lists.infradead.org/pipermail/libnl/2017-March/002301.html Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Thomas Haller <thaller@redhat.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/utils.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/utils.c b/lib/utils.c
index fb350d1..06273c5 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -30,7 +30,9 @@
#include <netlink/utils.h>
#include <linux/socket.h>
#include <stdlib.h> /* exit() */
+#ifdef HAVE_STRERROR_L
#include <locale.h>
+#endif
/**
* Global variable indicating the desired level of debugging output.
@@ -123,9 +125,10 @@ int __nl_read_num_str_file(const char *path, int (*cb)(long, const char *))
const char *nl_strerror_l(int err)
{
+ const char *buf;
+#ifdef HAVE_STRERROR_L
int errno_save = errno;
locale_t loc = newlocale(LC_MESSAGES_MASK, "", (locale_t)0);
- const char *buf;
if (loc == (locale_t)0) {
if (errno == ENOENT)
@@ -140,6 +143,9 @@ const char *nl_strerror_l(int err)
}
errno = errno_save;
+#else
+ buf = strerror(err);
+#endif
return buf;
}
/** @endcond */