Loading...
--- Libc/Libc-498/string/FreeBSD/strerror.c.patch
+++ Libc/Libc-763.12/string/FreeBSD/strerror.c.patch
@@ -1,8 +1,8 @@
---- strerror.c.orig 2004-11-25 11:38:47.000000000 -0800
-+++ strerror.c 2005-04-30 01:26:56.000000000 -0700
-@@ -50,12 +50,13 @@
+--- strerror.c.orig 2010-10-07 16:06:39.000000000 -0700
++++ strerror.c 2010-10-07 16:17:59.000000000 -0700
+@@ -52,12 +52,13 @@ __FBSDID("$FreeBSD: src/lib/libc/string/
*/
- #define EBUFSIZE (20 + sizeof(UPREFIX))
+ #define EBUFSIZE (20 + 2 + sizeof(UPREFIX))
+#ifndef BUILDING_VARIANT
/*
@@ -10,25 +10,26 @@
* statically linked binaries.
*/
-static void
--errstr(int num, char *buf, size_t len)
+-errstr(int num, char *uprefix, char *buf, size_t len)
+__private_extern__ void
-+__errstr(int num, char *buf, size_t len)
++__errstr(int num, char *uprefix, char *buf, size_t len)
{
char *t;
unsigned int uerr;
-@@ -77,14 +78,17 @@
- strerror_r(int errnum, char *strerrbuf, size_t buflen)
- {
+@@ -87,8 +88,8 @@ strerror_r(int errnum, char *strerrbuf,
+ catd = catopen("libc", NL_CAT_LOCALE);
+ #endif
- if (errnum < 1 || errnum >= sys_nerr) {
-- errstr(errnum, strerrbuf, buflen);
+- errstr(errnum,
+ if (errnum < 0 || errnum >= sys_nerr) {
-+ __errstr(errnum, strerrbuf, buflen);
- return (EINVAL);
- }
- if (strlcpy(strerrbuf, sys_errlist[errnum], buflen) >= buflen)
- return (ERANGE);
- return (0);
++ __errstr(errnum,
+ #if defined(NLS)
+ catgets(catd, 1, 0xffff, UPREFIX),
+ #else
+@@ -114,13 +115,20 @@ strerror_r(int errnum, char *strerrbuf,
+
+ return (retval);
}
+#else /* BUILDING_VARIANT */
+__private_extern__ void __errstr(int, char *, size_t);
@@ -36,14 +37,14 @@
char *
strerror(int num)
-@@ -93,7 +97,9 @@
+ {
+ static char ebuf[NL_TEXTMAX];
- if (num > 0 && num < sys_nerr)
- return ((char *)sys_errlist[num]);
+#if !__DARWIN_UNIX03
+ if (strerror_r(num, ebuf, sizeof(ebuf)) != 0)
errno = EINVAL;
-- errstr(num, ebuf, sizeof(ebuf));
-+#endif /* !__DARWIN_UNIX03 */
-+ __errstr(num, ebuf, sizeof(ebuf));
++#else
++ (void)strerror_r(num, ebuf, sizeof(ebuf));
++#endif
return (ebuf);
}