summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libc-internal.h8
-rw-r--r--libc/string/__glibc_strerror_r.c7
-rw-r--r--libc/string/__xpg_strerror_r.c9
3 files changed, 19 insertions, 5 deletions
diff --git a/include/libc-internal.h b/include/libc-internal.h
index dfd1dfc55..74c35422b 100644
--- a/include/libc-internal.h
+++ b/include/libc-internal.h
@@ -44,12 +44,12 @@
# include <stddef.h>
/* sources are built w/ _GNU_SOURCE, this gets undefined */
-#ifdef __USE_GNU
-extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen);
-libc_hidden_proto(__xpg_strerror_r)
-#else
+#if defined __USE_XOPEN2K && !defined __USE_GNU
extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen);
libc_hidden_proto(__glibc_strerror_r)
+#else
+extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen);
+libc_hidden_proto(__xpg_strerror_r)
#endif
/* #include <pthread.h> */
diff --git a/libc/string/__glibc_strerror_r.c b/libc/string/__glibc_strerror_r.c
index e97e55234..96b881700 100644
--- a/libc/string/__glibc_strerror_r.c
+++ b/libc/string/__glibc_strerror_r.c
@@ -5,9 +5,13 @@
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*/
+/* get rid of REDIRECT */
+#define strerror_r __hide_strerror_r
+
#include <features.h>
#include <string.h>
+#undef strerror_r
char *__glibc_strerror_r(int errnum, char *strerrbuf, size_t buflen)
{
@@ -16,3 +20,6 @@ char *__glibc_strerror_r(int errnum, char *strerrbuf, size_t buflen)
return strerrbuf;
}
libc_hidden_def(__glibc_strerror_r)
+#if !defined __USE_XOPEN2K || defined __USE_GNU
+strong_alias(__glibc_strerror_r,strerror_r)
+#endif
diff --git a/libc/string/__xpg_strerror_r.c b/libc/string/__xpg_strerror_r.c
index 5979b1e37..3e78da1be 100644
--- a/libc/string/__xpg_strerror_r.c
+++ b/libc/string/__xpg_strerror_r.c
@@ -5,11 +5,16 @@
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*/
+/* get rid of REDIRECT */
+#define strerror_r __hide_strerror_r
+
#include <features.h>
#include <errno.h>
#include <string.h>
#include "_syserrmsg.h"
+#undef strerror_r
+
#ifdef __UCLIBC_HAS_ERRNO_MESSAGES__
extern const char _string_syserrmsgs[] attribute_hidden;
@@ -267,4 +272,6 @@ int __xpg_strerror_r(int errnum, char *strerrbuf, size_t buflen)
#endif /* __UCLIBC_HAS_ERRNO_MESSAGES__ */
libc_hidden_def(__xpg_strerror_r)
-strong_alias_untyped(__xpg_strerror_r, strerror_r)
+#if defined __USE_XOPEN2K && !defined __USE_GNU
+strong_alias(__xpg_strerror_r,strerror_r)
+#endif