summaryrefslogtreecommitdiffstats
path: root/libc/string/__xpg_strerror_r.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/string/__xpg_strerror_r.c')
-rw-r--r--libc/string/__xpg_strerror_r.c41
1 files changed, 21 insertions, 20 deletions
diff --git a/libc/string/__xpg_strerror_r.c b/libc/string/__xpg_strerror_r.c
index 93dffc732..d146d35ac 100644
--- a/libc/string/__xpg_strerror_r.c
+++ b/libc/string/__xpg_strerror_r.c
@@ -1,19 +1,23 @@
/*
* Copyright (C) 2002 Manuel Novoa III
- * Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
*
* Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
*/
-#define _GNU_SOURCE
#include <features.h>
#include <errno.h>
+#include <string.h>
#include <bits/uClibc_uintmaxtostr.h>
#include "_syserrmsg.h"
+libc_hidden_proto(__xpg_strerror_r)
+libc_hidden_proto(memcpy)
+libc_hidden_proto(strlen)
+
#ifdef __UCLIBC_HAS_ERRNO_MESSAGES__
-extern const char _string_syserrmsgs[];
+extern const char _string_syserrmsgs[] attribute_hidden;
#if defined(__alpha__) || defined(__mips__) || defined(__sparc__)
@@ -140,22 +144,21 @@ static const unsigned char estridx[] = {
ENAVAIL,
EISNAM,
EREMOTEIO,
-#ifdef __mips__
- 0, /* mips has an outrageous value for this... */
+#if EDQUOT > 200 /* mips has an outrageous value for this... */
+ 0,
#else
EDQUOT,
#endif
ENOMEDIUM,
EMEDIUMTYPE,
-#if defined(__mips__) || defined(__sparc__)
+#if EDEADLOCK != EDEADLK
EDEADLOCK,
#endif
};
#endif
-/* __xpg_strerror_r is used in header */
-int attribute_hidden __xpg_strerror_r_internal(int errnum, char *strerrbuf, size_t buflen)
+int __xpg_strerror_r(int errnum, char *strerrbuf, size_t buflen)
{
register char *s;
int i, retval;
@@ -177,11 +180,10 @@ int attribute_hidden __xpg_strerror_r_internal(int errnum, char *strerrbuf, size
}
}
i = INT_MAX; /* Failed, but may need to check mips special case. */
-#ifdef __mips__
- if (errnum == EDQUOT) { /* Deal with large EDQUOT value on mips */
+#if EDQUOT > 200 /* Deal with large EDQUOT value on mips */
+ if (errnum == EDQUOT)
i = 122;
- }
-#endif /* __mips__ */
+#endif
GOT_ESTRIDX:
#else
/* No errno to string index translation needed. */
@@ -207,20 +209,20 @@ int attribute_hidden __xpg_strerror_r_internal(int errnum, char *strerrbuf, size
#endif /* __UCLIBC_HAS_ERRNO_MESSAGES__ */
s = _int10tostr(buf+sizeof(buf)-1, errnum) - sizeof(unknown);
- __memcpy(s, unknown, sizeof(unknown));
+ memcpy(s, unknown, sizeof(unknown));
GOT_MESG:
if (!strerrbuf) { /* SUSv3 */
buflen = 0;
}
- i = __strlen(s) + 1;
+ i = strlen(s) + 1;
if (i > buflen) {
i = buflen;
retval = ERANGE;
}
if (i) {
- __memcpy(strerrbuf, s, i);
+ memcpy(strerrbuf, s, i);
strerrbuf[i-1] = 0; /* In case buf was too small. */
}
@@ -233,7 +235,7 @@ int attribute_hidden __xpg_strerror_r_internal(int errnum, char *strerrbuf, size
#else /* __UCLIBC_HAS_ERRNO_MESSAGES__ */
-int attribute_hidden __xpg_strerror_r_internal(int errnum, char *strerrbuf, size_t buflen)
+int __xpg_strerror_r(int errnum, char *strerrbuf, size_t buflen)
{
register char *s;
int i, retval;
@@ -243,7 +245,7 @@ int attribute_hidden __xpg_strerror_r_internal(int errnum, char *strerrbuf, size
};
s = _int10tostr(buf+sizeof(buf)-1, errnum) - sizeof(unknown);
- __memcpy(s, unknown, sizeof(unknown));
+ memcpy(s, unknown, sizeof(unknown));
if (!strerrbuf) { /* SUSv3 */
buflen = 0;
@@ -259,7 +261,7 @@ int attribute_hidden __xpg_strerror_r_internal(int errnum, char *strerrbuf, size
}
if (i) {
- __memcpy(strerrbuf, s, i);
+ memcpy(strerrbuf, s, i);
strerrbuf[i-1] = 0; /* In case buf was too small. */
}
@@ -269,5 +271,4 @@ int attribute_hidden __xpg_strerror_r_internal(int errnum, char *strerrbuf, size
}
#endif /* __UCLIBC_HAS_ERRNO_MESSAGES__ */
-
-strong_alias(__xpg_strerror_r_internal,__xpg_strerror_r)
+libc_hidden_def(__xpg_strerror_r)