From 7e5c79bcc67d3f45f1d310eefc40f39330008628 Mon Sep 17 00:00:00 2001 From: "\"Steven J. Hill\"" Date: Sat, 30 Jul 2005 00:03:07 +0000 Subject: The newly added __glibc_strerror_r function is probably fine, but the uClibc did not even compile or link without errors. This fixes that up. Please test more thoroughly next time. --- include/string.h | 61 +++++++++++++++++++++++--------------------------------- 1 file changed, 25 insertions(+), 36 deletions(-) (limited to 'include') diff --git a/include/string.h b/include/string.h index 224bb8621..59f0ac481 100644 --- a/include/string.h +++ b/include/string.h @@ -122,13 +122,13 @@ __END_NAMESPACE_STD extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) __THROW __attribute_pure__ __nonnull ((1, 2, 3)); extern int __strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) - __THROW __attribute_pure__ __nonnull ((1, 2, 3)); + __THROW __attribute_pure__; /* Put a transformation of SRC into no more than N bytes of DEST. */ extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, __locale_t __l) __THROW __nonnull ((2, 4)); extern size_t __strxfrm_l (char *__dest, __const char *__src, size_t __n, - __locale_t __l) __THROW __nonnull ((2, 4)); + __locale_t __l) __THROW; #endif #endif /* __UCLIBC_HAS_XLOCALE__ */ @@ -263,41 +263,33 @@ __BEGIN_NAMESPACE_STD /* Return a string describing the meaning of the `errno' code in ERRNUM. */ extern char *strerror (int __errnum) __THROW; __END_NAMESPACE_STD - -extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen) - __THROW __nonnull ((2)); -extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen) - __THROW __nonnull ((2)); - #if defined __USE_XOPEN2K || defined __USE_MISC -/* Reentrant version of `strerror'. - There are 2 flavors of `strerror_r', GNU which returns the string - and may or may not use the supplied temporary buffer and POSIX one - which fills the string into the buffer. - To use the POSIX version, -D_XOPEN_SOURCE=600 or -D_POSIX_C_SOURCE=200112L - without -D_GNU_SOURCE is needed, otherwise the GNU version is - preferred. */ -# if defined __USE_XOPEN2K && !defined __USE_GNU -/* Fill BUF with a string describing the meaning of the `errno' code in - ERRNUM. */ -# ifdef __REDIRECT_NTH -extern int __REDIRECT_NTH (strerror_r, - (int __errnum, char *__buf, size_t __buflen), - __xpg_strerror_r) __nonnull ((2)); +/* Reentrant version of `strerror'. If a temporary buffer is required, at + most BUFLEN bytes of BUF will be used. */ +/* extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW; */ + +/* uClibc Note: glibc's strerror_r is different from that specified in SUSv3. + * So we try to compensate based on feature macros. */ +extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW; +extern int _susv3_strerror_r (int __errnum, char *__buf, size_t buflen) __THROW; + +# if defined(__USE_XOPEN2K) && !defined(__USE_GNU) +# ifdef __REDIRECT +extern int __REDIRECT (strerror_r, + (int __errnum, char *__buf, size_t buflen) __THROW, + _susv3_strerror_r); # else # define strerror_r __xpg_strerror_r # endif # else -/* If a temporary buffer is required, at most BUFLEN bytes of BUF will be - used. */ -# ifdef __REDIRECT_NTH -extern char * __REDIRECT_NTH (strerror_r, - (int __errnum, char *__buf, size_t __buflen), - __glibc_strerror_r) __nonnull ((2)); +# ifdef __REDIRECT +extern char *__REDIRECT (strerror_r, + (int __errnum, char *__buf, size_t buflen) __THROW, + __glibc_strerror_r); # else # define strerror_r __glibc_strerror_r # endif -# endif +# endif /* defined(__USE_XOPEN2K) && !defined(__USE_GNU) */ #endif /* We define this function always since `bzero' is sometimes needed when @@ -355,15 +347,14 @@ extern int strcasecmp_l (__const char *__s1, __const char *__s2, __locale_t __loc) __THROW __attribute_pure__ __nonnull ((1, 2, 3)); extern int __strcasecmp_l (__const char *__s1, __const char *__s2, - __locale_t __loc) - __THROW __attribute_pure__ __nonnull ((1, 2, 3)); + __locale_t __loc) __THROW __attribute_pure__; extern int strncasecmp_l (__const char *__s1, __const char *__s2, size_t __n, __locale_t __loc) __THROW __attribute_pure__ __nonnull ((1, 2, 4)); extern int __strncasecmp_l (__const char *__s1, __const char *__s2, size_t __n, __locale_t __loc) - __THROW __attribute_pure__ __nonnull ((1, 2, 4)); + __THROW __attribute_pure__; #endif #endif /* __UCLIBC_HAS_XLOCALE__ */ @@ -398,13 +389,11 @@ extern char *stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); -#if 0 /* uClibc does not support strfry or memfrob. */ /* Sautee STRING briskly. */ extern char *strfry (char *__string) __THROW __nonnull ((1)); /* Frobnicate N bytes of S. */ extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1)); -#endif # ifndef basename /* Return the file name within directory of FILENAME. We don't @@ -419,9 +408,9 @@ extern char *basename (__const char *__filename) __THROW __nonnull ((1)); #ifdef __USE_BSD /* Two OpenBSD extension functions. */ extern size_t strlcat(char *__restrict dst, const char *__restrict src, - size_t n) __THROW __nonnull ((1, 2)); + size_t n) __THROW; extern size_t strlcpy(char *__restrict dst, const char *__restrict src, - size_t n) __THROW __nonnull ((1, 2)); + size_t n) __THROW; #endif __END_DECLS -- cgit v1.2.3